【问题标题】:How to Git pull from master on a dev branch if you had set a different upstream?如果您设置了不同的上游,如何 Git 从开发分支上的 master 拉取?
【发布时间】:2021-08-24 12:16:51
【问题描述】:

一开始我在 master 分支上。然后,我创建了一个新分支newBranch 并切换到它。然后我提交了我的更改并推送。

现在,我的问题是如何从master 中提取更改。我做了git fetch,这似乎工作正常,但是当我做git status时,它只显示了我的newBranch的变化。我希望能够将更改从 master 提取到 newBranch

这是我在终端中输入的命令:

$ git branch -a

* master
  remotes/origin/HEAD -> origin/master


$ git fetch

$ git pull

$ git switch -b newBranch

$ git branch -a

  master
* newBranch
  remotes/origin/HEAD -> origin/master 


$ git add *

$ git commit -m "First commit"

$ git push --set-upstream origin newBranch

$ git fetch origin master
From git.domain.com:dev-folder
 * branch            master     -> FETCH_HEAD


$ git status   # This command doesn't show changes from master ???
On branch newBranch
Your branch is up to date with 'origin/newBranch'.

【问题讨论】:

  • git fetch origin master 仅获取更改。您需要将其合并到 newBranch 才能看到这些更改。
  • 你的分支是否领先于master?
  • 我的分支不在前面,但我所做的提交只推送到我的分支,因此这些更改不在master
  • 它必须在master之前,因为它是master的分支并且添加了一个commit?
  • 也许我只是不明白 ahead 是什么意思,但是当我在 master 上时,我先做了 git fetchgit pull,然后我对代码进行了更改,然后我创建了切换到新分支。之后我提交并推送。

标签: git version-control


【解决方案1】:

git fetch 命令将提交(及其关联对象)从远程存储库下载到您自己的存储库中,但它不会将它们合并到当前分支中。这就是git pull 命令的用途:

将来自远程存储库的更改合并到当前分支中。在其默认模式下,git pullgit fetch 后跟 git merge FETCH_HEAD 的简写。

在您的情况下,您可以将来自 origin/master 的提交合并到您的本地 newBranch 分支中:

git pull origin master

相当于运行git fetch origin,后跟git merge origin/master

如果您希望在origin/master 之上rebase 您的本地提交,您可以告诉git pull 进行rebase 而不是合并:

git pull --rebase origin master

同样,这相当于运行 git fetch origingit rebase origin/master

【讨论】:

    猜你喜欢
    • 2018-01-20
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 2013-10-12
    • 2019-06-06
    • 2020-09-16
    相关资源
    最近更新 更多