首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git日志-名称-只忽略一些提交。

Git日志-名称-只忽略一些提交。
EN

Stack Overflow用户
提问于 2022-11-16 18:06:21
回答 5查看 50关注 0票数 0

我希望在我的git历史记录中看到修改文件的名称,但不包括一个提交。

当我使用命令:git log --oneline时,git返回以下提交:

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

我希望看到所有文件名从当前的头更改为以前的提交(例如,824be3b),但是以省略提交0810c44的方式,我如何做到这一点?

Git作为文本返回:

git log --oneline

代码语言:javascript
复制
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 retrieved
代码语言:javascript
复制
PS 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
EN

回答 5

Stack Overflow用户

发布于 2022-11-16 18:30:27

我没有一个简单的命令给您,但这里有几个“解决方案”,可以实现您的最终目标。

如果没有那么多您想要的提交,那么从一个没有这些提交的分支开始,您可以在那里创建一个新的临时分支,然后只选择希望看到结果的提交,然后运行对临时分支的命令。

如果有很多提交想要看到结果,而只想忽略一个提交,那么可以尝试类似于上面的策略,但是从当前分支创建一个包含所有提交的分支,然后恢复当前提交。同样,这给您留下了一个所需提交的分支--运行您的命令以获取所需的文件列表,然后跳回实际的分支。

票数 0
EN

Stack Overflow用户

发布于 2022-11-16 20:27:39

我不认为有一种方法可以排除使用git日志在历史记录中显示单个提交,但是要列出在多个提交中更改的所有文件,您可以使用git diff,并且在恢复特定提交的同时,您应该能够达到预期的结果。考虑以下git历史(git log -p):

代码语言:javascript
复制
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提交,6a3c93a8cee864。我们可以创建一个新分支,还原这2次提交,并运行git diff:

代码语言:javascript
复制
$ 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中修改的,我们希望包括它。

虽然恢复历史提交可能会导致冲突,但为了列出修改过的文件,这并不是问题,因为它只表明文件是在稍后阶段修改的。我不会费心解决这些问题,实际上,我会在不进行任何编辑的情况下提交还原。最终结果仍将显示这些文件的修改,这是所需的结果。

票数 0
EN

Stack Overflow用户

发布于 2022-11-17 06:38:53

我理解你的需求,但这似乎违背了git的设计,有两个重要的原则:

1内容跟踪。git跟踪内容,而不是文件 原始提交的散列惟一地标识根植于该提交的整个数据结构的状态。

这听起来有点复杂,例如,您想要排除0810c44,但是您的9dfe1b9记录修改的内容,基于0810c44,换句话说,9dfe1b9是9dfe1b9,因为是0810c44。

如果0810c44的内容不同(甚至没有您预期的0810c44 ),则9dfe1b9将不是9dfe1b9,而是另一个完全不同的节点(或散列)。

所以,我理解你的需要,但似乎不太可能通过git内部命令来解决。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74465250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档