2017-04-04 71 views
0

我是git的新手,我仍然试图全面掌握fork,起源,上游和分支如何工作。如何修复我损坏的本地git repo分支并重新绑定我的Github分叉?

我在Github中创建了一个fork,创建了fork的本地副本,确定了我的上游和原始分支,并创建了一个“newbranch”。我在我的本地'newbranch'上完成了自己的开发工作,将它推到了Github的fork上,并创建了一个pull请求回到上游的repo。然后我在Github上直接在叉子上做了一些修改。后来,我在没有从Github更新的情况下对本地副本进行了更改。我已经通过Github fork中的'newbranch'合并解决了这个问题。

到目前为止,这么好。但是,我现在一直试图从上游回购更新我的分支并遇到麻烦。

提交更改我的“newbranch”和他们推到叉后,我做了以下内容:

git fetch upstream 
git checkout master 
git merge upstream/master 

这导致数以千计的冲突。我做了一个重置​​来退出合并,但仍然留下了成千上万的修改文件在分支,我无法弄清楚如何清理它们。

我从上游回购的'devel'分支创建'newbranch'。如果你想知道为什么我搞乱了'master'分支,那就让我们两个人。

我的Github fork说我的'devel'分支在上游回购后面有4万个提交。我想清理本地回购,从上游回购更新本地'devel'和'newbranch'分支,并将这些更改同步到我的Github分支。

任何帮助摆脱这个混乱非常感激。

回答

0

看来我所做的就是按照Github的指示,望文生义没有一个明确的认识不够想。可能是因为创建“新生产线”和重新定义这个问题之间有相当长的一段时间。

'newbranch'是由devel创建的,而不是master。所以当我试图合并'上游/主'和'新分支'时,就有成千上万的冲突。我大概只能修理我的回购用一个简单的命令git reset --hard但是这是我做什么,而不是:

git clone https://github.com/MYACCOUNT/REPO.git 
git remote add upstream https://github.com/UPSTREAM/REPO.git 
git fetch upstream 
git checkout devel 
git pull upstream devel 
git push 
git checkout vhosts-package 
git rebase devel 
git push 

我的变化已经承诺这样有没有别的事情可做。就像我说的那样,硬重置可能会清除它,但这很有效,我很高兴。

希望这对某人有所帮助。

0

如果你想出来的这个烂摊子的有几个简单的方法

1)创建一个从上游的一个新的分支,并删除之前的分支,并重新命名当前分支,然后强制推到你的叉子。

2)git reset --hard HEAD~<some x number of commits>,然后快速向前git pull当前分支,然后cherry-pick提交您从历史访问引用日志

+0

这真的是唯一的方法吗?分叉的存储库没有被损坏,并且我向上游的repo提交了一个pull请求。但是,似乎我本地回购中的'主'分支已经损坏。我会非常高兴地倾销我的本地回购,并从Github重新加载它,因为它应该包括我的'newbranch'。这会工作吗?然后从上游更新本地回购并将这些更新推送到Github分叉的步骤是什么? – sthames42

+0

它可能不是唯一的方式,但当你完全搞砸时,我觉得它很简单。 – Peddipaga

+0

感谢您的回复。我认为我很难理解你的解决方案,但是我认为如果我有这个方案会更容易。完成重建我的本地回购。现在都好。 – sthames42

相关问题