我在我的目录中修改了一个文件(或一些文件),并且我习惯于git add
从文件中暂存一些更改行,但不是所有更改的行。
我可以git diff --staged my-file
用来查看更改的差异。 git diff --staged my-file
忽略已更改但未上演的行。这是输出的示例git diff --staged my-file
diff --git a/ens/cours/ens_cours_JN.csv b/ens/cours/ens_cours_JN.csv
index dcea574..ff33469 100644
--- a/ens/cours/ens_cours_JN.csv
+++ b/ens/cours/ens_cours_JN.csv
@@ -24,6 +24,7 @@ SCALIN_E;EPITA;préparation pédagogique;JN;ING1;2020-05-13;;False;True;PT4H;;
SCALIN_E;EPITA;préparation pédagogique;JN;ING1;2020-05-20;;False;True;PT4H;;
SCALIN_E;EPITA;préparation pédagogique;JN;ING1;2020-05-27;;False;True;PT4H;;
SCALIN_E;EPITA;préparation pédagogique;JN;ING1;2020-06-03;;False;True;PT4H;;
+SCALIN_E;EPITA;préparation pédagogique;JN;ING1;2020-06-03;;False;True;PT4H;;commit this line
THLR;EPITA;préparation pédagogique;JN;ING1;2020-07-20;;False;True;PT8H;;Recording TDs
THLR;EPITA;préparation pédagogique;JN;ING1;2020-07-21;;False;True;PT8H;;Recording TDs
THLR;EPITA;préparation pédagogique;JN;ING1;2020-07-22;;False;True;PT8H;;Recording TDs
问题:如何生成将要提交的文件的文本?我想要一个签入挂钩,以便在允许提交之前最终处理该文件。
我怀疑有一些简单的咒语使用git apply
。但是,简单的使用git apply
会产生以下诊断消息。
jnewton@Marcello cours % git diff --staged > ens_cours_JN.csv.patch
git diff --staged > ens_cours_JN.csv.patch
jnewton@Marcello cours % git apply ens_cours_JN.csv.patch
git apply ens_cours_JN.csv.patch
error: patch failed: ens/cours/ens_cours_JN.csv:24
error: ens/cours/ens_cours_JN.csv: patch does not apply
我有一个似乎太复杂的解决方案。
- 生成 .patch 文件
git diff --staged > my-file.patch
- 保存原件
cp my-file my-file.save
- 隐藏更改
git stash save my-file
- 应用补丁
git apply my-file.patch
- 保存了所需的结果
cp my-file my-file.to-commit
- 将文件恢复到预添加状态
mv my-file.save my-file
- 将字段恢复到添加后状态
git stash apply
现在,my file.to-commit
是要提交的填充副本。这真的是正确的方法吗?看来我做的工作太多了。