有点git麻烦

时间:2010-10-22 12:35:23

标签: git merge commit push

我和朋友一起使用git。 我做了一些提交,我的朋友没有更新他的本地回购并推送-f arugment:

git push -f origin master

现在在git服务器(github)中,我的提交被破坏,最新的提交是我的朋友。但我有本地承诺的历史。我可以以某种方式将它们合并回主人吗?或者我必须手动使用最新版本?

3 个答案:

答案 0 :(得分:3)

好像你的朋友确实改变了已在公共存储库上发布的内容。见http://progit.org/book/ch3-6.html。首先烧你的朋友。

通常情况下,git pull会触发你身边的合并。您始终可以将整个存储库复制为备份以防万一。您也可以简单地将更新从最新版本复制到新的签出,并将所有更改作为单个提交提交。

答案 1 :(得分:1)

我没有对此进行测试,但我认为我会强制你的提交发布到github(从而重新编写历史记录),让你的“朋友”拉动你的变化,改变他的变化,然后推动他的变化了。这样,您就可以将更改发送到同一个地方。

一个好的经验法则是永远不要向GITHUB强制提交 :)这样做一次,让你的回购回到你的“朋友”搞砸之前的状态:< / p>

# 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

答案 2 :(得分:0)

推回自己的本地提交是一种方式(git push origin master --force),但它会删除你朋友的贡献。

你可以:

  • 在GitHub上重命名master(请参阅“renaming remote git branch”)
  • 从GitHub获取“friend_master”分支,并在主人之上重新绑定它,整合你朋友的贡献并验证它们。
  • git push origin master(重新创建包含完整内容的主分支)

然后,您的朋友可以将他/她的本地master分支重置为origin/master