Git中有“git pull --dry-run”选项吗?

时间:2013-06-20 19:42:59

标签: git git-pull

是否有git pull --dry-run这样的东西,看看在弄乱我的工作树之前它们将如何合并?

现在我正在做:

git fetch origin && git merge --no-commit --no-ff

我在手册页中没有看到与它相关的'git-pull'。

为了澄清,我只需要在Ant脚本中进行部署,以查看执行git pull时是否存在冲突,然后退出构建退出,部署失败并使该目录树保持原样git pull

7 个答案:

答案 0 :(得分:51)

如果合并失败,我一直依靠Git的固有能力让我回来。

要估计合并的发生方式,您可以像以下一样开始:

$ git fetch origin branch  # Fetch changes, but don't merge
$ git diff HEAD..origin/branch # Diff your current head to the fetched commit

... personal judgement of potential merge conflicts ...

$ git merge origin/branch # merge with the fetched commit

如果事情没有按计划进行,请查看您的reflog并重置回所需状态:

$ git reflog
...
abc987  HEAD@{0}: merge activity
b58aae8 HEAD@{1}: fetch origin/branch
8f3a362 HEAD@{2}: activity before the fetch
...
$ git reset --hard HEAD{2}

答案 1 :(得分:28)

您需要先获取以更新本地源/主

git fetch origin

然后你可以这样做:

git diff --name-only origin/master

将列出已更改的文件。

git diff origin/master directory_foo/file_bar.m

将逐行列出文件directory_foo / file_bar.m的行差异。

答案 2 :(得分:15)

您可以通过从当前分支创建新的分离分支并在那里执行git pull来获得所需的效果。如果您对结果不满意,原始分支就完好无损。

答案 3 :(得分:8)

# fetch new commits from origin
$ git fetch

# check what are the differences and judge if safe to apply
$ git diff origin/master

# actually merge the fetched commits 
$ git pull

答案 4 :(得分:5)

从 v2.27.0 开始,有一个 dry-run flag

答案 5 :(得分:2)

由于pull意味着合并,如果你的脚本检测到有任何冲突并且合并失败,我将继续运行git merge --abort

答案 6 :(得分:0)

在这个类似的问题中看到我的答案:

How to preview git-pull without doing fetch?

这将转到~/.gitconfig文件:

[alias]
        diffpull=!git fetch && git diff HEAD..@{u}