Xoa*_*n93 23 git branch git-fetch
这主要是好奇心的本质,因为我正在努力熟悉Git.我查看了'git fetch'的文档,但我没有看到下面的明显解释.在此先感谢,如果这是显而易见的,请道歉.
1)从中央存储库,比如说GitHub,我克隆一个名为website
两台机器上的存储库,HostA
和HostB
.
2)on HostA
,我对文件进行了更改,比如说README.txt
,然后提交它.
在这一点上HostA
,分支的提交master
和
origin/master
预期的不同,因为我尚未推动
git show master
git show origin/master
Run Code Online (Sandbox Code Playgroud)
报告不同的哈希值(因为master
有变化而origin/master
没有)
3)一旦我推,他们就是在那之后.
4)现在,HostB
如果我做了以下事情:
git fetch
git merge FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)
之后,在HostB上master
并origin/master
在查询时报告相同的哈希值git show
但
如果相反我做了,在HostB
:
git fetch origin master
git merge FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)
在那一点上,哈希仍然不同.
git show origin
git show origin/master
Run Code Online (Sandbox Code Playgroud)
报告不同的哈希值
跟踪分支origin/master
在我做普通之前不会更新git fetch
为什么是这样?
Von*_*onC 24
如果您的分支具有关联的远程跟踪分支,则意味着其配置如下:
git config branch.[branch-name].remote [remote-name]
git config branch.[branch-name].merge [remote-master]
Run Code Online (Sandbox Code Playgroud)
其中关键部分git fetch
解释了两个命令之间的区别:
<refspec>
Run Code Online (Sandbox Code Playgroud)
<refspec>
参数的格式是可选的加号+
,后跟源ref<src>
,后跟冒号:
,后跟目标ref<dst>
.获取
匹配的远程引用,如果不是空字符串,则使用匹配快速转发与其匹配的本地引用.<src>
<dst>
<src>
让我再说一遍:
如果<dst>
不是空字符串,则使用匹配快速转发与其匹配的本地引用<src>
.
知道:
git fetch
等同于git fetch origin master:master
(从你的分支配置的默认值),因此它将更新远程跟踪分支:操作的Refspec的目的是为您指定.
git fetch origin master
等同于" git fetch origin master:
",而不是" git fetch origin master:master
"; 它存储的"获取价值master
"分支(远程" origin
中') FETCH_HEAD
,而不是在’ master
"分支机构或远程跟踪" remotes/origin/master
"分支(由的JakubNarębski的答案)
.换句话说,没有指定的目的地你的Refspec
归档时间: |
|
查看次数: |
48589 次 |
最近记录: |