我正在寻找一种不那么垃圾的方法:
git diff patch.DisableCreditCheck > ~/patch
patch -p1 < ~/patch
IE。来自分支的更改为原始未提交更改。
patch 的缺点是它不是很聪明。例如,我经常得到“检测到反向(或以前应用的)补丁!假设 -R[n]?” 当没有任何以前的补丁时,只是碰巧有一组文件名会被它弄糊涂。
能够做到这一点会更好:
git merge --no-commit --no-ff patch.DisableCreditCheck
...但这会使您处于合并状态,没有明显的方法可以在保留更改的同时恢复正常状态。
帮助!有什么体面的方法吗?
(当您在正在处理的代码上共享补丁时,这是一件非常有用的事情;比传递一组补丁文件要好得多)
编辑:作为我想要实现的一个例子,假设我们有两个分支,master 和 config.me。
当我做 git diff config.me > ~/patch; patch -p1 < ~/patch 结果是:
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: Web/Web.config
#
这是理想的结果......但不使用补丁,它不能很好地工作(特别是在 Windows 上,它在检测应该完美合并的更改方面似乎非常糟糕,但相反它会感到困惑并写出一堆 .orig和 .rej 文件)。
所以,就像我说的;我希望没有提交的分支中的更改作为本地未提交的更改。