git命令之gitfetch的⽤法git fetch, 理解fetch的含义, 是远程协作的关键.
⽽理解fetch的关键, 是理解FETCH_HEAD.
这⾥需要解释下什么是FETCH_HEAD??
FETCH_HEAD指的是: 某个branch在服务器上的最新状态'.
每⼀个执⾏过fetch操作的项⽬'都会存在⼀个FETCH_HEAD列表,
这个列表保存在.git/FETCH_HEAD⽂件中, 其中每⼀⾏对应于远程服务器的⼀个分⽀.
当前分⽀指向的FETCH_HEAD, 就是这个⽂件第⼀⾏对应的那个分⽀.
⼀般来说, 存在两种情况:
如果没有显式的指定远程分⽀, 则远程分⽀的master将作为默认的FETCH_HEAD.
如果指定了远程分⽀, 就将这个远程分⽀作为FETCH_HEAD.
常见的git fetch 使⽤⽅式包含以下四种:
git fetch
这⼀步其实是执⾏了两个关键操作:
- 创建并更新所有远程分⽀的本地远程分⽀.
- 设定当前分⽀的FETCH_HEAD为远程服务器的master分⽀ (上⾯说的第⼀种情况)
需要注意的是: 和push不同, fetch会⾃动获取远程`新加⼊'的分⽀.
git fetch origin
同上, 只不过⼿动指定了remote.
git fetch origin branch1
设定当前分⽀的FETCH_HEAD' 为远程服务器的branch1分⽀`.
注意: 在这种情况下, 不会在本地创建本地远程分⽀, 这是因为:
这个操作是git pull origin branch1的第⼀步, ⽽对应的pull操作,并不会在本地创建新的branch.
fetch最佳用法⼀个附加效果是:
这个命令可以⽤来测试远程主机的远程分⽀branch1是否存在, 如果存在, 返回0, 如果不存在, 返回128, 抛出⼀个异常.
git fetch origin branch1:branch2
只要明⽩了上⾯的含义, 这个就很简单了,
⾸先执⾏上⾯的fetch操作
使⽤远程branch1分⽀在本地创建branch2(但不会切换到该分⽀),
如果本地不存在branch2分⽀, 则会⾃动创建⼀个新的branch2分⽀,
如果本地存在branch2分⽀, 并且是`fast forward', 则⾃动合并两个分⽀, 否则, 会阻⽌以上操作.
git fetch origin :branch2
等价于: git fetch origin master:branch2
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论