我正在帮助一些人完成一个项目,但我以前没有合作使用过 Git,所以我很生疏,想把这件事做好。
背景
没有 fork 。我被建议直接克隆 repo,然后分支。
origin/master
包含当前版本的生产就绪代码
origin/develop
包含下一个版本的最新开发更改的代码
我的 Git 工作流草稿
将存储库克隆到我的本地机器:
$ git clone <origin-url>
创建新分支:
$ git checkout -b newFeature develop
进行更改、暂存并提交它们:
$ git add . $ git commit -m "<message>"
将更改推送到远程 newFeature 分支(该分支在原始存储库中尚不存在):
$ git push origin newFeature
提交 merge 请求
origin/newFeature
进入origin/develop
.接受 pull 请求后删除本地分支:
$ git branch -d newFeature
问题
我认为我需要确保我的本地
develop
是否正确?分支是最新的origin/develop
在我推高我的newFeature
之前分支?这样,我将帮助我的同事避免 merge 冲突并允许快速 merge ?执行此操作的最佳方法是什么?我应该 pull
origin/develop
吗?定期分支到我的本地机器?当我尝试推送分支时,Git 会通知我代码不是最新的吗?它会阻止推送吗?
是否需要分支
develop
具体来说,在第 2 阶段?我只使用这个命令有关系吗?$ git checkout -b newFeature
最佳答案
Am I right in thinking that I need to ensure my local develop branch is up to date with origin/develop before I push up my newFeature branch? This way, I will help my colleague to avoid merge conflicts and allow for a fast-forward merge?
是的。在你推送之前:
git checkout develop
git pull origin develop
git checkout newFeature
git rebase develop
这假设没有其他人像在您的场景中那样在 newFeature
上工作。如果其他人也得到了你的分支,那么 rebase
可能需要与他们进行额外的沟通,或者你可能会(尽管我个人讨厌那样,因为它在所有层面上都是完全错误的,尽管大多数人都这样做以这种方式),将 develop
merge 到 newFeature
中。
What is the best way to do this? Should I pull the origin/develop branch to my local machine at regular intervals?
当然。使用 git,您可以尝试尽可能频繁地提交、 pull 和推送。你做的越早,你得到一个让你无路可走的怪物 merge 的可能性就越小(从某种意义上说,你无法理解巨大的变化做了什么)。较小的单元更容易处理。
Will Git notify me that the code is not up to date when I try to push the branch? Will it block the push?
是的,它不会允许这样做并给你一个有意义的信息。你只能快进,或者,如果快进是不可能的(即,你发散了),你可以做一个强制 push ,这就像更换目标一样,会让你和你的同事有麻烦除非你是“万物之主”。您永远不能在推送时进行隐式 merge ,这是设计使然的“非此即彼”。
请注意这里的异常(exception)是“您的”newFeature
分支,假设您是唯一一个在处理它的人。然后,在如上所示的 rebase 之后,您将恰好遇到这种“阻塞”情况,您必须在推送时使用“--force”才能将其发送到远程。只要没有其他人 pull 你的分支并在上面工作,这就很好。
Is it necessary to branch off develop specifically, at stage 2? Does it matter if I just use this command?
git checkout -b newFeature
这个命令从你工作目录中的当前分支分支出来,所以理论上如果你感到困惑它可能会出错。克隆后,默认情况下,master
分支处于事件状态。所以是的,您需要明确指定 develop
,或者事先执行 git checkout develop
。
关于git - 我的 git 工作流程是否正确并符合我的团队?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42580812/