Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
了解Git和Github的分支_Git_Github_Branch_Git Merge - Fatal编程技术网

了解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)