您好我有这个问题我参与了一个开源回购。每次我从主分支工作,即使正在处理的是主分支,通常在代码合并时,我将拉上游(原始仓库)以使我的主分支恢复正常。这在最近创建了一些更改之后引起了我的问题,并且当我推送到克隆的repo时,我已经提升上游以恢复与原始存储库相同的级别,它表示一切都是最新的。但是当我在github上进行比较时,它显示了与上游的差异。 我试过了
那没用! 我试过检查提交
1. git checkout HEAD~5
2. git pull upstream master
3. git add
4. git commit
5. git push
没有工作。
我还想知道为每个问题创建一个快速修复分支的简单方法,并避免从我的主分支做一切谢谢。
答案 0 :(得分:1)
我上游取回与原始存储库相同的级别
如果要使用 upstream / master 替换克隆/原始repo master 然后一种方法是使用 upstream / master 重置 origin / master 。
$ git fetch upstream
$ git checkout master
$ git reset --hard upstream/master # local/master = upstream/master
$ git push -f origin master # force push to origin/master
现在, origin / master 和 upstream / master
之间应该没有区别注意:force(-f)push将用 local / master = upstream / master 历史记录替换 origin / master 。
我还想知道为每个问题创建一个快速修复分支的简单方法,并避免从我的主分支中做任何事情
您可以直接从本地上游/主站创建和签出新分支。
# no matter in which branch you are now!
$ git fetch upstream
$ git checkout -b quick-fix upstream/master # chekcout to 'quick-fix' branch with the same history of 'upstream/master'
答案 1 :(得分:1)
要使origin/master
与upstream/master
相同,需要强制拉/推(可能是上游/主控更改了历史记录提交)。因此,在此之前,您需要将从本地master
分支检出的分支推送到origin
,以便这些分支上的更改不会丢失。然后将origin/master
与upstream/master
同步,执行以下步骤:
git checkout master
git pull -f upstream master
git reset --hard upstream/master
git push -f origin master
现在origin/master
与upstream/master
同步。您可以使用以下命令仔细检查:
git log origin/master..upstream/master
git log upstream/master..origin/master
如果两个命令都没有输出,则表示origin/master
和upstream/master
处于同一级别(同步)。