【发布时间】:2021-10-15 07:13:12
【问题描述】:
最近我遇到了一个独特的问题,我必须在一个分支中只包含最新的提交,而丢弃所有旧的提交。
例如考虑我有这样的提交结构:
[main branch]
af474e3 (HEAD -> main) Updated modal UI
c0f9599 Added modal UI <-- This commit onwards is what our requirement is
e50c805 Updated button UI
de2ab3c Added button UI
9b1822f Initial commit
(我知道这听起来很傻,但是,)我想从 点开始获取所有(最新)提交以及与之相关的所有提交信息,即提交日期、提交作者等。
创建的分支必须如下所示:
[new branch]
af474e3 (HEAD -> new, master) Updated modal UI
c0f9599 Added modal UI
我试过removing/squashing commits with interactive rebasing,没用。
Cherry-picking 也不起作用。
这可以实现吗?有什么简单的方法可以实现吗?
【问题讨论】:
-
您是否希望前 3 次提交中发生的任何更改仍然存在而没有自己的提交? (即,您是否要将前 4 次提交压缩为一个?)如果答案是否定的,那么请意识到您要保留的第 4 次和第 5 次提交必须不编辑或使用在前 3 次提交。
-
您提到要维护 commit 名称和日期,但是,通常在重写时保留 author 名称和日期提交,而不是 commit 名称和日期。默认情况下,在重写提交时,commit 名称和日期将更改为“you”和“now”。你这样好吗?请注意,作者 名称和日期是您查看日志时通常显示的内容,因此通常每个人都允许将 commit 名称和日期更改为最后一次提交的人。
-
@TTT 正如您在第一条评论中所说的那样,我意识到当我尝试不同的方法时。如果较早的提交构成在较旧的提交中修改的相同文件,我不能使用较早的提交丢弃较旧的提交。一个艰难的教训!
-
@TTT,我错过了在我的问题中说我不需要提交消息相同。是的,我可以保留 提交消息 和 提交日期。
-
在这种情况下,我认为您可以选择eftshift0's answer,因为我相信它可以满足您的需求。
标签: git github version-control branch conventional-commits