我已经开始玩Git并遇到过"上游"和"下游"这两个词.我之前见过这些,但从未完全理解它们.这些术语在SCM(软件配置管理工具)和源代码的上下文中意味着什么?
过去我错误地分支了,并且在另一个分支的开头留下了一个提交:
* 03431cb (HEAD -> bar) a2
| * d332e4d (foo) b2
| * 9b29ae3 b1
| * 4656a98 a1
|/
* 6ebca20 (master) root
Run Code Online (Sandbox Code Playgroud)
我如何才能将a1出foo成bar,使bar的历史root -> a1 -> a2和a1不foo?是否可以通过一次 git commit 来完成?
这不会被推送,因此无需担心破坏其他人的本地存储库。
我首先想到这样做的樱桃挑选a1,然后修正之间的秩序a2和a1。问题在于,这两个提交在我的真实案例中发生冲突,我必须在进行樱桃挑选和切换订单时纠正冲突。
bash中的mwe:
* 03431cb (HEAD -> bar) a2
| * d332e4d (foo) b2
| * 9b29ae3 b1
| * 4656a98 a1
|/
* 6ebca20 (master) root
Run Code Online (Sandbox Code Playgroud) 我正在学习变基,并看到了在功能分支上进行变基然后将其合并到主分支中的工作流程(作为示例):
git checkout feature
git rebase master
git checkout master
git merge feature
Run Code Online (Sandbox Code Playgroud)
然而,我看到最后一个命令的另一个类似选项是(而不是“git merge feature”):
git rebase feature
Run Code Online (Sandbox Code Playgroud)
在这种情况下,最后一部分有何不同?结果不会是与 master 之上的功能提交相同的线性时间线吗?