我是git的新手,我仍然试图全面了解叉子,起源,上游和分支机构的工作方式。
我在Github中创建了一个fork,创建了fork的本地副本,识别了我的上游和原始分支,并创建了一个新的分支'。我在我的本地' newbranch'上进行了我的开发,将它推送到我在Github上的fork,并创建了一个拉回请求回到上游repo。然后我直接在Github上对我的fork进行了一些更改。后来,我对我的本地副本进行了更改,而没有从Github更新。我已经通过合并来自新的分支'来解决这个问题。在Github分叉。
到目前为止,这么好。但是,我现在一直试图从上游回购更新我的分支并遇到麻烦。
对我的' newbranch'进行更改后把它们推到前叉,我做了以下几点:
<None>
这造成了数以千计的冲突。我做了一次重置以退出合并,但仍然在分支中留下了数千个修改过的文件,我无法弄清楚如何清理它们。
我创建了&new 39c&#39; newbranch&#39;来自“开发”上游回购的分支。如果你想知道我为什么要搞这个&#39;主人&#39;分支,这使我们两个人。
我的Github叉子说我的开发&#39;在上游回购支持后,分支机构有40,000个提交。我想清理我的当地回购,更新我当地的开发项目&#39;和&#39; newbranch&#39;来自上游repo的分支,并将这些更改同步到我的Github分支。
非常感谢任何摆脱这种混乱的帮助。
答案 0 :(得分:0)
如果你想摆脱这种混乱,有几种简单的方法
1)从上游创建一个新分支并删除前一个分支并重命名当前分支,然后强制推送到您的分支。
2)git reset --hard HEAD~<some x number of commits>
,然后按git pull
快进当前分支,然后cherry-pick
通过访问reflog提交您想要的历史记录
答案 1 :(得分:0)
看来我所做的就是在没有足够清晰的理解的情况下按字面意思遵循Github指令。可能是因为在创建“新分支”之间有相当长的一段时间。这个反叛的问题。
&#39; newbranch&#39;是由devel创建的,而不是主人。所以,当我试图合并上游/掌握&#39;与&newcranch&#39;有成千上万的冲突。我可能用一个简单的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
我的更改已经提交,所以没有别的事可做。就像我说的那样,硬重置可能已经清除了它,但这很有用,我很高兴。
希望这对某人有所帮助。