Git 尝试合并分支返回';已更新';尽管有变化
我正在使用git进行项目协作。有一个主存储库,然后我们每个人都有自己的分支,并将更改从主存储库拉入其中。然而,尽管我可以看到在我的分支中没有出现主控中的更改,但我无法让git将它们引入:Git 尝试合并分支返回';已更新';尽管有变化,git,github,branching-and-merging,Git,Github,Branching And Merging,我正在使用git进行项目协作。有一个主存储库,然后我们每个人都有自己的分支,并将更改从主存储库拉入其中。然而,尽管我可以看到在我的分支中没有出现主控中的更改,但我无法让git将它们引入: $ git checkout master Switched to branch 'master' Your branch is up-to-date with 'origin/master'. (master) $ git status On branch master Your branch is up-
$ git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
(master) $ git status
On branch master
Your branch is up-to-date with 'origin/master'.
## removed listing of untracked files not relevant to the question ##
nothing added to commit but untracked files present (use "git add" to track)
因此,我的本地master
分支与远程master
是最新的。请注意,我还有未跟踪的文件,这些文件列在git status
的输出中。我删除了那些行,因为它们在这里不相关
现在,我切换到我的terdon
分支:
(master) $ git checkout terdon
Switched to branch 'terdon'
Your branch is up-to-date with 'origin/terdon'.
(master) $ git status
On branch terdon
Your branch is up-to-date with 'origin/master'.
## removed listing of untracked files not relevant to the question ##
nothing added to commit but untracked files present (use "git add" to track)
如上所述,分支机构通过远程terdon
更新,并且状态
对其进行确认。但是,master
中有一些变化不在terdon
中:
(terdon) $ git diff terdon master | wc
1940 8389 77113 ## loads of differences
试图拉它们,但不起作用:
(terdon) $ git pull origin master
From github.com:foo/foo
* branch master -> FETCH_HEAD
Already up-to-date.
(terdon) $ git merge master
Already up-to-date.
我确实注意到,master
中的最新提交也在terdon
中,但是:
$ git log origin/terdon --graph
* commit 800a899fbb88ac16d1856f6d199ffba7817fba6b
| Author: terdon
| Date: Fri Apr 29 13:09:56 2016 +0200
|
| use local tmp dir and allow 12G mem for novosort
|
* commit d8c90a8a53ba803be8a5593c4470eed4ac9b6e40
|\ Merge: 7635f22 46edf86
| | Author: terdon
| | Date: Fri Apr 29 13:03:08 2016 +0200
| |
| | Merge branch 'master' of github.com:foo/foo into terdon
| |
| * commit 46edf86e2329f9351bff291eeb55e8cb13f70031
| | Author: Andreas
| | Date: Fri Apr 29 09:37:47 2016 +0200
| |
| | bug fix with new transcriptomes not having pointer to reference genome
| |
以及:
这让我觉得我做了一些愚蠢的事情,但我不知道是什么。如何将我知道的master
分支中的更改引入terdon
我也尝试了来自的建议,但没有改变:
$ git fetch --all --prune
Fetching origin
From github.com:foo/branch2
x [deleted] (none) -> origin/branch3
x [deleted] (none) -> origin/branch4
x [deleted] (none) -> origin/branch5
x [deleted] (none) -> origin/branch6
x [deleted] (none) -> origin/branch7
x [deleted] (none) -> origin/branch8
x [deleted] (none) -> origin/branch9
x [deleted] (none) -> origin/branch10
x [deleted] (none) -> origin/branch11
x [deleted] (none) -> origin/branch12
x [deleted] (none) -> origin/branch13
x [deleted] (none) -> origin/branch14
x [deleted] (none) -> origin/branch15
x [deleted] (none) -> origin/branch16
x [deleted] (none) -> origin/branch17
x [deleted] (none) -> origin/branch18
x [deleted] (none) -> origin/branch19
x [deleted] (none) -> origin/branch20
x [deleted] (none) -> origin/branch21
x [deleted] (none) -> origin/branch22
x [deleted] (none) -> origin/branch23
然后我跑:
$ git log master ^terdon
及
但两者都没有产出 快速回答:
您在terdon
分支中有更改,但这些更改尚未在master中
更多详细信息
首先,做一个完整的git获取(不会改变任何东西,但最好是更新)
其次,看起来您的所有更改都是在terdon
分支中进行的,而不是在master
上,因此您的terdon
分支已经使用master进行了更新(我认为是master的分支)
要验证这是否是实际情况,请签出master
并使用terdon
git log ^master terdon
OR
git log master ^terdon
取决于您所在的分支以及是否要查看拉/推更改
完整答案
git diff
git diff
显示两个分支之间的更改。看起来您已提交到tredon
,但未合并到master。您的主机是最新的,并且更改在新的分支中
如何合并更改?
git checkout master
git merge tredon
谢谢,但这些似乎都没有帮助(见更新的问题)。我的变化肯定在主分支中。当我检查分支时,我可以在那里看到它们,我可以在
diff terdon master
的输出中看到它们。我想把这些变化从大师带到泰顿。我该如何进行这种“干式”合并?您的代码未提交。它在车站里。git状态将向您显示更改,pull将只合并提交。据我所知,我没有任何未提交的更改<代码>git状态将显示隐藏的更改,对吗?另外,请查看更新的问题。来自master
的最新提交确实出现在terdon
的日志中,这表明应已导入更改。尽管如此,变化并不存在。我很确定这是非常相关的,但我不知道如何/为什么。你对git有些误解。在git中有3个州。工作目录和暂存区跟随您到您签出的任何分支机构。当头部改变时,这些不会改变。查看状态(不是日志!!!)查看未提交的更改我对git有很多误解,我对git很陌生,非常感谢您的帮助。我在问题中显示了git status
的输出,它告诉我一切都是最新的,没有列出任何隐藏的文件。我删除了提及未跟踪文件的行,因为这些文件不相关,但我显示了由git status
返回的所有其他内容。git status的输出是什么?我愿意打赌内容将在暂存区。@CodeWizard我在问题中添加了两个分支上运行的git status
的输出。我删除了一些列有未跟踪文件的行,这些文件也在目录中。没有别的了。它的状态不是日志<代码>git状态不是git日志
@CodeWizardgit日志
输出也显示在上面。我可以看到,来自master的最新提交似乎列在terdon的日志中,但我想要从master得到的更改却不在那里。嗯。帮忙?
git fetch --all --prune
git log ^master terdon
OR
git log master ^terdon
git checkout master
git merge tredon