2010-06-09 77 views
2

提交信息,我不知道如何把在一点上我的问题,所以我试图解释这一点;-)混帐:隐藏远程回购

当使用Git在我的本地maschine工作,我平时犯很多。为此我使用主题分支。然后我将这样一个主题分支合并到一个名为develop的分支中,这个分支将被推送到远程回购。

我总是与--no-ff合并,所以他们总是对我整个主题的提交。

现在我只想推动这个提交与指定的描述我在整个这个分支做了什么。

我更愿意这样做,因为您可以查看服务器上的提交历史记录,并直接查看发生了什么并且不需要读取每一次提交。

而对于我的本地工作,如果我想重置我的分支或类似的东西,我会有完整的历史记录。

我不知道如果他们的是一种方式,混帐做到这一点,但是这将是对我来说是非常有用的,所以我给它一个尝试问你;-)

最好的问候, 塞巴斯蒂安

回答

1

从你所描述的情况看,你所需要做的只是推动你的devel分支,而不是推动你的主题分支。

  • devel分公司将包含一个提交该总结一下已经完成(与特性分支合并创建)。
    该提交将被推送到远程。
    诀窍是,它不应该链接到你的主题分支(或其历史也发布)。
    a git merge --squash对于产生该单一提交将是有用的。
  • 您的topic分支机构保持未发布(未推送)并包含所有详细历史记录。
    您可以强制执行该操作,例如hook on the remote side拒绝您不想在您的(远程)回购库上推送的分支。

由于Daniel Yankowsky提到的评论,一个git merge --squash作品,但 “失去了改变的血统”。
这就是为什么你可以设置2'devel'分支。

 t--t--t--t (topic) 
    /
x--x (devel) 
\ 
    p--p (devel_pub) 
  • 一个用于合并的目的(经典 'devel' 分支)
  • 一个用于发布目的( 'devel_pub'),在那里你执行merge --squash
 
        (topic) 
        | 
    x--x--t--t--t--t--d (devel) 
    \ 
     p--p--T (devel_pub, with T being "git merge --squash topic") 
+0

是不是所有的父提交也推?因此,推进合并提交也会推动合并的双方? – 2010-06-09 17:54:05

+0

但使用时: $ git checkout develop $ git merge --no-ff topic 开发具有完整的历史记录,我有主题。 – 2010-06-09 17:54:26

+0

@Daniel:好点。我已经修改了我的答案,以避免将devel的历史与正在合并的主题分支链接起来。 – VonC 2010-06-09 18:02:23

1

我不知道有什么方法可以做你正在描述的内容,我怀疑它是在与git的设计工作。这听起来像你想总结一整套提交。如果使用--no-commit选项进行合并,并编辑合并提交消息以汇总分支的更改,会怎么样?

0

听起来好像你可能想要使用git rebase在推送前重写本地历史。

为什么你不想在远程端呢?这似乎不是很重要。只需将远程端设置为仅显示一个分支,其中包含您的合并提交。