我正在修改别人的(非git)代码.我下载了原版,随后进行了修改,然后跳了一下枪,并将修改后的版本作为我的第一次提交.这是一个错误,我应该添加原始下载的代码作为我的第一次提交.
然后添加侮辱伤害,我添加原始代码作为我的第一次编辑的分支..换句话说,它现在是一个大混乱:(
简单来说,我看起来像下面的蓝图.C5是实际的原始代码,C1,C2-C6是我的逐步修改(C4是多余的).我宁愿让绿色成为我的历史.

任何想法如何修改历史来实现这一目标?
谢谢很多,
狡猾
我在命令行完成了这个,但是我将插入来自SourceTree的屏幕截图来说明发生了什么.
首先从C5提交中获取提交ID(50da9c3)的前7位或8位数字并将其放入剪贴板或textedit或其他内容 - 稍后您将需要它
为了确认,这是我们的起始状态:

以下是获取所需位置的步骤:
创建一个新的非根分支以开始从命名库构建提交
git symbolic-ref HEAD refs/heads/base
Run Code Online (Sandbox Code Playgroud)
现在从git中删除所有文件和目录
git rm --cached -r .
Run Code Online (Sandbox Code Playgroud)
现在所有文件都"未跟踪",将它们从本地工作目录中删除
git clean -d --force
Run Code Online (Sandbox Code Playgroud)
现在创建一个没有任何内容的提交(这将是将要构建其他所有内容的提交).
git commit --allow-empty -m'Initial Commit'
Run Code Online (Sandbox Code Playgroud)
你的树现在应该是这样的:

现在,樱桃挑选c5提交(你在剪贴板上有什么)
git cherry-pick 50da9c3
Run Code Online (Sandbox Code Playgroud)

现在将master分支重新绑定到基本分支
git rebase --onto base --root master
Run Code Online (Sandbox Code Playgroud)

现在您可以删除base和c4-c5分支
git branch -d base
Run Code Online (Sandbox Code Playgroud)

git branch -D c4-c5branch
Run Code Online (Sandbox Code Playgroud)

请记住,'初始提交'是一个没有文件的空提交,所以不要被愚弄.C5提交实际上是第一个基于内容的提交.