在Git rebase之后,在其他情况下,您可以在git status
报告中找到一些标记为我们已删除的文件。根据Git,我们是谁?为什么?
它指的是我坐在这个分支上它是否适合我?或者它是指自己和那些在分支机构上工作的人我正在反对?
答案 0 :(得分:154)
当您合并时,us
指的是您要合并的分支,而不是them
,即要合并的分支。
rebase 时,us
引用上游分支,而them
是您正在移动的分支。如果发生变革,这有点违反直觉。
原因是Git使用相同的合并引擎进行rebase,它实际上是将你的东西挑选到上游分支中。 us
= into,them
=来自。
答案 1 :(得分:6)
HEAD
) git进行操作时会引起冲突(稍后会详细介绍) ),以及: 要点:HEAD
时,它引起冲突的动作不一定是HEAD
,而在您键入git命令时。这是必须理解的。 Git可能会进行一些检出操作,并在运行导致冲突的操作之前更改HEAD
(检出提交),从而导致“ us”和“ them”出现互换或向后移到未经训练的眼睛。 / em>
git merge
(直观):
示例命令:
git checkout master
git merge feature_branch # merge feature_branch into master
“我们” = HEAD
= master
,因为您在运行{{1}时位于分支master
上}。
“他们” = git merge feature_branch
,这是您要合并到feature_branch
的分支。
master
(直观):
示例命令:
git cherry-pick
“我们” = git checkout feature_branch
git cherry-pick some_commit # apply some_commit to feature_branch
= HEAD
,因为您在运行{{1}时位于分支feature_branch
上}。
“他们” = feature_branch
,这是您正在挑选到git cherry-pick some_commit
上的提交。
some_commit
(违反直觉的方法,但是一旦您了解其工作原理便完全有意义):
示例命令:
feature_branch
“我们” = git rebase
,它是上游分支: git checkout feature_branch
git rebase master # rebase feature_branch onto latest master
或HEAD
提交中的某些提交历史记录和master
上的提交哈希之前(这很棘手!)。这是因为,当您键入master
时, git首先会检出合并基础分支(该分支对master
和git rebase master
都是通用的被feature_branch
找到),然后从master
一次一次开始在该合并基础上挑选樱桃提交,从而将git merge-base master feature_branch
重新定为最新的feature_branch
。因此,“我们” = feature_branch
,但是由于git在后台进行了新的签出操作以执行此变基,因此master
并不是您所在的分支输入HEAD
。相反,我们或HEAD
是一些基于合并的提交,在该点发生冲突,而他们是另一个提交,这是来自git rebase master
,将按顺序应用于此新HEAD
。
“他们” =来自feature_branch
的一些提交,该提交将应用于新签出的HEAD
,其中feature_branch
是HEAD
进行重新设置期间的第一个Cherry-pick操作的结果,或者将这些新创建的提交之一合并到此合并基础之上,因为HEAD
被“重新设置”,或被选择一次一次提交到通用的基于合并的提交。参见上方的“我们”的说明。
git merge-base master feature_branch
(有点直观,但我仍在努力解决这一问题):
示例命令:
feature_branch
由于我不知道git revert
是如何在后台运行的,因此我仍在努力解决这一问题。如果您有见识,请在or as an answer here处将其添加为评论。
“我们” = git checkout feature_branch
# create a new commit to undo the changes from some_previous_commit
# within feature_branch
git revert some_previous_commit
= git revert
,因为您在运行{{1}时位于分支HEAD
上}。
“它们” =(相反或相反?)feature_branch
,这是您要还原其更改的提交(通过在其上创建新的提交来撤消) feature_branch
的顶部)。换句话说,“他们”似乎是git创建的一些短暂提交,与git revert some_previous_commit
相反,以撤消some_previous_commit
的更改。
feature_branch
] Who is `them` and `us` in a `git revert`?期间“他们”和“我们”的含义的回答some_previous_commit
,而“他们/他们”始终是另一个分支或提交)Who is `them` and `us` in a `git revert`? some_previous_commit
和git revert
的理解,我反复核对的先前存在的答案] Who is "us" and who is "them" according to Git?