是否可以修改默认git-merge-one-file程序以在不触及工作树的情况下执行索引中的所有操作,使其完全不修改?
更新和细节
所以我现在明白,如果不使用工作树,就不会发生文件级合并(合并对文件中的行而不是整个文件).(与整个文件的合并不同.)所以我将不得不使用工作树.
另一个细节:我可以使用该解决方案仅在合并可以自动完成而无需手动解决的情况下工作.如果合并不是自动的,它只是显示错误消息是没关系的.(当然,保持一切都干净.)
另一个细节:我没有git-merge-one-file直接使用,我在这个脚本中使用它:https://gist.github.com/cool-RR/6575042
我试着按照@torek的建议并使用临时工作树(正如你在脚本中看到的那样),因为这似乎是迄今为止最好的方向.问题是,我得到这些错误:
git checkout-index: my_file is not in the cache
error: my_file: cannot add to the index - missing --add option?
Run Code Online (Sandbox Code Playgroud)
我搜索了这些错误消息,但找不到任何有用的信息.
知道该怎么办?
鉴于以下分支
A---B---C topic (HEAD)
/
D---E---F---G master
Run Code Online (Sandbox Code Playgroud)
并运行命令
git rebase master
Run Code Online (Sandbox Code Playgroud)
这是否意味着,我们是
topic/HEAD的master,或...master用topic/HEAD?我无法从git-rebase手册页中推断出我将如何在句子中表达此操作。
PS:我知道rebase它是什么以及它做什么,我只想知道“如何说话”命令,因为第一个参数实际上被称为upstream.
我不明白这一点:当我'git pull --rebase remote branch'时,它会将我的HEAD恢复为他们的共享根,然后开始重放在此期间发生的所有远程提交.为什么这些提交有时会失败?它们是干净的工作空间干净的提交?这几乎不是变相的重点吗?
目前,当我在本地功能分支上工作以获取最新更改时,我需要执行以下操作:
git checkout master
git fetch
git rebase
git checkout my-feature
git rebase master
Run Code Online (Sandbox Code Playgroud)
是否有更简单的解决方案,只需将更改拉到主分支而不切换到它?
我调整了2个文件,然后将它们合并到Github。但是,当我运行一次推送时,出现错误:
Unmerged paths:
# (use "git add/rm <file>..." as appropriate to mark resolution)
# deleted by us: somefolder/somefile.ext
Run Code Online (Sandbox Code Playgroud)
但是,我还没有碰过这个文件。当查看我的本地目录时,我看到文件仍然完整无缺。
有谁知道这是为什么发生的,我能对此做些什么?