Jas*_* Li 4 git version-control github
我正在以下沙箱中练习 git:https://learngitbranching.js.org/?NODEMO
我在两个单独的会话中运行了两组命令。第一组命令按顺序如下:
git clone
git checkout -b feature
git push
git fakeTeamwork main 1
git fakeTeamwork feature 1
git pull
Run Code Online (Sandbox Code Playgroud)
按顺序排列的第二组命令类似,但我在最后使用git fetch+代替:git merge
git clone
git checkout -b feature
git push
git fakeTeamwork main 1
git fakeTeamwork feature 1
git fetch
git merge o/feature
Run Code Online (Sandbox Code Playgroud)
如果git pull= git fetch+ git merge,为什么两个结果不同?似乎并git pull没有更新所有远程跟踪分支。这只是沙箱的缺陷还是 git 中实际发生的情况?
注意:命令git clone和git fakeTeamwork只是为沙箱构建的命令
谢谢你!
\n\n看来 git pull 并没有更新所有远程跟踪分支。
\n
这可能会发生,是的。它确实发生在以下情况:
\ngit pullgit fetch origin master例如,运行,并且git fetch origin master因此仅更新origin/master。此外,在 1.8.4 之前的 Git 版本中,某些git fetch操作根本不会更新任何远程跟踪名称。这里git fetch origin master没有影响origin/master。
除此之外,我们还有其他几种特殊情况:
\ngit pull已配置或被告知运行git rebase,则它使用的第二个命令是git rebase, not git merge。因此,明显的替代品git fetch后面是git rebase。不过,这里的一些细节甚至更多地依赖于 Git 版本:特别是,存在之前存在的 rebasegit pull实现模式(实际选项首先出现在 Git 1.9 中,但自某些 1.6 版本 \xe2\x80\x94 以来做了特殊的工作我查找了精确的版本一次,但目前使用的最旧的 Git 似乎是 CentOS,其中包括某些发行版中的一些 Git 1.7 版本)。--fork-pointgit rebase --fork-point--fork-pointgit pullgit pull,则还没有现有分支。(您可以稍后使用孤立分支再次触发此情况。)在这种情况下,不是合并或变基,而是git pull运行专门的git checkout.分支的上游设置在这里很重要,具体取决于您传递给git pullfetch 和第二个命令的参数。一般来说,这些大多数最终都会以相同的方式工作,除了您注意到的一些远程跟踪名称有时没有更新的警告之外。
| 归档时间: |
|
| 查看次数: |
2076 次 |
| 最近记录: |