我想推動幾個單一提交到一個git遠程回購。我跟傑夫的答案在這裏找到這樣做的:git:推送單個提交,重新排序,重複提交
How can I pushing specific commit to a remote, and not the previous commits?
我要推的提交是不是在頭部,所以我必須用重訂先重新排序提交和我使用這些指令可以這樣做:
http://gitready.com/advanced/2009/03/20/reorder-commits-with-rebase.html
基本上我已經做了:
git clone
git commit
git commit
...
git pull
git rebase -i HEAD~3
git push origin <SHA>:master
我的錯誤做這個。所以我開始深入研究這個問題。我發現有重複提交在我的日誌,如果我做第二個的git拉墊底之後,例如:
git clone
git commit
git commit
...
git pull
git log --pretty=format:"%h - %an : %s" // log before rebasing
git rebase -i HEAD~3
git pull
git log --pretty=format:"%h - %an : %s" // log after rebasing
git pull
git log --pretty=format:"%h - %an : %s" // log after rebasing after pulling
所以我張貼了這個問題:
git: Duplicate Commits After Local Rebase Followed by Pull
羅傑的反應有導致我對於這個問題:爲什麼我會在重新綁定和拉取後看到重複的提交?
從以上,重定基之前的日誌是這樣的:
84e4015 - Me : Local Commit 3
0dbe86a - Me : Local Commit 2
d57ba2a - Me : Merge branch 'master' of remote repository
a86ea35 - Me : Local Commit 1 before reordering
2fc4fe7 - Remote User 2 : Remote Commit 2
b7a8656 - Remote User 1 : Remote Commit 1
8ce80fc - Me : Merge branch 'master' of remote repository
和日誌墊底後的樣子:
cf1ff7b - Me : Local Commit 3
cd14463 - Me : Local Commit 2
b9d44fb - Me : Local Commit 1 after reordering
9777c56 - Remote User 2 : Remote Commit 2
a2d7d8b - Remote User 1 : Remote Commit 1
8ce80fc - Me : Merge branch 'master' of remote repository
注意,原來的2款2fc4fe7和b7a8656有新的SHA; 9777c56和a2d7d8b。我相信這是問題的開始。
現在,經過我做的是另混帳拉日誌看起來是這樣的:
e8e1a85 - Me : Merge branch 'master' of remote repository
cf1ff7b - Me : Local Commit 3
cd14463 - Me : Local Commit 2
b9d44fb - Me : Local Commit 1 after reordering
9777c56 - Remote User 2 : Remote Commit 2
a2d7d8b - Remote User 1 : Remote Commit 1
2fc4fe7 - Remote User 2 : Remote Commit 2 // duplicate 2
b7a8656 - Remote User 1 : Remote Commit 1 // duplicate 1
8ce80fc - Me : Merge branch 'master' of remote repository
注意,遠程提交,現在複製,和遠程的原有的SHA承諾,2fc4fe7和b7a8656,已經返回。
在羅傑的迴應中,他說這看起來像是其他人推動git的錯,而且他們正在重新調整已經推送的提交。但我相信這是我本地重新推送推送提交的錯。
這是因爲我重新提交了已經推送到遠程的提交嗎?如果是這樣,我應該怎麼做才能避免這種情況?我需要重新提交我的提交,以便我可以推送一個提交。我應該使用分支系統來做到這一點嗎?如果是這樣,我將如何使用分支來解決這個問題?
[Git提交可能重複後重做在同一分支](http://stackoverflow.com/questions/9264314/git-commits-are-duplicated-in-the-same-branch-after - 回合) – Whymarrh