所以,我有一个从 master 分支 checkout 的分支。
大师
- 模特
我对模型 进行了一些更改。现在,我已经完成了必须在 models 分支中完成的工作。
同样,我将创建下一个分支并在那里做一些工作,然后推送到该分支本身。
那么,接下来我该做什么呢?
- 我应该这样做吗?
git pull origin models
git checkout master
git merge models
git pull origin nextBranch
git checkout master
git merge nextBranch
现在,有人说,“永远与大师保持同步”。我不明白那是什么意思。我们不会强制任何人掌握,对吧?我们正在 push 本地分支机构。另外,我看到人们总是在做 git pull origin master
。有人可以向我解释正确的工作流程吗?
.
我不知道,我只是很困惑。
最佳答案
我认为混淆来自使用 git 的不同风格。其中一些是因为个人喜好,还有一些是因为不同的工作流程(例如在本地工作或使用远程工作,或使用 gitflow)。
那么,关于您询问的命令的一些信息:
-
git pull origin master
- 这会将本地主分支更新为与远程主分支相同。假设您不直接在本地 master 分支上工作,这应该始终有效并为您提供最新的可用更改。 -
git pull origin <other_branch>
- 与上一个项目符号相同,但用于另一个分支。它获取本地分支的远程副本,将远程更改与本地更改 merge ,为您提供包含更改的最新分支。基本上,这就像在远程分支上保存一些工作,进行一些本地更改,然后根据这两个更改创建一个新文档。你可以强制它做rebase
而不是通过传递标志git pull --rebase origin master
进行 merge
在本地工作(没有云)
所以基本上,当你完成了一个 bug 的功能时,你想要执行以下操作:
- 在原点获取并 merge 您要 merge 的分支的最新保存更改(为您提供所有更改)[
git pull origin models
] - 移动到主分支[
git checkout master
] - 将功能分支 merge 到主分支(这样功能将成为主分支的一部分)[
git merge models
]
只要您单独工作并且不打算让其他人审核您的更改,这就会按预期工作!
与他人合作
如果您打算与其他人合作,您可能希望有人检查您的更改,以确保在将新功能 merge 到 master 分支之前一切都按预期工作。
所以你不想git merge models
到您的本地主分支,但在远程 git 服务上创建 pull 请求并将远程功能分支与远程主分支 merge (在代码审查)。有道理吗?
这是远程执行此操作的方法(在本地比较简单,但在服务本身上有额外的步骤): (应该在功能分支上完成)
# get all the features that got merged into the master branch remotely (by other users) and merge them into your feature branch
git rebase origin/master
# get the latest changes (saved by you on a different machine) from the cloud and merge with local changes:
git pull origin models
# commit all the new changes locally
git add .
git commit
# push back to the cloud!
git push origin
现在在 Github 上,您可以创建 pull 请求(您会看到执行该操作的提示)。代码审查后,您可以单击“merge merge 请求”将此分支 merge 到主分支。
关于git - 对 git 中的分支感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59737572/