git 获取
git fetch 从远程存储库中获取更改并将其放入存储库的对象数据库中。它还从远程存储库中获取分支并将它们存储为远程跟踪分支。
当你获取 git 时,它会告诉你它将每个分支存储在它获取的远程存储库中的什么位置。例如,您应该看到类似
7987baa..2086e7b master -> origin/master
在获取时。这意味着 'origin/master' 存储 'master' 在 'origin' 存储库中的位置。
如果您检查.git/config 文件,您会看到以下片段:
[遥远的“起源”]
url = git://git.example.com/repo.git
fetch = +refs/heads/*:refs/remotes/origin/*
这(除其他外)意味着原始远程(您从中克隆的存储库)中的任何分支 'A' ('refs/heads/A') 都将保存为 'origin/A' ('refs/remotes/origin/ A')。
git log ..origin/master
如您所见,'origin/master' 是 'master' 的起源。如果你在(默认)'master'分支上,那么git log ..origin/master,相当于git log HEAD..origin/master,当在'master'分支上时相当于git log master..origin/master将列出所有在'master'分支上的提交远程存储库,并且不在您工作的本地“主”分支中。
现代 git 中更通用的版本(假设存在上游/跟踪信息)将简单地使用
$ git log ..@{u}
(这里@{u} 是@{upstream} 的同义词,参见gitrevisions 手册页)。
git 合并原点/master
git merge 用于连接两行历史。如果其中一方自最后一个分支点(自合并基础以来)没有做任何工作,则情况是 fast-forward (您所在的分支只是更新到您所在分支的尖端正在合并),或最新(没有什么新东西要合并,你所在的分支保持不变)。
git fetch后跟git merge origin/master,在'master'分支上,相当于发出
$ git pull
如果您不想合并,则不需要。请注意,您可以使用例如git reset --hard HEAD@{1} 如果您不喜欢它,请返回并丢弃 git pull 的结果。