Git 小麻烦

Git 小麻烦,git,merge,commit,push,Git,Merge,Commit,Push,我正在和我的朋友一起使用git。 我做了几次提交,我的朋友没有更新他的本地回购协议,而是用-f arugment推送: git push -f origin master 现在在git服务器(github)中,我的提交被销毁,最近的提交是我的朋友。但我在本地有过犯罪记录。我能不能把它们合并回主人那里?或者我必须用最新版本手工完成这项工作?似乎你的朋友确实更改了公共存储库中已发布的内容。看见从烧掉你的朋友开始 通常情况下,git pull会触发您这边的合并。您可以随时将整个存储库复制为备份,以备

我正在和我的朋友一起使用git。 我做了几次提交,我的朋友没有更新他的本地回购协议,而是用-f arugment推送:

git push -f origin master

现在在git服务器(github)中,我的提交被销毁,最近的提交是我的朋友。但我在本地有过犯罪记录。我能不能把它们合并回主人那里?或者我必须用最新版本手工完成这项工作?

似乎你的朋友确实更改了公共存储库中已发布的内容。看见从烧掉你的朋友开始


通常情况下,git pull会触发您这边的合并。您可以随时将整个存储库复制为备份,以备不时之需。您也可以简单地将最新版本的更改复制到新签出,并将所有更改作为一次提交提交。

我还没有对此进行测试,但我想我会强制将您的提交发布到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

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

你可以:

  • 在GitHub上重命名
    master
    (请参阅“”)
  • 从GitHub获取“friend_master”分支,并在您的master上重新设置它的基础,集成您朋友的贡献,并验证它们
  • git推送源主机
    (使用完整内容重新创建主分支)
然后,您的朋友只需将其本地
master
分支重置为
origin/master