阻止新分支在Git中获得旧的提交历史记录

阻止新分支在Git中获得旧的提交历史记录,git,version-control,branch,git-branch,Git,Version Control,Branch,Git Branch,我在Git中有这个结构 develop C - D - E / master A - B 然后,我从develope添加了一个新的分支,它是: git checkout -b new_branch develop 这就是我得到的 new_branch C - D - E - F - G / develop C - D - E 它进行了分支,但新分支继承了develope的提交历史,而不是所需的结构: n

我在Git中有这个结构

develop      C - D - E
            /
master A - B
然后,我从develope添加了一个新的分支,它是:

git checkout -b new_branch develop
这就是我得到的

new_branch C - D - E - F - G
                      /
develop      C - D - E
它进行了分支,但新分支继承了develope的提交历史,而不是所需的结构:

new_branch        F - G
                 /
develop C - D - E
我怎样才能做到这一点

编辑:开发日志输出

* 0c5b5fe Deleted changelog
* b20083f Added changelog. Version 1.2 Development
*   b9d888b Merge branch 'ProgressHUD' into develop
|\  
| * e310630 Modified .gitignore to ignore Instrument Tests
| * 9bb7ab7 Deleted code to remove "deletion while loading" functionality.
| * d139fef Fixed a few errors with RecentPhotos loading.
| * 6d52eb1 Added MBProgressHUD to the recents section
| * d98e09e Added MBProgressHUD functionality in the PersonList
| * 4c6fd41 Added MBProgressHUD Files.
* | 2f741e3 Modified .gitignore
|/  
*   ea1b51b Merged in glenwayguy/gitignore-edited-online-with-bitbucket-13693489
|\  
| * bdb0996 .gitignore edited online with Bitbucket
|/  
* 0fb68ec Initial Commit Version 1.1 Release
新的分支日志输出:

* 0c5b5fe Deleted changelog
* b20083f Added changelog. Version 1.2 Development
*   b9d888b Merge branch 'ProgressHUD' into develop
|\  
| * e310630 Modified .gitignore to ignore Instrument Tests
| * 9bb7ab7 Deleted code to remove "deletion while loading" functionality.
| * d139fef Fixed a few errors with RecentPhotos loading.
| * 6d52eb1 Added MBProgressHUD to the recents section
| * d98e09e Added MBProgressHUD functionality in the PersonList
| * 4c6fd41 Added MBProgressHUD Files.
* | 2f741e3 Modified .gitignore
|/  
*   ea1b51b Merged in glenwayguy/gitignore-edited-online-with-bitbucket-13693489
|\  
| * bdb0996 .gitignore edited online with Bitbucket
|/  
* 0fb68ec Initial Commit Version 1.1 Release

我认为您错误地解释了git日志的输出

这不是正确的图片

new_branch C - D - E - F - G
                      /
develop      C - D - E
提交C、D和E是相同的,不应显示在两个不同的位置

这是你所渴望的,也是你所拥有的

new_branch        F - G
                 /
develop C - D - E
也许您希望new_分支上git log的输出在F处停止,但git log不是这样工作的,它将显示一个连续的提交链及其父级。该链从当前分支开始,但再往后,它并不关心提交属于哪个分支,实际上,提交只是指向特定提交的指针

如果您想要新分支的日志历史记录(不包括开发时的提交),则必须明确地告诉git log,如下所示:

git log develop..new_branch

这将列出提交F和G。

我认为您对git日志的输出解释不正确

这不是正确的图片

new_branch C - D - E - F - G
                      /
develop      C - D - E
提交C、D和E是相同的,不应显示在两个不同的位置

这是你所渴望的,也是你所拥有的

new_branch        F - G
                 /
develop C - D - E
也许您希望new_分支上git log的输出在F处停止,但git log不是这样工作的,它将显示一个连续的提交链及其父级。该链从当前分支开始,但再往后,它并不关心提交属于哪个分支,实际上,提交只是指向特定提交的指针

如果您想要新分支的日志历史记录(不包括开发时的提交),则必须明确地告诉git log,如下所示:

git log develop..new_branch

这将列出提交F和G。

我不明白为什么在两个不同的提交行中有提交C、D和E。git checkout-b new_branch develope命令应该已经给了您想要的东西。git log-graph new_branch的输出是否实际显示了您上面所描述的内容?是的,它确实显示了我上面所描述的内容。如果删除new_branch并运行git checkout-b new_branch develop,您仍然会得到相同的结果吗?另外,您能用-graph-oneline选项向我们展示您的开发分支的日志输出吗?提交SHA是否不同?是的,它们都具有相同的日志输出,并且相同的SHAsdevelop和new_分支具有相同的日志输出?你能给我们看看吗?我不明白为什么在两行不同的提交中有提交C、D和E。git checkout-b new_branch develope命令应该已经给了您想要的东西。git log-graph new_branch的输出是否实际显示了您上面所描述的内容?是的,它确实显示了我上面所描述的内容。如果删除new_branch并运行git checkout-b new_branch develop,您仍然会得到相同的结果吗?另外,您能用-graph-oneline选项向我们展示您的开发分支的日志输出吗?提交SHA是否不同?是的,它们都具有相同的日志输出,并且相同的SHAsdevelop和new_分支具有相同的日志输出?你能给我们看看吗?这会帮助你弄清楚到底发生了什么并解决你的问题。有时候我们都是初学者。我个人觉得git日志的输出对于一个人来说有点难解析。试试gitk-all。gitk提供了图形化的、更易于理解的输出。-all标志适合初学者,它显示所有分支,而不仅仅是当前分支。好的,谢谢。我昨天刚开始学习使用Git,我还有很多东西要学。@glenwayguy既然你在学习,一定要阅读,特别是第1-3章和第6-6.5章。它是免费的,它教会了我关于使用Git的大部分知识。学习如何以交互方式和非交互方式重新设置基础;在我看来,为了有效地使用Git,rebase是您需要知道的最重要的命令。而且,它往往非常好。我们有时都是初学者。我个人觉得git日志的输出对于一个人来说有点难解析。试试gitk-all。gitk提供了图形化的、更易于理解的输出。-all标志适合初学者,它显示所有分支,而不仅仅是当前分支。好的,谢谢。我昨天刚开始学习使用Git,我还有很多东西要学。@glenwayguy既然你在学习,一定要阅读,特别是第1-3章和第6-6.5章。它是免费的,它教会了我关于使用Git的大部分知识。学习如何以交互方式和非交互方式重新设置基础;在我看来,为了有效地使用Git,rebase是您需要知道的最重要的命令。而且,往往是非常好的。