对于Mercurial或Git来说似乎都是如此,如果我先不提交,那么我不能推?
因此,如果我不提交(尚未准备好),我无法推送到远程服务器来备份我的代码?代码在笔记本电脑中,随身携带,可能有点脆弱。
答案 0 :(得分:17)
你总是准备提交。
经常提交。致力于正在进行的工作分支,并按照您的意愿广泛分发。
当你到达你当前称之为“准备提交”的状态时,检查你的分支与上游的分歧,做一个rebase -i
来清理它并使它看起来像你想。
这将更容易,更安全,并且通常会给你更好的结果,而不是在提交之前努力让一切都完美。记住:提交不一定代表宇宙所需的永久状态。它只是你的某个地方。你如何发表它取决于你。
git让非常为您正在进行的工作轻松发布do-not-look-at-me
分支,以后您可以随时以任何形式和最适合您的形式进入您的官方代码库
答案 1 :(得分:7)
刚刚成立一个新的分支。
将半生不熟的更改提交到该分支,并推送该分支。
当您的更改准备就绪时,压缩半生不熟的提交(使用rebase
),并将结果合并到master
并删除丢弃的分支。 (您可以使用git push origin :branch
从远程存储库中删除分支 - 请注意分支名称前的冒号。)
没有理由不提交您的更改,尽管可能有理由在尚未准备好时将提交给特定分支。
答案 2 :(得分:3)
这是对的。推送的目的是与其他回购共享一个或多个提交。两者都不是主要用作备份(尽管有些人使用它们)。
有许多专用的备份工具和在线服务。看到 Online backup for personal use列表。
答案 3 :(得分:2)
这是正确的;你不能推动未提交的更改。但是,仅仅因为您的更改尚未准备就绪并不意味着您无法提交它们。我没有使用Mercurial的经验,但是使用Git,您可以修改提交(git commit --amend
)以在提交后对其进行修改。您还可以进行一系列提交,然后执行交互式rebase以将它们组合到单个提交中。或者您可以根据需要进行提交,而不必担心确保您的历史是完全原始的。
答案 4 :(得分:2)
Lemme看看场景是否正确。你有......
......但是你那讨厌的老板轻拍你,说:“嘿!你什么时候推动你在工作人员会议上提到的改变?我们都在等待它!”他站在那里等你做,所以你怎么快速轻松地把他从头发中弄出来?
这很容易。您想要使用MQ extension。它与标准的Mercurial安装捆绑在一起。
首先将其添加到您的.hgrc
文件中。
[extensions]
mq =
要在修补程序队列条目中存储未提交的编辑,请执行以下操作:
$ hg qnew stash
$ hg qpop
现在推动你的旧提交,这样你的老板就会退缩。
$ hg push
最后,像这样恢复你的工作目录:
$ hg qpush
此时,您仍然在补丁队列中记录了补丁。它现在只标记为“已应用”。完成编辑代码,然后执行此操作以使用完成的编辑和提交日志消息更新补丁,然后将补丁最终确定为变更集:
$ hg qrefresh -m"Commit message goes here."
$ hg qfinish stash
这是基础知识,但是如果你想真正想要的话,你可以做更多的事情。 MQ扩展就像隐藏在Mercurial存储库下面的全新修订控制世界。这就像Git藏匿,但更灵活,更少混淆。
学习,改变,进化!