我希望在我的git历史记录中看到修改文件的名称,但不包括一个提交。
当我使用命令:git log --oneline时,git返回以下提交:

问题是提交0810c44。这个提交是因为它是一个同步提交,它包含了很多更新过的文件,但它们并不是我当前任务所需要的(它包含了许多与本地回购同步的文件)。

我希望看到所有文件名从当前的头更改为以前的提交(例如,824be3b),但是以省略提交0810c44的方式,我如何做到这一点?
Git作为文本返回:
git log --oneline
9dfe1b9 (HEAD -> tmp_merge_branch) merge
0810c44 retrieved
ff16e9a (1362-bolecode) commerce user permission
3de9164 update flow filter
ec04c9e xml
8851063 add untracked permissions, profiles, etc...
252b039 object
b5db337 add new flows
d9cb7de add B2BCommerceUser Permission Set
f9dc6d2 add diferences from Merge
c0d5f11 remove files
824be3b check before deploy
3212074 restante
69ef93e retrievedPS C:\> git log --name-only
commit 9dfe1b9a919c2153f1af56cd21f13d750588b4f6 (HEAD -> tmp_merge_branch)
Author: Me
Date: Mon Nov 14 16:12:44 2022 -0300
merge
mergeFolder/classes/BoletoItauController.cls
mergeFolder/classes/RegisterBolecodeTest.cls
mergeFolder/flows/Boleto_Bolecode_Integration.flow
mergeFolder/flows/Boleto_Bolecode_Integration_On_Create.flow
mergeFolder/permissionsets/B2BCommerceUser.permissionset
commit 0810c44fc622d476d54d713b23c993891d7219df
Author: Me
Date: Mon Nov 14 14:14:42 2022 -0300
retrieved
mergeFolder/classes/BolecodeService.cls
mergeFolder/classes/BolecodeService.cls-meta.xml
mergeFolder/classes/BolecodeServiceTest.cls
mergeFolder/classes/BolecodeServiceTest.cls-meta.xml
mergeFolder/classes/BolecodeStructure.cls
mergeFolder/classes/BolecodeStructure.cls-meta.xml
mergeFolder/classes/BoletoApiService.cls
mergeFolder/classes/BoletoApiService.cls-meta.xml
mergeFolder/classes/BoletoApiServiceMock.cls
mergeFolder/classes/BoletoApiServiceMock.cls-meta.xml
mergeFolder/classes/BoletoApiServiceTest.cls
mergeFolder/classes/BoletoApiServiceTest.cls-meta.xml
mergeFolder/classes/BoletoBo.cls
mergeFolder/classes/BoletoBo.cls-meta.xml
mergeFolder/classes/BoletoDAO.cls
mergeFolder/classes/BoletoDAO.cls-meta.xml
mergeFolder/classes/BoletoItauController.cls
mergeFolder/classes/BoletoItauController.cls-meta.xml
mergeFolder/classes/BoletoService.cls
mergeFolder/classes/BoletoService.cls-meta.xml
<log with 74 files in total>
commit 9dfe1b9a919c2153f1af56cd21f13d750588b4f6 (HEAD -> tmp_merge_branch)
Author: Me
Date: Mon Nov 14 16:12:44 2022 -0300
merge
mergeFolder/classes/BoletoItauController.cls
mergeFolder/classes/RegisterBolecodeTest.cls
mergeFolder/flows/Boleto_Bolecode_Integration.flow
mergeFolder/flows/Boleto_Bolecode_Integration_On_Create.flow
mergeFolder/permissionsets/B2BCommerceUser.permissionset发布于 2022-11-16 18:30:27
我没有一个简单的命令给您,但这里有几个“解决方案”,可以实现您的最终目标。
如果没有那么多您想要的提交,那么从一个没有这些提交的分支开始,您可以在那里创建一个新的临时分支,然后只选择希望看到结果的提交,然后运行对临时分支的命令。
如果有很多提交想要看到结果,而只想忽略一个提交,那么可以尝试类似于上面的策略,但是从当前分支创建一个包含所有提交的分支,然后恢复当前提交。同样,这给您留下了一个所需提交的分支--运行您的命令以获取所需的文件列表,然后跳回实际的分支。
发布于 2022-11-16 20:27:39
我不认为有一种方法可以排除使用git日志在历史记录中显示单个提交,但是要列出在多个提交中更改的所有文件,您可以使用git diff,并且在恢复特定提交的同时,您应该能够达到预期的结果。考虑以下git历史(git log -p):
commit d9d6084ebc16effd52327fd67b82860d5b9510a3 (main)
Author: micromoses <micromoses>
Date: Wed Nov 16 21:51:24 2022 +0200
Added e.txt
diff --git a/e.txt b/e.txt
new file mode 100644
index 0000000..d905d9d
--- /dev/null
+++ b/e.txt
@@ -0,0 +1 @@
+e
commit 6a3c93aa8746e9d81a7dceefd8f4210bacf1103b
Author: micromoses <micromoses>
Date: Wed Nov 16 21:52:43 2022 +0200
Modified d.txt
diff --git a/d.txt b/d.txt
index 4bcfe98..32a8474 100644
--- a/d.txt
+++ b/d.txt
@@ -1 +1,2 @@
d
+modified d
commit 90b7155196a272ca19417b451320a9c66f619f35
Author: micromoses <micromoses>
Date: Wed Nov 16 21:51:24 2022 +0200
Added d.txt
diff --git a/d.txt b/d.txt
new file mode 100644
index 0000000..4bcfe98
--- /dev/null
+++ b/d.txt
@@ -0,0 +1 @@
+d
commit 8cee8643364631e91f91d36f23d5bf0c3c89354d
Author: micromoses <micromoses>
Date: Wed Nov 16 21:51:24 2022 +0200
Added c.txt
diff --git a/c.txt b/c.txt
new file mode 100644
index 0000000..f2ad6c7
--- /dev/null
+++ b/c.txt
@@ -0,0 +1 @@
+c
commit 1ff08cfde30e9b3ee358ffe1e8ce83d6f08c293b
Author: micromoses <micromoses>
Date: Wed Nov 16 21:51:24 2022 +0200
Added b.txt
diff --git a/b.txt b/b.txt
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/b.txt
@@ -0,0 +1 @@
+b
commit 36d3284a11b001ecd02d1ab817546bc51ea16cb5
Author: micromoses <micromoses>
Date: Wed Nov 16 21:51:24 2022 +0200
Added a.txt
diff --git a/a.txt b/a.txt
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/a.txt
@@ -0,0 +1 @@
+a
commit 76da7ed781432d4d7348359665a50baa2df7ac39
Author: micromoses <micromoses>
Date: Wed Nov 16 21:49:57 2022 +0200
Initial commit假设我们想排除2提交,6a3c93a和8cee864。我们可以创建一个新分支,还原这2次提交,并运行git diff:
$ git checkout -b temp_revert
$ git revert 6a3c93aa8746e9d81a7dceefd8f4210bacf1103b
$ git revert 8cee8643364631e91f91d36f23d5bf0c3c89354d
$ git diff --name-only 76da7ed781432d4d7348359665a50baa2df7ac39
a.txt
b.txt
d.txt
e.txt注意,c.txt已从列表中删除,但d.txt仍然出现--因为它是在commit 90b7155中修改的,我们希望包括它。
虽然恢复历史提交可能会导致冲突,但为了列出修改过的文件,这并不是问题,因为它只表明文件是在稍后阶段修改的。我不会费心解决这些问题,实际上,我会在不进行任何编辑的情况下提交还原。最终结果仍将显示这些文件的修改,这是所需的结果。
发布于 2022-11-17 06:38:53
我理解你的需求,但这似乎违背了git的设计,有两个重要的原则:
1内容跟踪。git跟踪内容,而不是文件 原始提交的散列惟一地标识根植于该提交的整个数据结构的状态。
这听起来有点复杂,例如,您想要排除0810c44,但是您的9dfe1b9记录修改的内容,基于0810c44,换句话说,9dfe1b9是9dfe1b9,因为是0810c44。
如果0810c44的内容不同(甚至没有您预期的0810c44 ),则9dfe1b9将不是9dfe1b9,而是另一个完全不同的节点(或散列)。
所以,我理解你的需要,但似乎不太可能通过git内部命令来解决。
https://stackoverflow.com/questions/74465250
复制相似问题