2013-11-09 30 views
0

我在這裏遇到一種情況。我做了一些承諾掌握分支和移動後這些承諾其他 分支X上使用和如何在GIT中處理這個合併問題

 git cherry-pick 

和我運行X分公司本身的git摘櫻桃。現在在這個git cherry-pick之後,忘了運行git push命令。

幾乎在同一時間,我的同事爲他的提交做了git cherry-pick,並且做了git push。

當我在他的機器上看到git日誌時,我找不到我的提交併意識到我忘了運行git push。

我去了我的機器,做了git push。但我現在看到這條消息

+0

請在執行'git fetch'後添加'git log --graph --decorate --oneline HEAD @ {u}'的輸出。 – michas

+0

你的'git push'應該失敗了,因爲你的同事通過他的推動改變了你的上游。 (假設你們都在同一個分支上工作) – michas

+0

是@michas,我們都在同一個分支上工作。 –

回答

1

沒有更好的日誌輸出,很難說出什麼事情。

我猜你們都有同樣的基本承諾,你們每個人都做了一個櫻桃挑選,並且你們合併了兩個櫻桃挑選以便能夠推動它。

上面的日誌顯示了來自您的一個提交(cf5b726),來自您的同事的一個提交(1aa2ecd)和前兩個提交的合併(28529d0),這似乎源自git pull

是的,合併攜帶兩個合併提交的更改。 - 畢竟這是合併的關鍵。 ;)

+0

感謝@ michas對你的迴應,你是合適的合併(28529d0)是「git pull」的結果。我們可以使用這個合併(28529d0)id輸入到其他地方,我們希望這兩個變化都能被反映出來嗎? –

+0

當然,合併提交只是一個普通的提交。你可以在需要提交的地方使用它。你可以使用'git pull --rebase'來避免將來的合併提交。也許看看'gitk'可能會幫助你理解正在發生的事情。 – michas

+0

很好@michas,你的意思是說我們應該用git pull -rebase代替git pull。另外,我在考慮commit id「1aa2ecd」也有cf5b726的變化嗎? –

0

您可以使用git log --graphgit log --format=raw(或者Emacs的magit)來查看提交的父母。