Git Fetch 与 Git Fetch Origin

标签 git version-control

我想获取一个远程分支,然后在与某人共享时根据该分支重新调整我当前的工作分支。通常我会这样做:

git fetch

git rebase origin/branch_im_working_on

这似乎工作正常,但它似乎从远程存储库获取所有分支。所以我环顾四周,发现了这个:

git fetch originbranch_im_working_on

当我这样做时,git 告诉我它获取了 HEAD,然后尝试执行以下操作:

git rebase origin/branch_im_working_on

git 告诉我,我是最新的,即使我知道有更改推送到远程,也没有什么可做的。

如果我尝试这样做:

git rebase originbranch_im_working_on

我遇到了很多 merge 冲突,因此不得不求助于原始命令来使我的分支保持最新状态:

git fetch

git rebase origin\branch_im_working_on

有人可以帮助我理解这里发生了什么吗?

最佳答案

git fetchgit fetch origin 之间的区别

  • 如果 git 仓库只有一个远程来源(您可以通过 git remote -v 检查远程),则这两个命令的工作方式相同。
  • 如果 git 存储库包含多个 Remote ,例如有 Remote originupstreamgit fetch 将从远程 originupstream 获取所有更改。 git fetch origin 只会从远程 origin 获取更改。

此外,如果您只想从远程获取某个分支,可以使用git fetch Remotename Branchname。例如git fetch originbranch_im_working_on只会从originbranch_im_working_on获取更改。

在远程分支顶部重新调整本地更改:

假设获取后提交历史如下所示:

…---A---B---C---D  branch_im_working_on
         \
          E---F   origin/branch_im_working_on

如果您希望本地更改(提交 C 和提交 D)位于 origin/branch_im_working_on 顶部(最新提交),以下任何一个命令都可以正常工作:

git rebase origin branch_im_working_on
git rebase origin/branch_im_working_on
git fetch origin branch_im_working_on --rebase

那么提交历史记录将是:

…---A---B---E---F---C---D  branch_im_working_on
                |
     origin/branch_im_working_on

但是命令git rebase origin\branch_im_working_on无法工作(对于Windows操作系统),因为origin\branch_im_working_on不是有效的分支(既不是本地分支,也不是跟踪分支)。

关于Git Fetch 与 Git Fetch Origin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47469380/

相关文章:

python - 如何为我用于多个不同项目的模块创建本地 Python 包

svn - 我可以删除我的 Assembla 帐户中的文件夹和文件吗?

git - "git subtree pull"和 "git pull -s subtree"有什么区别

git - "git add -A :/"是做什么的?

git - Bitbucket:远程 repo 中的冲突,无法弄清楚如何解决

git - 有没有办法将 SourceGear Vault 导入/导出到 Git

linux - 检查 git apply 是否已经应用

windows - Windows 7 上的 ssh 问题(gitbash 与 windows cmd)

python - 在不更改 SHA 的情况下将文件和提交历史从一个 git 分支移动到另一个

svn - git/ftp 工作流逻辑