2011-01-09 31 views
0

有没有办法将远程更改拉到索引,而不是直接创建一个新的提交?Git拉到索引

理想情况下,它将像应用远程内容的修补程序,但不修改您的本地历史记录。

感谢

回答

0

git fetch将获取从遥控器上的变化,但不会与你master分支合并。它将在远程跟踪分支中。然后您可以手动合并它。 A git pull一起执行这两个操作。

1

那么问题就出现在你接下来的远程更改上,从远程的历史中的哪个点生成补丁?这正是合并所要解决的问题,合并提交表明到目前为止,哪个远程版本已经应用到您的本地分支。

话虽如此,如果你git fetchgit merge --no-commit,合并将在您的工作空间(和指数)做,但没有提交,和元数据将在状态,这样,当你做承诺,这将是标记为合并提交。那是你需要的吗?

+0

我怀疑这是OP实际上想要的(合并到索引*和*工作树,但不提交)。请注意,您可以执行`pull --no-commit`;它传递给`merge`。 – Cascabel 2011-01-10 00:40:38

3

我不太确定您的预期工作流程是什么,但您可以在不影响当前分支或索引的情况下获取远程更改。

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的手册页。

0

我一直来到这个页面,并且错过了正确的答案,因为它在评论中。

git-pull --no-commit [email protected]:username/project.git 
0

看看this answer。您可能需要调整您的配置以避免合并提交。