首页 > 解决方案 > git merge 在这个图中的位置

问题描述

我正在学习 git/github/版本控制,我发现下图非常有用(源代码)。我的问题是在哪里git merge适合这个图表?箭头从哪里开始并指向哪里?

在此处输入图像描述

标签: gitversion-control

解决方案


正如我所评论的,“ rebase”这里是在 a 的上下文中git pull --rebase

  • 从远程存储库中获取
  • rebase 在刚刚被 fetch 更新的远程跟踪分支之上。

Agit merge在本地存储库和工作区之间

  • 本地存储库具有合并的来源:您要合并内容,
  • 工作区是您的工作树,您已在其中签出当前工作分支:它是您要合并到的.

您需要一个工作区来解决可能的合并冲突。

虽然Schwern回答在技术上是正确的,但令人困惑。

  • 是的,有一些边缘情况(如这里那里所示)您可以在不涉及工作树的情况下合并。
  • 但是合并时(几乎总是)涉及工作树

该图的目的是向您展示在哪里查看git命令执行。

来自“真正的合并

提交一个合并版本,协调来自所有要合并的分支的更改,并且您的 HEAD、索引和工作树都会更新到它
只要不重叠,就可以在工作树中进行修改;更新将保留它们。

如果您要git merge在裸存储库(无工作树)中执行 a,您将获得:

fatal: this operation must be run in a work tree

(来自setup.c#setup_work_tree()

也可以看看:

https://appendtonew.wpengine.com/wp-content/uploads/2015/06/Screen-Shot-2015-06-24-at-8.37.13-PM-1024x663.png

(来源:www.patrickzahnd.ch

对于更具交互性的可视化 Git 备忘单:来自 NDP Software 的交互,来自 Andrew Peterson

备忘单


不要忘记使用 Git 2.23(昨天发布),您有两个新的(实验性)命令:git switchgit restore.
他们可以澄清以前git checkout在做什么。


推荐阅读