2010-10-22 72 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