Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git:隐藏分支上的详细提交_Git - Fatal编程技术网

git:隐藏分支上的详细提交

git:隐藏分支上的详细提交,git,Git,我想知道这在git中是否可行。所以我有主分支。我会不时地为特性开发创建一个分支。完成后,我会将其合并回主控。现在,侧分支上的所有提交历史记录通常都将显示在主分支中。有没有一种方法可以使所有提交都作为一个提交显示在主服务器上?假设您在分支上进行了开发: git checkout -b dev_branch < do your changes, and commit them > $git签出主机 $git合并--挤压 从(强调我的): --挤压 --没有壁球 生成工作树和索引状态,

我想知道这在git中是否可行。所以我有主分支。我会不时地为特性开发创建一个分支。完成后,我会将其合并回主控。现在,侧分支上的所有提交历史记录通常都将显示在主分支中。有没有一种方法可以使所有提交都作为一个提交显示在主服务器上?

假设您在分支上进行了开发:

git checkout -b dev_branch
< do your changes, and commit them >
$git签出主机
$git合并--挤压
从(强调我的):

--挤压
--没有壁球
生成工作树和索引状态,就像发生了真正的合并一样(合并信息除外),但实际上不会 进行提交、移动标头或记录$GIT\u DIR/MERGE\u HEAD(导致 下一个git commit命令(用于创建合并提交)这允许您 在当前分支上创建一个提交,其效果为 与合并另一个分支相同(如果是章鱼,则为多个分支)

使用--no squash执行合并并提交结果。此选项 可用于替代--squash


你为什么要这么做?提交历史记录很重要。如果不是,只需在一个补丁中开发您的整个功能(或者在完成后将您的系列压缩为一个补丁)。您在这里使用的是Git插件,还是仅使用命令行?您可以压缩提交,但仍然会有一个。更多信息:@Mureinik它感觉更干净,如果我没记错的话,clearcase就是这样做的。如果你发布了一个合并提交评论样本,以及你不喜欢的内容,这会有所帮助。我喜欢git rebase,但我不知道这是否是OP想要的。我原以为合并只会留下一个commit和一条注释,但可能我在这里遗漏了一些东西。
git-rebase
ftw:)。事实上,git merge添加了一个提交。但是OP说他想让“所有的提交都作为一个出现在主机上”
git merge--squash的结果在运行单个命令时是完全相同的。此外,您还保留了
dev_分支的原始历史记录。您是对的,输出与我提出的所有命令相同,但最后一个命令除外(删除分支)。如果他愿意,我的解决方案允许他保留来自
dev_branch
的多个提交。如果他想将所有提交放在一个提交中,这确实是一个更快的解决方案。如果不是,我的回答是允许的。
git rebase -i master
< in the interface you should now keep the first commit, and select `squash` for all the successive commits >
git checkout master
git rebase dev_branch
git branch -d dev_branch
$ git checkout master
$ git merge --squash <branch>