我想从我当地的远程仓库获得最新的更新。我通常在主分支上执行git pull,然后创建一个新分支。我现在已经创建了一个新分支(没有添加/更改本地代码中的任何内容)但在此之前跳过了master上的git pull。如果我执行git pull,最新的远程修改是否会反映在我的新本地分支和本地主服务器上,还是应该删除它并在git pull之后重新创建它?谢谢!
git会做什么取决于你发出的确切命令,以及你的git配置。
关于pull
的第一件事是,它更新了当前的分支。如果你查看master
然后pull
,你拉的变化将被合并到master
(但不是你的分支)。如果你检查你的分支然后pull
,更改将被纳入你的分支(但不是master
)。当然,这是分支点 - 对一个分支的更改不会自动影响另一个分支。如果你想影响两者,你可以(见下文了解更多相关信息)。
此外,您可以告诉git要将哪些更改合并到当前分支中,或者如果您未指定,那么它将查找与当前分支对应的已配置默认值。 (有些人似乎认为这种默认行为都是pull
所做的,这可能会让他们陷入麻烦。)因此,如果你想将远程master
的更改集成到你的分支中,你可以做到
git checkout my_branch
git pull origin master
我通常不建议这种用法。它基本上是一个简写
git checkout my_branch
git fetch
git merge origin/master
这更加明确(因此不太依赖于配置细节等)。我使用pull
相当多,但仅限于其配置/分支设置为“典型”的repos中的默认行为。
现在,如果您希望origin/master
更改反映在多个分支中,那么您必须执行多个合并(和/或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
Git将尝试将远程主服务器合并到您的lokal新分支。由于您没有任何更改,您只需将当前的远程主服务器提供给您的分支机构。