通過git stash apply
- 這所使用的合併進程是git stash pop
上半年-is同任何其他的合併,在留下的影響方面:
$ git status
On branch master
nothing to commit, working tree clean
$ git log --all --decorate --oneline --graph
* f9a96c0 (HEAD -> master) conflicting changes for stash
| * 069a595 (refs/stash) WIP on master: 6fee57d add file "file"
| |\
|//
| * c466c42 index on master: 6fee57d add file "file"
|/
* 6fee57d add file "file"
* 2353af8 initial
在這一點上,無論我跑git stash apply
或git stash pop
,我得到一個合併衝突,然後處理終止(沒有做的git stash pop
下半年):
$ git stash apply
Auto-merging file
CONFLICT (content): Merge conflict in file
$ git reset --hard HEAD
HEAD is now at f9a96c0 conflicting changes for stash
$ git stash pop
Auto-merging file
CONFLICT (content): Merge conflict in file
$ git stash list
[email protected]{0}: WIP on master: 6fee57d add file "file"
在指數目前什麼是未合併狀態,以文件file
目前各3份:
$ git ls-files --stage
100644 239c0dc4252320079890fff28cd408eb825776f5 0 README
100644 2983120c0897fea017d8398b5ffdc5e3ef0e17ad 1 file
100644 27b6da381575999c9ba975e9df9ba6caa45e3165 2 file
100644 080f90d42698e258e3efa8059c78ebfd5fdd7bd8 3 file
和git mergetool
是很願意在這一點上運行:
$ git mergetool
[snip configuration complaint - I never use git mergetool
so it is not configured]
Merging:
file
Normal merge conflict for 'file':
{local}: modified file
{remote}: modified file
Hit return to start merge resolution tool (bc):
所以,我想知道是否有辦法執行git存儲不自動合併,但離開衝突到位...
此時文件的所有三個版本都存在於索引中。其中只有兩個,--ours
(通常與HEAD
提交版本相同)和--theirs
(本例中爲存儲提交版本)具有方便的git checkout
命令語法,但您也可以使用:<number>:path
語法提取合併基本版本。運行git mergetool
可以爲您提供基礎,左側/本地/ ours
和右側/遠程/ theirs
版本 - 就在運行配置的合併工具之前。
因此,我不確定你的問題是什麼。
同意。這是非常標準的版本控制系統行爲。 – Mort
好吧,當我運行git merge,比如說revision_5分支並開發分支,並且假設存在衝突。它會嘗試自動合併。如果它可以很好,但如果不是,它不會在文件中添加他們和我們的惱人標籤,它只會將它們都留下,並且命令行中的活動分支變成(開發|合併)。你是說,即使這不會發生與Git存儲應用,它只是將兩個版本合併到單個文件,git mergetool仍然會運行,並允許我修復合併? – JaedenRuiner
在* all *合併衝突的情況下,Git應該像這樣標記工作樹文件。原始文件全部存儲在索引中,因此,您可以使用* 5 *個活動版本(HEAD;索引階段1,2,3和4)來替代通常的三個活動版本的文件(HEAD,索引階段0,工作樹) 3;工作樹)。通過採用工作樹版本,在其中一條路徑上運行'git add'或'git rm',可以將三個高階索引階段副本還原到單階段0索引副本。如果git mergetool腳本認爲它運行的工具成功,那麼'git mergetool'腳本會爲你運行'git add'。 – torek