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

Dan*_*ner 66 git git-pull

是否存在这样的事情,git pull --dry-run以便在它弄乱我的工作树之前看看它们将如何合并?

现在我在做:

git fetch origin && git merge --no-commit --no-ff
Run Code Online (Sandbox Code Playgroud)

我没有在man页面中看到与它相关的'git-pull'.

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

ryn*_*rtn 53

如果合并失败,我一直依靠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
Run Code Online (Sandbox Code Playgroud)

如果事情没有按计划进行,请查看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}
Run Code Online (Sandbox Code Playgroud)


Gay*_*DDS 30

您需要先获取以更新本地origin/master

git fetch origin
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

git diff --name-only origin/master
Run Code Online (Sandbox Code Playgroud)

将列出已更改的文件.

git diff origin/master directory_foo/file_bar.m
Run Code Online (Sandbox Code Playgroud)

将逐行列出文件directory_foo/file_bar.m的行diff.

  • 感谢您提供 --name-only 标志的提示 (2认同)

gcb*_*son 17

您可以通过从当前的分支创建一个新的分离分支并在git pull那里完成所需的效果.如果您对结果不满意,原始分支就完好无损.

  • 不,git stash完全不同。这会将您的本地更改放到其他地方。 (3认同)

war*_*den 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
Run Code Online (Sandbox Code Playgroud)

  • 为什么选择downvote?我做了一个`git diff this-answer/top-answer`,没有发现重大错误.当你提交downvote时请考虑留下评论:`git commit -m"你为什么要downvote,等等等等等等." (3认同)

小智 6

从 v2.27.0 开始有一个试运行标志