我最近在本地創建了一個新的分支,發布到遠程,它收到了一個同事的更新。
雖然我的版本庫中確實有改動,但都不是在被修改的檔案上。
因此,我期望git pull能像git status的資訊所暗示的那樣發揮作用:
$ git status
在分支XXX上
你的分支在'origin/XXX'后面,有兩個提交,可以快進。
(使用 "git pull "來更新你的本地分支)
沒有提交的改動。
(用 "git add <file>... "來更新將要提交的內容)
(使用 "git restore <file>... "來放棄作業目錄中的修改)
修改了。 ...
然而,拉動的結果是一個錯誤資訊,暗示有一個重建正在進行中:
$ git pull
error: cannot pull with rebase: 你有未歸檔的修改。
error: please commit or stash them.
我不知道這可能來自哪里,因為我從未有意識地做過 rebase。 另外,很奇怪的是:
$ git rebase --continue
fatal: No rebase in progress?
我可以在存盤我的修改時拉動,并在之后彈出,沒有任何問題,并且知道自動存盤選項,但我想了解這里發生了什么。
rebase 是從何而來的? 為什么git pull和git rebase似乎不同意是否有rebase的存在? 我怎樣才能收拾這個爛攤子呢?
uj5u.com熱心網友回復:
rebase從何而來?
正如@coyotte508指出的那樣,你很可能通過在你的Git組態檔中設定pull.rebase選項(無論是全域還是當前 repo)來配置git pull以進行rebase而不是merge。
為什么git pull和git rebase似乎不同意是否有rebase?
它們不會。git pull只是拒絕做 rebase,因為你的作業目錄中有未提交的更改。當 git pull 退出的時候,并沒有在進行 rebase。
我怎樣才能清理這個爛攤子?你可以在做
git pull之前提交或存盤你的修改(你提到的rebase.autostash選項將自動為你做后者)。另外,你可以將pull.rebase設定為false,讓git pull進行常規合并,但我不建議這樣做。uj5u.com熱心網友回復:
你可能在拉取時自動啟用了rebase。試試吧
git config pull.rebase git config --global pull.rebase看看這兩者是否為
true。如果是這樣的話,你可以做:
git config pull.rebase false git config --global pull.rebase false(或者使用
--unset)轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/325027.html
標籤:
