1.使用修补命令git commit --amend ,用于对最新的提交进行重新提交以修补错误的提交说明或者错误的提交文件。补提交命令实际上相当于执行了下面两条命令:
git reset --soft HEAD^
git commit -e -F .git/COMMIT_EDITMSG
引用和暂存区会回退到上一次提交之前,从COMMIT_EDITMSG(文末有解释)获取提交消息并开始编辑。 2.先使用git reset HAED^^ 将HEAD指向待修复提交的前一个提交并保持工作区不变,这时就对工作区的文件或提交信息进行修改并提交,可以用实现对提交的压缩或拆分。 3. rebase -i 交互式变基,可以修改git提交的过程,可以实现对提交重排、压缩、拆分、丢弃等操作。 例如,当我们发现最近5次提交都有些不尽人意,这个时候我们只要对5次提交的前一次提交进行伪变基,就可以进入交互式变基界面,可以对提交列表进行编排。 常用选项参数: pick 应用此提交,默认值 reword 应用此提交,可以修改提交说明 edit 应用此提交,但是会在应用时停止,会打开外部编辑器,可以对其编辑 squash 压缩,将此标记的提交和上一次提交压缩为一个提交 fixup 类似squash动作,但是此提交的提交说明被丢弃,即已提交的说明被丢弃 drop 移除此提交 提交列表的顺序可以编排,从该改变提交顺序 4.用git commit --fixup/--squash 以及git rebase -i --autosquash 修改历史,这种方法和上述第3种类似,只不过操作顺序上有点区别而已,这种方式是先提交,后修改历史;提交过程种标记上,然后再批量整理提交历史。--fixup 和--squash 参数对新创建的提交来进行标记,新提交会包含前缀"fixup!"、“squash!”,这样的提交在提交整理时将会融合到它所修复的提交当中去。 git commit --fixup=<commit> 创建对<commit> 提交进行修正的提交 gti commit --squash=<commit> 创建对<commit> 提交压缩的提交 在提交了一系列修复提交之后,就可以使用git rebase -i --autosquash 自动进行提交的修复。 git目录 .git/ 根目录 .git/hooks/ 存放一些shell脚本 .git/info/exclude 仓库的一些注释信息 .git/logs/ 存放所有更新的引用记录 .git/objects/ 存放所有的Git对象,对象的SHA1哈希值的前两位是文件夹名称,后38位作为对象文件名。 .git/refs/ 存放了所有引用内容 .git/refs/heads/ 本地引用 .git/refs/remotes/ 远端引用 .git/refs/tags/ 标签引用 .git/CHERRY_PICK_HEAD 使用cherry-pick 命令会更新此commit .git/COMMIT_EDITMSG 最新一次commit所附带的描述 .git/config 仓库的配置信息 .git/description 仓库的描述信息 .git/FETCH_HEAD 使用fetch命令后会更新此commit,用于组合操作中的引用暂存,pull会先fetch再merge .git/HEAD 当前检出的commit .git/index 暂存区(二进制文件) .git/MERGE_HEAD 使用merge命令会更新此commit,对应合并进当前分支的commit .git/ORIG_HEAD 指向操作前的Head,用于某些命令的回退 .git/packed-refs 存放git运行垃圾回收机制后的一些引用,用于提高性能,垃圾回收不影响正常的Git功能,refs/文件夹下的一些内容有可能会被压缩到该文件内 .git/REBASE_HEAD 使用rebase命令会更新此commit
切记:不要改变共享的历史记录
|