git - 我的 git 工作流程是否正确并符合我的团队?

标签 git

我正在帮助一些人完成一个项目,但我以前没有合作使用过 Git,所以我很生疏,想把这件事做好。

背景

没有 fork 。我被建议直接克隆 repo,然后分支。

origin/master包含当前版本的生产就绪代码

origin/develop包含下一个版本的最新开发更改的代码

我的 Git 工作流草稿

  1. 将存储库克隆到我的本地机器:

    $ git clone <origin-url>

  2. 创建新分支:

    $ git checkout -b newFeature develop

  3. 进行更改、暂存并提交它们:

    $ git add .
    $ git commit -m "<message>"
    
  4. 将更改推送到远程 newFeature 分支(该分支在原始存储库中尚不存在):

    $ git push origin newFeature
    
  5. 提交 merge 请求 origin/newFeature进入origin/develop .

  6. 接受 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/

相关文章:

java - 我可以在局域网中使用git吗?

linux - 如果我是 root,如何为某些用户设置 SSH key ?

eclipse - EGit(Eclipse git 插件)可以使用 SSH key 而不是用户名和密码吗?

git - 我可以更改 Git 中的冲突标记吗?

git - 如何使用 GitLab CI/CD 获取整个存储库?

git - 如何使用某些提交创建标签并将其推送到源?

GitHub:是否可以在私有(private) Gist 上与某人合作?

git - checkin TFS2013 源代码控制会触发与单独的 TFS Git 存储库关联的 CI 构建

git - 我不小心用错误的用户帐户推送到了 git 存储库。我怎样才能撤消它或更改用户?

git - 我如何在 msysgit vim 中启用语法高亮和语法缩进?