我们正在尝试使用git octopus合并来构建一个流程来整合常规版本的许多主题分支.当发生冲突时,似乎没有输出哪些分支发生冲突.在章鱼合并之后,有没有人知道确定冲突来自哪些分支的方法?
谢谢,-Kal
我想我使用rebase压缩了最后40次提交.我遵循本指南以确保我没有做任何愚蠢的事 - http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html
问题是,我认为我做了一些愚蠢的事.
无法保存(交互式)文本文件,因此似乎rebase失败了,但它给出的消息和下面的一些其他内容表明它可能有效.
不知道我在哪里或做什么(甚至我的名字是什么).这是我做的:
命令行显示某种成功(不幸的是我丢失了消息).我不知道它如何成功或知道我保存的文件在哪里...
git rebase - 继续说"没有进行任何改变?
git reflog建议它有效(据我所知至少,'rebase'这个词在最近的40多次提交中显示)例如:
9992445 HEAD @ {8}:rebase:报告工作
git log显示了所有40个提交我刚刚'重新'这看起来不太好.有谁知道我在哪个州?我是不是很清楚,这是一个僵尸变形吗?
在git docs(以及众多SO线程)中,建议使用此重置方法:
$ git reset --soft HEAD^ ;# go back to WIP state <2>
$ git reset <3>
Run Code Online (Sandbox Code Playgroud)
0.2.这将从提交历史记录中删除WIP提交,并将工作树设置为创建快照之前的状态.
0.3.此时,索引文件仍包含您作为快照WIP提交的所有WIP更改.这将更新索引以将您的WIP文件显示为未提交.
https://www.kernel.org/pub/software/scm/git/docs/git-reset.html
显然这很好,但似乎这两个命令可以被替换
$ git reset HEAD^
Run Code Online (Sandbox Code Playgroud)
(相当于)
$ git reset --mixed HEAD^
Run Code Online (Sandbox Code Playgroud)
这应该将HEAD指针和索引重置为先前的提交.实际上这个命令和前两个命令的结果有什么区别吗?如果没有,是否有理由更喜欢两阶段流程?或者它只是在文档中以这种方式完成,以明确说明--soft的行为?
上下文: 在GitHub上启动项目并且一直在试验git命令.该项目的历史是凌乱的.
问题:如何删除所有历史记录并将所有提交消息替换为"已上载项目源的初始版本"?
当我压缩分支中的提交(使用 git rebase -i)时,我总是很恼火,因为压缩的提交与旧的提交而不是新的提交结合在一起。
我不明白为什么要这样设计。当我提交正在进行的工作 (WIP) 时,它表示未编译或未完成的代码。当我最终承诺“它终于起作用了!” 在合并之前进行提交和压缩,将这些 WIP 提交合并到“它终于可以工作了!”中更有意义。提交,而不是与之前的提交合并。压缩 WIP 本质上是用我知道无法编译的代码“破坏”了之前的提交。
为了解决这个问题,我的工作流程是压缩来自“它有效!”的提交。一直回到第一次 WIP 提交之前的状态。但这不是很愚蠢吗?其他人在做什么,这使得将 WIP 压缩到之前的提交有意义?
它必须非常明显,但我发现无法做到这一点.每个手册都将变基描述为现有分支或简单交互式变基的顶部,这就是全部.假设,我有一个类似钻石形状的git历史:
* 949430f Merge commit (D) (HEAD, mybranch)
|\
| * e6a2e8b (C)
* | 3e653ff (B)
|/
* 9c3641f Base commit (A)
Run Code Online (Sandbox Code Playgroud)
我希望像以下一样保持历史:
* 949430f Combined commit (BCD)
|
* 9c3641f Base commit (A)
Run Code Online (Sandbox Code Playgroud)
提交B和C可能会被融化或丢弃,无所谓,我只想保留结果.此外,我不想因为令人讨厌的恐慌解决而还原提交.
这里我试过的事情:
1)我不能通过简单压扁B和C来避免这种情况
git rebase -i HEAD~2
...
p 3e653ff (B)
f e6a2e8b (C)
...
Could not apply a91f3a4
Run Code Online (Sandbox Code Playgroud)
嗯,这有点可以理解,有一些冲突.
2)我无法通过压扁来解决这个问题.
git rebase -i -p HEAD~3
...
pick 9c3641f Base commit (A)
f 3e653ff (B)
f e6a2e8b (C)
pick 949430f Merge commit (D)
...
error: …Run Code Online (Sandbox Code Playgroud) 我正在学习git并且遇到了git soft reset并修改了git中的提交.我看到他们两个都是为了同一个目的.两者之间有任何显着差异.请告诉我,因为我无法看到两者之间有任何区别.