git - 对 git 中的分支感到困惑

标签 git github

所以,我有一个从 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 到主分支。 enter image description here

你可以看到你要 merge 到哪个分支: enter image description here

关于git - 对 git 中的分支感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59737572/

相关文章:

Git Flow 发布完成 - 权限被拒绝

git - 浅克隆后推送到 github

css - 如何在 Markdown 中链接图像并调整图像大小?

github - 在多个 Github 存储库中搜索

git - 从 master 分支更新 develop 分支,而不会丢失 develop 中的任何更改

xcode - git 与 xcode 快照

java - CI/CD - 在发布分支、管道或源代码构建上标记 jar Artifact ?

git - 有人可以在 github 上推送我的项目吗?

git - git blame --incremental 输出中的 sourceline 和 resultline 是什么?

git - 在重置之前将 git 重置撤消至未提交状态?