我有我不太了解的git行为:
我有生产分支B1。
git checkout B1
git checkout -b B2
我正在研究一个解决方案,将其与B1语言环境合并
git checkout B2
git rebase B1
git checkout B1
git merge B2
git branch -d B2
然后,我执行相同的例程-从B1创建分支B3,在B3上工作,然后与B1合并。现在发生了多个合并冲突(实际上是在每次B2提交之间)。因此,我像对B2一样重新定标并合并它们。 代码被感激地拉动,git status显示B1或B3上没有任何提交。
后来,当我的同事撤出B1时,他再次面对了所有合并冲突。一场噩梦,我虽然不应该发生。
有人知道如果没有解决提交的提交,合并冲突怎么可能移到远程了?我想回想一下我没有重复过的(可能很严重的)错误^^
___ edit 故事表单控制台:
git checkout -b B2
git add file1
git commit -m "b2c1"
git rebase B1
git add file1
git commit -m "b2c2"
git push
git rebase B1
git checkout B1
git pull
git checkout B2
git rebase B1
git add file1
git commit -m "b2c3"
git rebase B1
git merge B1
git push B1
git checkout B1
git pull
git merge B2
git push
git branch --merged master
git branch -d B2
git checkout -b B3
git pull
git add file1
git commit -m "b3c1"
git push
git rebase -i HEAD~5
git push -f
git add file1
git commit -m "b3c2"
git add file2 file3 file4
git commit -m "b3c3"
git stash
git pull
git push
git checkout B3
git stash push
git stash save
git stash apply
git checkout B3
git rebase B1
git checkout -- .
git checkout B1
git merge B3
git push
沿着这些路线,我不得不压缩更多的线路,否则将会是200/400的线路日志。
答案 0 :(得分:0)
git add file1
git commit -m "b2c1"
git rebase B1
由于 b2c1 的直接父级是B1,因此不需要 rebase 。假设B2是在初始步骤中从B1创建的。
git commit -m "b2c2"
git push
git rebase B1
为什么要在 push 之后执行 rebase ,这很不直观。我建议不要先进行推送,然后再按照推送
的方式设置本地历史记录,然后再发布git checkout B1
git pull
好的,这将根据远程当前拥有的内容更新您的本地 B1 。
git checkout B2
git rebase B1
这是我认为实际上有必要的第一个变基,但前提是 B1 已更改。
git add file1
git commit -m "b2c3"
git rebase B1
同样,您有不需要的 rebase
git merge B1
此时您无需将 B1 的 B 合并到 B2 ,因为 B1 没变。
似乎您可能对git
及其运作方式有一些基本的误解。如果您是git
的新手,那并不奇怪。我花了一些时间把头缠住它。
我建议您看看 Pro Git 书:https://git-scm.com/book/en/v2
帮助理解一些基本概念。
我最好的建议是尝试使事情保持简单,原子化和故意化。牢记这些事项将极大地帮助您。
git push B1
git checkout B1
git pull
git merge B2
git push
git branch --merged master
git branch -d B2
git checkout -b B3
git pull
git add file1
git commit -m "b3c1"
git push
git rebase -i HEAD~5
git push -f
git add file1
git commit -m "b3c2"
git add file2 file3 file4
git commit -m "b3c3"
git stash
git pull
git push
git checkout B3
git stash push
git stash save
git stash apply
git checkout B3
git rebase B1
git checkout -- .
git checkout B1
git merge B3
git push