【发布时间】:2021-03-14 11:02:22
【问题描述】:
我正在处理一些提交,如果我的硬盘崩溃,我不想丢失它们。但是,我需要在完成之前更改它们(rebase、squash、reorder 等),所以我不能只将分支推送到远程,因为这需要我稍后强制推送,而我不想这样做做。
所以...我可以只上传提交而不更新远程分支标签。这样,我就可以下载 repo,找到我的提交,并在我的硬盘崩溃时继续工作。
问题是,我不知道该怎么做。我已经阅读了refspec parameter specification,它只是显示了指定要更新哪个参考的不同方法,但我不想更新任何参考。谷歌搜索也没有帮助,我看到的只是关于“樱桃采摘”之类的教程,我不想要。
从分离的头部推送也不起作用,它说使用git push origin HEAD:<name-of-remote-branch>,但我不想指定任何分支名称。
是否有一种(简单的)方法可以只上传提交而不更新任何参考? (不,无论如何推入一个分支,然后立即强制将该分支推回刚才的位置并不是一个好主意。)
【问题讨论】:
-
如果您没有它们的命名引用,则无法保证远程存储库将它们保留很长时间,因为未引用的提交可能会被垃圾收集。此外,如果不添加命名引用,您可能无法“下载它们”。为什么不想在自己的分支上使用强制推送?
-
"你为什么不想在你自己的分支上使用强制推送?"因为有人可以将他们的分支基于它,当我稍后强制推送时,这将是非常糟糕的。
-
在一个团队中,没有人应该将他们的新分支建立在其他正在进行的分支之上,除非已经决定并且这些分支上的开发人员正在沟通等。所以 应该 安全。我假设您不是直接针对 master 或 development(ment),而是针对功能分支,在这种情况下它应该是安全的。如果不是,您可能需要与您的团队讨论以确保它变得安全。
-
要回答您的问题,而不是分支,请使用标签,并将其命名为您的姓名和正在进行的工作。如果您团队中的其他人以此为基础,并且在您完成工作时不准备清理,那么您可能想与他们认真讨论如何不做事。但是,您可以只使用具有这种名称的分支来代替,让您自己更轻松,以便您在推送时仍然有一个向前移动的分支。