【发布时间】:2011-10-09 12:00:58
【问题描述】:
我理想的工作流程是将更改提交到 dev 并仅通过 git merge --no-ff dev 将更改合并到 master,但偶尔会发生以下情况:
开发中
dev: git add .
dev: git commit -m "Cured cancer."
dev: git checkout master
master: git merge --no-ff dev
编写更多代码
master: git commit -a -m "Did something amazing"
哎呀,只是致力于掌握。如果我很幸运,我会立即意识到这一点,但如果我不这样做,我可以将分支推向上游,并在顶部再进行 10 次更改。所以这以远程结束:
Master -------- Merge --- commit - commit --------------- Merge
Dev \ Commit/ \ commit - commit /
虽然它应该看起来像这样:
Master -------- Merge ------------- Merge --------------------- Merge
Dev \ Commit/ \ commit commit / \ commit - commit - commit /
如何消除人为因素(即我的愚蠢)并阻止自己提交到 master 分支?我在 Ubuntu 上。
【问题讨论】:
-
我能问一下为什么它很重要吗?没有人看到您提交到哪个本地分支,所以如果您最终以任何方式推送到 master,那么您在本地进行原始提交真的很重要吗?
-
@CharlesBailey:使用 git 的一个主要好处是能够创建有意义的历史记录,从而更好地控制代码的共享和集成方式。如果一个提交意外地以 10 个更改结束在 master 中,如果该功能还没有准备好发布而其他 10 个更改已准备好,那么将其分离出来会变得很尴尬。
-
@MarceloCantos:我不同意你所说的,但我不明白原始提交在哪个分支上会影响“撤消”操作的难度。
-
@Charles Bailey - 这就是我们的开发流程的设置方式。你提交到你自己的 dev 分支并将它们合并到 master 中。当 master 上有一堆微小的提交时,它也会产生一些噪音。撤消操作的难点在于,如果有人在我推后拉了主人,所以如果我尝试撤消他们可能已经拉了主人,这会导致冲突。我在实际实践中并没有那么在意,如果提交历史是一致的就好了。
-
@Charles Bailey - 哦,他们确实看到了哪个提交去了哪里。我的本地 master 跟踪远程 master,我的本地 dev 跟踪远程 dev。
标签: git version-control ubuntu-11.04