小编典典

根据 Git,谁是“我们”,谁是“他们”?

all

在 Git rebase 之后,以及在其他情况下,您可以在报告中找到一些 被我们标记为已删除的git status文件。根据 Git, 我们
是谁,为什么?

它是指我坐在这个分支上并且为我工作吗?或者它是指它自己和在我要重新定位的分支上工作的人?


阅读 61

收藏
2022-06-25

共1个答案

小编典典

根据 Git,谁是“我们”/“我们的”和“他们”/“他们的”?

(这也回答了这个问题:“git rebase 是如何工作的,它到底发生了什么?”)

在所有情况下:

  1. “我们” (或 “我们的” )=当前签出的提交(HEAD,此时 git 执行 导致冲突的操作(稍后会详细介绍),并且:
  2. “他们” (或 “他们的” )=另一个提交,在 git 执行导致冲突 的操作时未被 git 签出(稍后会详细介绍)。

重要提示:HEAD在它执行导致冲突的动作时,不一定是HEAD在您键入 git 命令时。这是必须理解的。在运行导致冲突的操作之前,Git
可能会进行一些检出并更改HEAD(哪些提交被检出),从而导致“我们”和“他们”在未经训练的眼睛看来交换或倒退。

4 种情况,详细说明:merge、cherry-pick、rebase、revert:

  1. git merge(直觉的):

    1. 示例命令:

          git checkout master
      

      git merge feature_branch # merge feature_branch into master

    2. “us”/”ours” = HEAD,也就是说,因为你跑的时候master在分支上。master``git merge feature_branch

    3. “them”/”theirs” = feature_branch,这是您要合并到的分支master
    4. git cherry-pick(直觉的):
    5. 示例命令:

          git checkout feature_branch
      

      git cherry-pick some_commit # apply some_commit to feature_branch

    6. “us”/”ours” = HEAD,也就是说,因为你跑的时候feature_branch在分支上。feature_branch``git cherry-pick some_commit

    7. “them”/”theirs” = some_commit,这是您要挑选的提交feature_branch
    8. git rebase(违反直觉,但一旦你了解了它的工作原理,就完全有道理了):
    9. 示例命令:

          git checkout feature_branch
      

      git rebase master # rebase feature_branch onto latest master

    10. 此图(在https://asciiflow.com绘制), 最新最新 提交在顶部和/或右侧:

          #             Prior to rebase: feature_branch
      

      received new commits while

      master did too

      master

      x

      | feature_branch

      x y

      | |

      x y

      | /

2022-06-25