在这里介入一下,因为我每天都要为多个项目和多个分支使用Bitbucket,所以我会给你我的建议。
如果你从Bitbucket上checkout(即创建一个分支),那么你应该可以使用他们提供的命令,就像你在示例中复制的那样。 但是,由于初始checkout之后很可能会切换分支、创建分支,你的本地库将失去同步,我建议您使用以下终端命令:
git checkout develop
或者你需要的任何分支git fetch && git pull
即获取所有分支和最新更改,以及从你当前的分支中拉取所有更改。是的,这看起来像是重复的工作,但是从Bitbucket的工作经验来看,这是确保你拥有你正在操作的分支的最新内容的最安全、最合理的方式。
话虽如此,你应该总是创建分支,而不是直接推送到你的develop
或master
分支。
假设你在develop
分支上,并且你已经通过切换分支、获取和拉取最新内容完成了上述操作,然后你可以使用标准的git checkout -b my-feature-branch
从主分支上创建一个分支。
以下是我们公司的做法示例:
git checkout develop
git fetch && git pull
git checkout -b feature/JIRA_ISSUE_NUMBER-update-layout-for-this-page
git fetch
命令会拉取在 Bitbucket(本例中)上创建的远程分支的引用。
git checkout
命令将当前目录切换到特定的分支或特定的提交(根据参数而定)。
这里发生了什么?当您在 bitbucket 上创建一个分支时,他们会提供给您该命令,因为:
1- 该分支是在远程存储库上创建的。您的本地存储库副本尚未拥有该新分支。这就是 git fetch
命令的用途。
2- Bitbucket 假定,由于您刚刚创建了该新分支,您将立即在其上工作,并且需要告诉您的本地存储库。这就是 git checkout
命令的用途。
这不是实现它的唯一方法。例如,您可以通过使用以下方式避免使用 git fetch
命令:
git checkout -b {new_branch_name} && git pull origin {new_branch_name}
这可能不是最实用的方法,但可能会让您对这些命令的工作原理有更好的了解。
git fetch
会从远程位置拉取所有更改。
git checkout
可以切换到不同的分支(或恢复文件到之前的状态,这取决于你的使用方式)。
使用 fetch 和 checkout 来切换分支并拉取所有更新的文件。只使用 checkout 来切换分支,但仍然继续在本地版本上工作。
git fetch
命令会从远程更新 origin/<branch_name>
。而 git checkout
命令可以用于切换分支。两者没有任何关联,除非你试图切换到一个在远程新创建的分支,而它的本地版本不存在于你的系统中。
然而,当你执行 git pull
命令(或 git fetch
和 git rebase
命令),然后使用 git checkout -b <another_branch>
创建一个新分支时,你确保你的新分支是基于最新稳定代码版本的。