了解Git和Github的分支
我有个问题。我有两个分支,分别是了解Git和Github的分支,git,github,branch,git-merge,Git,Github,Branch,Git Merge,我有个问题。我有两个分支,分别是master和mydestinations。我在我的目的地分支上做了一些不在主机上的更改。我从mydestinations分支提交并将更改推送到我的git repo上 当我切换回主控时,我提交并推送到回购协议上的更改并不存在,这是我所期望的。但是,当我切换回master并运行git status时,它表示master是最新的。我本以为它会说,master是origin后面的一个提交 有人能帮我理解为什么master是最新的origin/master,但没有提交的更
master
和mydestinations
。我在我的目的地
分支上做了一些不在主机
上的更改。我从mydestinations
分支提交并将更改推送到我的git repo上
当我切换回主控时,我提交并推送到回购协议上的更改并不存在,这是我所期望的。但是,当我切换回master
并运行git status
时,它表示master
是最新的。我本以为它会说,master
是origin
后面的一个提交
有人能帮我理解为什么master
是最新的origin/master
,但没有提交的更改吗
有人能帮我理解为什么master与origin/master是最新的,但没有提交的更改吗
您的本地主机
分支的文件与github远程主机
分支的文件相同。这就是(本地)主分支不在(远程)主分支后面的原因
如果其他人(或来自任何其他远程计算机的您)向(远程)主分支提交了新的更改,您的(本地)主分支将落后于(任何数量的提交)。您在本地回购中添加了对
我的目的地的提交,而不是对主分支的提交:
a <-- master ref is (a)
\
b - c - d <-- my-destinations ref is (d)
请注意,如果在签出my destinations
时没有推送,则origin
将不会有新的提交b、c和d,除非使用命令行标志或其他方法将所有分支推送到origin
。如果您确实使用签出的my destinations
进行了推送,则远程上也会有b-c-d提交,并且origin/my destinations
本地跟踪引用也会指向(d)
但最大的问题是如何将新提交返回到master
。要从my destinations
获得对master
的新提交,只需git将my destinations
与master签出合并,在这种情况下,这将只是“快进”master直到(d)提交,因为master
引用的是my destinations
的父级(也就是说,它们没有分叉——你可以把a-b-c-d看作一条直线,而不是一条分支)。合并后,你会:
a <-- origin/master (a)
\
b - c - d <-- master (d)* <-- my-destinations (d)
a您从未将更改合并到master
中,那么它为什么会落后呢?您需要git checkout master&&git merge my destinations
中才能在master
中进行更改。当我尝试git merge时,git会以“not something we can merge”来响应此响应指的是什么?非常感谢。
a <-- origin/master (a)
\
b - c - d <-- master (d)* <-- my-destinations (d)