git push显示“Everything up-to-date”但比较显示差异

时间:2017-03-29 16:59:02

标签: git github version-control

您好我有这个问题我参与了一个开源回购。每次我从主分支工作,即使正在处理的是主分支,通常在代码合并时,我将拉上游(原始仓库)以使我的主分支恢复正常。这在最近创建了一些更改之后引起了我的问题,并且当我推送到克隆的repo时,我已经提升上游以恢复与原始存储库相同的级别,它表示一切都是最新的。但是当我在github上进行比较时,它显示了与上游的差异。 我试过了

  1. git checkout master
  2. 再次向上游提交然后 再次推动
  3. 那没用! 我试过检查提交

     1. git checkout HEAD~5 
     2. git pull upstream master 
     3. git add   
     4. git commit 
     5. git push
    

    没有工作。

    我还想知道为每个问题创建一个快速修复分支的简单方法,并避免从我的主分支做一切谢谢。

2 个答案:

答案 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/masterupstream/master相同,需要强制拉/推(可能是上游/主控更改了历史记录提交)。因此,在此之前,您需要将从本地master分支检出的分支推送到origin,以便这些分支上的更改不会丢失。然后将origin/masterupstream/master同步,执行以下步骤:

git checkout master
git pull -f upstream master
git reset --hard upstream/master
git push -f origin master

现在origin/masterupstream/master同步。您可以使用以下命令仔细检查:

git log origin/master..upstream/master
git log upstream/master..origin/master

如果两个命令都没有输出,则表示origin/masterupstream/master处于同一级别(同步)。