在创建一个我也需要在其上查看最新更改的新分支后,从 master 拉取到我的本地存储库是否安全?

Is it safe to do a git pull from master to my local repo after creating a new branch on which I need to see the latest changes too?

我想从我本地的远程仓库获取最新更新。我通常在 master 分支上执行 git pull,然后创建一个新分支。我现在已经创建了一个新分支(在本地代码中没有 add/change 任何内容)但是在此之前跳过了 git 对 master 的拉取。如果我执行 git pull,最新的远程修改是否会反映在我的新本地分支和本地 master 上,还是我应该删除它并在 git pull 之后重新创建它? 谢谢!

Git 将尝试将远程 master 合并到您的本地新分支。由于您没有任何更改,因此您只需将当前的远程主机获取到您的分支即可。

git 将执行的操作取决于您发出的 确切 命令,以及您的 git 配置。

关于pull首先要了解的是,它更新当前分支。如果您签出 master,然后签出 pull,您提取的更改将合并到 master(但不是您的分支)。如果您签出您的分支然后 pull,更改将合并到您的分支中(但不是 master)。当然,这就是分支的意义所在——对一个分支的更改不会自动影响另一个分支。如果你想影响两者,你可以(见下文了解更多)。

此外,您可以告诉 git 将哪些更改合并到当前分支中,或者如果您未指定,那么它将查找与当前分支对应的已配置默认值。 (有些人似乎认为这种默认行为是 pull 所做的一切,这会给他们带来麻烦。)所以如果你想将远程 master 的更改集成到你的分支中,你可以这样做

git checkout my_branch
git pull origin master

我通常不推荐这种用法。它基本上是 shorthand for

git checkout my_branch
git fetch 
git merge origin/master

更明确一点(因此较少依赖配置细节等)。我经常使用 pull,但仅用于其在 configuration/branch 设置为 "typical".

的回购协议中的默认行为

现在,如果你想让origin/master的变化反映在多个分支上,那么你必须执行多次合并(and/or rebase)操作;而给定的 pull 只做一个。所以通常你会先将更改放入本地 master

git checkout master
git pull

(或者,根据配置,您可能需要 git pull origin 甚至 git pull origin master)。然后您可以通过

将它们合并到分支中
git checkout my_branch
git merge master

git rebase master my_branch