在没有提交Mercurial或Git的情况下推送

时间:2010-09-08 05:04:45

标签: git mercurial dvcs push

对于Mercurial或Git来说似乎都是如此,如果我先不提交,那么我不能推?

因此,如果我不提交(尚未准备好),我无法推送到远程服务器来备份我的代码?代码在笔记本电脑中,随身携带,可能有点脆弱。

5 个答案:

答案 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看看场景是否正确。你有......

  1. 您工作目录中的一些未提交的编辑,您还没有提交,
  2. 本地存储库中的一些未经删除的更改
  3. ......但是你那讨厌的老板轻拍你,说:“嘿!你什么时候推动你在工作人员会议上提到的改变?我们都在等待它!”他站在那里等你做,所以你怎么快速轻松地把他从头发中弄出来?

    这很容易。您想要使用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藏匿,但更灵活,更少混淆。

    学习,改变,进化!