git rebase“;“由我们删除”;及;被他们删除;

git rebase“;“由我们删除”;及;被他们删除;,git,git-rebase,Git,Git Rebase,假设我正在对master上的experiment分支重新设置基址,并且文件中存在冲突。当然,这两个分支中都有被删除的文件。因此,当我解决冲突时,在git状态中,我看到被我们删除和被他们删除。这很令人困惑。有没有办法理解他们的意思?谁是他们,谁是我们 或者,在重新定基时,是否有其他方法可以知道哪个文件被哪个分支删除了?是否要打印分支机构名称?参考文档 请注意,重新基础合并通过重放来自 分支顶部的工作分支。因为这个,什么时候? 发生合并冲突时,报告为我方的一方是目前为止 以开头的重基系列,他们的是工

假设我正在对master上的experiment分支重新设置基址,并且文件中存在冲突。当然,这两个分支中都有被删除的文件。因此,当我解决冲突时,在
git状态
中,我看到
被我们删除
被他们删除
。这很令人困惑。有没有办法理解他们的意思?谁是他们,谁是我们

或者,在重新定基时,是否有其他方法可以知道哪个文件被哪个分支删除了?是否要打印分支机构名称?

参考文档 请注意,重新基础合并通过重放来自 分支顶部的工作分支。因为这个,什么时候? 发生合并冲突时,报告为我方的一方是目前为止 以
开头的重基系列,他们的是工作模式 分支机构。换言之,双方是交换的

(最新版本:)

因此,“被我们删除”的文件是那些在您重新设置基址的分支(最终分支)上删除的文件,“被他们删除”的文件是在您重新设置基址的分支(将被删除的分支)中删除的文件

示范
$ls
A.
$git log--oneline--graph--decoration--all
*d055cdd(磁头->y)在a文件中写入baz
|*a文件中的487dc8c(x)写条
|/  
*3fa0da5(主)在a文件中写入foo
$git rebase x
首先,倒带头部,在其上重放您的工作。。。
应用:在a文件中写入baz
正在使用索引信息重建基树。。。
我是
退回到修补基础和3路合并。。。
自动合并
冲突(内容):将冲突合并到
错误:未能在更改中合并。
修补程序在0001写入a文件时失败
在以下位置找到失败修补程序的副本:.git/rebase apply/patch
解决此问题后,运行“git-rebase--continue”。
如果您希望跳过此修补程序,请运行“git-rebase--skip”。
要签出原始分支并停止重定基址,请运行“git-rebase--abort”。
$cat a
>在一个文件中写入baz
$git结帐——我们的
$cat a
酒吧
$git结帐--他们的a
$cat a
巴兹
AFAIK没有使用官方工具显式显示分支机构特定名称的开关。除非我错了,否则这只是你需要学会克服最初困惑的事情之一


值得赞扬的是,如果你仔细想想,这确实很有意义

更迂腐的分析 手册页面的文本有点模棱两可,因为只有在使用
--merge
选项时,才能将其解释为相关。第二次提到
--strategy
中的行为会加剧这种情况:“请注意我们和他们的行为发生了逆转,正如上文提到的-m选项。”

然而,我相信这并不是git rebase在使用
--merge
时的行为与不使用时的行为的对比;相反,我认为这是在对比git rebase和git merge的行为。合并策略部分显然是从git MERGE手册页面上撕下来的,因此很容易想象作者在使用rebase时需要强调交换,因为在该部分中没有提到。对我来说,下面这句话证实了这一解释:“[…]git rebase使用给定的策略[…]在分支顶部重放来自工作分支的每个提交”

尽管我们现在理解合并策略应该不会对双方产生影响(只有git merge和git rebase的选择应该),但我要注意的是,不管怎样,默认策略都暗示了合并(使默认行为完全不含糊)。

下面是一个类似问题的副本:

当您合并时,
us
指您要合并到的分支,如 与它们相对的是要合并的分支机构

当您重新设置基础时,
us
指的是上游分支,而
this
指的是上游分支 你正在移动的树枝。这有点违反直觉的情况下 再基地

原因是git使用相同的合并引擎进行重新基化,并且 实际上,cherry把你的东西放在上游的分支上<代码>美国= 进入,
它们
=from


“为了他们的荣誉,这很有意义”-这不应该是“为了我们的荣誉…”:-)“为了我们的荣誉,如果他们想一想,这很有意义。”
如果你想一想,这很有意义。
不,当然没有。尤其是对yourstruly编写的分支进行重定基址时。因此,关键的见解是,重基就像检查上游分支,然后从当前分支中挑选每个提交。从这个角度看,工作分支(我们的)是上游分支,而另一个分支(我们从中挑选)是“外国”分支(他们的)。一旦重新基址完成,git将重置新分支上的头并将其签出。这是一种非常机械化/程序化的理解,但我坚持“值得赞扬的是,如果他们考虑一下,这确实很有意义”的说法@sampablokuper报价中的措辞肯定没有可能的那么清楚,但我在参考文档中找不到其他报价。我试图对文本进行更迂腐的解释,希望更令人信服地确认,无论是否使用
--merge
,引用事实上是相关的<代码>--merge默认情况下是隐含的,但如果您想更充分地说服他人,可以使用非默认策略测试重新基准冲突解决方案,而这并不意味着这一点。如果你能找到更好的措辞,我会投票给你一个参考文档的小补丁。另外:
$ ls
a
$ git log --oneline --graph --decorate --all
* d055cdd (HEAD -> y) Write baz in a-file
| * 487dc8c (x) Write bar in a-file
|/  
* 3fa0da5 (master) Write foo in a-file
$ git rebase x
First, rewinding head to replay your work on top of it...
Applying: Write baz in a-file
Using index info to reconstruct a base tree...
M   a
Falling back to patching base and 3-way merge...
Auto-merging a
CONFLICT (content): Merge conflict in a
error: Failed to merge in the changes.
Patch failed at 0001 Write baz in a-file
The copy of the patch that failed is found in: .git/rebase-apply/patch

When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".
$ cat a
<<<<<<< HEAD
bar
=======
baz
>>>>>>> Write baz in a-file
$ git checkout --ours a
$ cat a
bar
$ git checkout --theirs a
$ cat a
baz