【发布时间】:2011-06-06 03:04:39
【问题描述】:
有没有办法将远程更改拉到索引而不是直接创建新提交?
理想情况下,它就像应用带有远程内容的补丁,但不修改您的本地历史记录。
谢谢
【问题讨论】:
有没有办法将远程更改拉到索引而不是直接创建新提交?
理想情况下,它就像应用带有远程内容的补丁,但不修改您的本地历史记录。
谢谢
【问题讨论】:
我不太确定您的预期工作流程是什么,但您可以在不影响当前分支或索引的情况下获取远程更改。
git fetch
然后,您可以将获取的更改合并到当前索引中,而无需设置合并提交,但这是一件相当晦涩且不寻常的事情。
git read-tree -m HEAD origin/remote-branch
如果远程分支是您当前 HEAD 的快进,则两树版本是最好的,如果不是,那么三路合并选项可能会更好。
git read-tree -m $(git merge-base HEAD origin/remote-branch) HEAD origin/remote-branch
阅读git read-tree 的手册页,了解有关差异的详细信息。
【讨论】:
问题将是下一次您拉取远程更改,它应该从远程历史的哪个点生成补丁?这正是merging要解决的问题,merge commit表明了到目前为止你的本地分支应用了哪个远程版本。
话虽如此,如果您执行git fetch 和git merge --no-commit,则合并将在您的工作区(和索引)中完成但未提交,并且元数据将处于一种状态,以便在您提交时,它将被标记为合并提交。这是你需要的吗?
【讨论】:
pull --no-commit;它已传递给merge。
git fetch 将从远程获取更改,但不会将其与您的master 分支合并。它将在远程跟踪分支中。然后,您可以手动合并它。 git pull 同时执行这两个操作。
【讨论】:
我一直访问此页面并错过正确答案,因为它在评论中。
git-pull --no-commit git@github.com:username/project.git
【讨论】:
看看this answer。您可能需要调整配置以避免合并提交。
【讨论】: