2010-10-22 71 views
2

我用我的朋友git。 我做了幾次提交和我的朋友沒有更新他的本地回購,並與-f arugment推:有點混帳問題

git push -f origin master 

現在在git的服務器(github上)我提交被破壞,最新的提交是我的朋友。但我有本地提交的歷史。我能以某種方式將它們歸還給主人嗎?或者我必須用最新版本的手來做到這一點?

回答

3

似乎你的朋友確實改變了已經發布在公共存儲庫上的東西。見http://progit.org/book/ch3-6.html。開始燒你的朋友。

通常情況下,git pull應該觸發你的合併。以防萬一,您可以隨時將整個存儲庫複製爲備份。您也可以簡單地將最新版本的更改複製到新的結帳中,並將所有這些更改提交爲單個提交。

1

我沒有測試過這一點,但我想我會做強迫你提交發布到github上(因此重寫再次史),有你的「朋友」拉你的變化,重訂他的更改,然後推動他的變化。通過這種方式,您可以將所做的更改都保存在同一個地方。

一個好的經驗法則是切勿強行將致力於GitHub的 :)做這種曾經讓你的回購回它是在之前的狀態你的「朋友」搞砸了:

# on your machine 
git push origin master --force 

#now your "friend's" working copy is fairy screwed up, so on his machine: 
git checkout -b screwed_up #checks out a new branch called screwed_up 
git pull origin master # pulls in your changes 
git checkout master #checks out his version with his changes 
git rebase screwed_up #moves his changes to the end of your changes (see git graphs for more details) 
git commit -am 'your message here' 
git push origin master #pushes his changes, which are now merged with your changes back to github 
0

推回自己的本地提交是一種方式(git push origin master --force),但它會抹去您朋友的貢獻。

您可以:

  • 在GitHub上重命名master(見 「renaming remote git branch」)
  • 取從GitHub說, 「friend_master」 分支,重訂它在你的掌握之上,整合你的朋友的捐助,驗證它們。
  • git push origin master(重建主分支有完整內容)

然後你的朋友可以在他/她的本地master分公司只是重置爲origin/master