gpt4 book ai didi

git - `git pull --rebase --autostash` 和 `git pull --ff-only` 之间的区别?

转载 作者:行者123 更新时间:2023-12-04 16:40:07 26 4
gpt4 key购买 nike

以下问题Can “git pull” automatically stash and pop pending changes有同时使用的解决方案:

  • git pull --rebase --autostash

  • git pull --ff-only

我有点困惑我应该使用哪一个。他们真的完成了同样的结果吗?非常相似question询问哪个没有 --autostash 参数以及 --rebase

最佳答案

想象一下 Remote 有你没有改变的情况:

remote | A - B - C - D - E
|
local | A - B - C

这里可以git pull --ff-only,因为可以从C快进到E。现在假设您也进行了更改:

remote | A - B - C - D - E
|
local | A - B - C - F - G

如果你git pull --ff-only会被拒绝,因为你不能从G快进到E;根据 the docs (强调我的):

With --ff-only, resolve the merge as a fast-forward when possible.When not possible, refuse to merge and exit with a non-zero status.

有两种方法可以解决这个问题:

  • 创建一个 merge 提交(默认的,如果快进是不可能的,或者可以用 --no-ff 强制);或
  • rebase (--rebase)。

如果你git pull --rebase,它会将你的本地副本回滚到C,快进到E,然后重播FG 到新的父节点上,离开:

remote | A - B - C - D - E
|
local | A - B - C - D - E - F' - G'

--autostash 是一个 单独的 参数,根据 the docs :

This means that you can run the operation on a dirty worktree.

在上述两种情况下,我假设一个干净的工作树(即 git status 显示 “没有提交,工作树干净” - 你没有未提交的本地更改),为了简单起见,但有时您可能希望在本地工作正在进行时进行新的更改。

关于git - `git pull --rebase --autostash` 和 `git pull --ff-only` 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62659379/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com