2011-01-09 46 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。您可能需要調整您的配置以避免合併提交。