我有一个远程分支 1.4
我做了一个 git fetch origin
结果:
13b1449..51618fe 1.4 -> origin/1.4
然后我做了一个git rebase 13b1449
git 回应Current branch 1.4 is up to date
然后我做了一个git pull origin 1.4
,它带来了 3 个文件。
fetch & rebase 没有用它从远程服务获取的内容更新我的分支,我做错了什么?
13b1449
是您本地提交的哈希值。“远程”提交是51618fe
- 您作为origin/v1.4
.
您的rebase
命令没有任何效果(您要求 git 根据当前提交重新设置基准),pull
另一方面,正确地向前移动了您的本地分支。
为避免混淆,您可以使用分支名称,而不是使用散列:
git rebase origin/v1.4
git
有几个选项可以在您拉动时应用 arebase
而不是 a 。merge
$ git pull --rebase
# e.g. if on branch "master": performs a `git fetch origin`,
# then `git rebase origin/master`
因为 git 中的分支合并是与合并提交一起记录的,所以它们应该是有意义的——例如,表明一个特性何时被合并到一个发布分支。但是,在几个团队成员经常同步单个分支的日常工作流程中,时间线会被常规 git pull 上不必要的微合并污染。变基可确保始终重新应用提交,以使历史保持线性。
您可以将某些分支配置为始终在没有 --rebase 标志的情况下执行此操作:
# make `git pull` on master always use rebase
$ git config branch.master.rebase true
您还可以设置一个全局选项来为每个新跟踪的分支设置最后一个属性:
# setup rebase for every tracking branch
$ git config --global branch.autosetuprebase always
Afetch
只检索“远程”引用(即来自不同存储库的引用)。
Apull
实际上是 afetch
后跟 a merge
。
如果您想从 进行更改origin/1.4
,请在获取后发出此命令:
git merge origin/1.4