是否有一个“问题”;git pull——干运行;Git中的选项?

是否有一个“问题”;git pull——干运行;Git中的选项?,git,git-pull,Git,Git Pull,是否有一个像“git pull--dry run”这样的东西,在它弄乱我的工作树之前,看看如何合并这些东西 现在我正在做: git fetch origin && git merge --no-commit --no-ff 我在手册页中没有看到任何与“git pull”相关的内容 为了澄清这一点,我只需要在部署的Ant脚本中使用它,以查看在执行git pull时是否存在冲突,然后退出构建,部署失败并保持目录树与以前的目录树相同git pull您可以通过从当前分支创建一个新的丢弃

是否有一个像“git pull--dry run”这样的东西,在它弄乱我的工作树之前,看看如何合并这些东西

现在我正在做:

git fetch origin && git merge --no-commit --no-ff
我在手册页中没有看到任何与“git pull”相关的内容


为了澄清这一点,我只需要在部署的Ant脚本中使用它,以查看在执行git pull时是否存在冲突,然后退出构建,部署失败并保持目录树与以前的目录树相同
git pull

您可以通过从当前分支创建一个新的丢弃分支并在那里执行
git pull
来获得想要的效果。如果您对结果不满意,那么原始分支是完整的。

如果合并失败,我总是依赖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}

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

git fetch origin
然后你可以做:

git diff --name-only origin/master
将列出已更改的文件

git diff origin/master directory_foo/file_bar.m

将列出文件目录\u foo/file\u bar.m.的逐行差异。

因为拉拽意味着合并,如果脚本检测到任何冲突并且合并失败,我会运行
git merge--abort

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

# 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

这将转到
~/.gitconfig
文件:

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

自v2.27.0以来,存在一个

为什么会有冲突?您的部署脚本是否在进行本地提交?如果是,原因是什么?在查看这些响应时,我认为我们忽略了一个主要区别,即分布式源代码管理—拉/取将占用整个存储库,而不仅仅是一个分支。您必须指定如下几个答案所示的各个分支。@CBBailey。。。当许多人在多个分支(例如不同的版本和功能)上工作时,通常会有重叠。事先检查可以更容易地计划合并和以后的请求。与SVN等效的命令是:
SVN-q-u
。如果您对远程分支执行此操作,请使用--name-only标记感谢您的提示(首先使用
git-fetch-origin分支
)这将是
git merge--abort origin/branch
对吗?您也可以尝试这样做,因为拉取在某种程度上类似于合并
致命:不明确的参数'HEAD..origin/branch':未知的修订或路径不在工作树中。
@Green try git reset--hard HEAD@{2}@格林可能是这样的:
git diff HEAD..origin/master
你的意思是
git stash
?不,git stash完全不同。这就把你的地方变化放到了别处。为什么要投否决票?我对这个答案/最上面的答案进行了
git比较,没有发现明显的错误。请考虑在下投票时留下评论:<代码> GIT提交-M“为什么你会投票,无话可说”/代码>对吧!自20年1月6日起,有一个用于拉动(但不用于合并)的干运行标志