在过去的几天里,我一直在考虑与Git进行变革.反驳的大多数论据都说它清理历史并使其更加线性.如果您进行简单合并(例如),您将获得一个历史记录,显示历史记录何时分歧以及何时将其重新组合在一起.据我所知,rebasing删除了所有历史记录.问题是:为什么你不希望回购历史反映代码开发的所有方式,包括它在哪里以及如何分歧?
我试图找出适合这种情况的工作流程:
在共享仓库中,我们有这些分支:
-master
-feature
Run Code Online (Sandbox Code Playgroud)
该功能分支是一个共享的分支,因为许多开发商都上了一个新的功能一起工作.他们正在积极地将他们的更改推送到功能分支.
这个功能最终被合并回主人的那一天,我试图避免"冲突地狱" .目前,我看到一些选择:
1)主动将master合并到功能中,并经常进行.但是,这不建议在git文档中使用,我开始明白为什么.当我尝试这个时,我似乎一遍又一遍地解决同样的冲突.
2)以某种方式使用rebase.我已经阅读了这篇文章,但由于功能分支实际上是共享的,所以看起来它不会工作.所需要的只是一个开发人员做2个rebase,而其他开发人员可能会因不匹配的历史而产生冲突.
3)将功能分支转换为集成分支,让开发人员使用自己独立的功能分支进行变基,以保持理智.
4)完全不同的东西?
我做了一些搜索,发现:
git log myBranchName
Run Code Online (Sandbox Code Playgroud)
作为可能的解决方案.但是当我的分支是主分支时会发生什么?当我跑:
git log master
Run Code Online (Sandbox Code Playgroud)
它似乎返回所有提交给任何分支的东西.根据我读过的内容,它列出了与主分支相关的所有提交.知道了,我怎么才能调出主分支的提交历史记录?
我对这种行为感到好奇,也许这只是因为我主要来自使用SVN和集市.(我正在学习git与优秀的github接口.)
这对我来说似乎有点直观,好像它会更好
git merge [branch] --no-commit
作为默认设置,鼓励人们确保合并在提交之前按照他们想要的方式进行.
我在git中有两个分支:master和custom_branch.
有人添加了一些代码master,我需要在我的代码中使用custom_branch.我试过这个:
git branch custom_branch
git merge master
Run Code Online (Sandbox Code Playgroud)
但当我这样做时,它说:
Already up-to-date.
Run Code Online (Sandbox Code Playgroud)
但是,当我比较master和custom_branch的变化还是不存在.我错过了什么?
PS我不想,rebase因为其他人也使用这个分支.
我总是使用git rebase来同步我的代码,我发现git stash保存了当前的工作,在从master获取最新的代码后,我们可以使用它将它与我们的代码合并git stash pop.
假设序列是:
git stash,即我当前的工作得救了git checkout master那么git pull master,即我从master获取了最新的代码git checkout mybranchgit stash pop我想这会将我的工作与更新的代码合并,如果不是git stash pop我会这样做,
git rebase master那么结果是否相同?
您的建议和帮助将不胜感激,谢谢您的时间.
我看看你什么时候使用git rebase而不是git merge? .
但我想确定在这种情况下选择哪种解决方案:
我想实现一个新功能,master所以我将它分支到一个新的功能分支.
我在功能上做了10次提交,而其他人在Master上做了其他提交.
我的问题是,如果我想将我的分支与Master分开以进行测试,但我需要使用集成的新Master提交来测试它.那么,我应该将Master合并到Feature(而不是Feature to Master,它会在我的测试之前对master进行修改)或者做一个rebase?
我有一个拉请求,Github说它无法自动合并.这个改变主要是一些提交,但没有冲突.
手动合并我没有任何冲突,我得到这个输出:
(on master)
$git merge otherbranch
[vim pops up for commit message, :wq]
Auto-merging <file>
Merge made by the 'recursive' strategy.
<file> | 1 +
1 file changed, 1 insertion(+)
Run Code Online (Sandbox Code Playgroud)
这就是为什么Github无法自动合并的原因?它无论如何都会从命令行自动合并.这对Github来说不够自动吗?
我正在寻找可以在git中工作的具体示例合并,但会导致SVN中的冲突.除此之外,您在Git中从未尝试过的艰难/痛苦的SVN合并样本也没问题.
我可以识别出与我的问题相关的四类合并:
我在这里错过了任何场景吗?
找到1-3的样本是微不足道的(在评论中找到2的样本,3作为我的答案的一部分,1几乎是任何rebase).有没有人为一个成功的纵横交叉合并提供样本(看起来不是学术上的),这会在SVN中失败?
在将功能分支合并回主分支后,我通常需要默认执行合并提交.但我想在此提交中使用来自我的功能分支的原始提交消息,而不是"merge branch XXX".
我该怎么办?