假设我在git上做一个探索性分支,而它只有一个提交。我决定我的工作很快就不需要了,我不想创建分支/标记。事实上,我想扔掉这些更改,但是为了防止再次需要它们,我想保存一个补丁。
为了这篇文章的目的,假设我只想归档一个更改:
* 040cc7c (HEAD, ExperimentalBranch) This is where the experiment is
* a29ceb7 (master) This is the main branch
...我提议的归档解决方案如下:
040cc7c.
)中用于长期ExperimentalBranch的某个地方。
到目前为止,一切似乎都很好,直到几年后,我可能想恢复修补程序。它可能引用不兼容且无法应用的文件/行。为了解决这个问题,我可以查看修补程序的父程序SHA并在那里应用它。
因此,我提议的解压缩解决方案如下:
a29ceb7.
唯一的问题是,当我创建修补程序时,我看到它包含040cc7c,但在任何地方都没有提到a29ceb7。在我创建修补程序多年之后,我可能很难找到040cc7c的父级。此外,由于我在几年前删除了分支,所以我不希望有一个git命令可以帮助我发现父级。
在创建修补程序时,是否有一种方法可以确保它的父SHA也包含在文件中?
我目前的解决办法是重命名修补程序,以包括父程序的SHA,但这很容易忘记,而且更手动。
发布于 2021-03-26 20:28:42
我建议不要删除这个分支,但是如果您真的想将修补程序存储在其他地方,您可以这样做。
git format-patch --base HEAD^ HEAD^以便在修补程序中写入父(基)。
示例:
$ git format-patch --base HEAD^ HEAD^
0001-test.patch
$ cat 0001-test.patch
From 057ff8fa3ba485abeb69156e9717570ad483d52c Mon Sep 17 00:00:00 2001
From: Dispeakable me <Dispeakable.me@whatever.io>
Date: Sat, 27 Mar 2021 09:47:23 +0100
Subject: [PATCH] test
---
test.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/test.cpp b/test.cpp
index 6f4ed1e..1ef4295 100644
--- a/test.cpp
+++ b/test.cpp
@@ -1,4 +1,5 @@
+
#include <list>
class Semaphore {
base-commit: b50a780230e2f3f2be8bf6ad3797de272cafba5c
--
2.26.3您可以检查父sha1:
$ git cat-file -p HEAD
tree 5c03e768250fe7fe94d8ba0454feae422abd6aac
parent b50a780230e2f3f2be8bf6ad3797de272cafba5c
author Dispeakable me <Dispeakable.me@whatever.io> 1616834843 +0100
committer Dispeakable me <Dispeakable.me@whatever.io> 1616834843 +0100
testhttps://stackoverflow.com/questions/66823222
复制相似问题