Git管理修正(取消跟踪、合并commit)

本文总结了最近使用Git时候遇到的两个问题:
1. 当将不必要跟踪的文件加入到仓库后如何处理?
2. 提交了多个功能相同的commit后如何处理?

总结经验

  1. 在创建仓库的一开始,就要设置号.gitignore文件,用于过滤掉不需要跟踪的文件和文件夹
  2. 谨慎提交commit,确保每个commit中所有的改动都是跟同一个任务相关的。

我是怎么解决上述两个问题的

1. 移除对文件/文件夹的跟踪,但不删除

  • 使用命令git rm --cached ignore_target_file 删除对某个文件的跟踪
  • 新建.gitignore文件,使用下列规则添加要忽略的文件或者文件
    • 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
    • 可以使用标准的 glob 模式匹配。
    • 匹配模式最后跟反斜杠(/)说明要忽略的是目录
  • 举例,我的.gitignore文件内容如下
# 忽略.gitignore文件
.gitignore
# 忽略.idea/文件夹
.idea/
# 忽略target/文件夹
target/

执行移除,新建.gitignore文件之后,再次git status就可以看到,这些讨厌的多余文件已经不被跟踪了。什么样的文件需要被忽略?编译生成的文件夹,如target目录;机器自动生成的,我们不会手动修改的隐藏文件,如.idea目录;中间文件,例如java项目中的.class文件。

2. 合并多个相似的commit

  • git rebase -i HEAD~4
  • 将除了第一行(最老的那个commit)之外的行首的pick全部换成squash
  • :wq保存并推出
  • 修改最新的commit message即可

参考资料

  1. Git基础–记录每次更新到仓库
  2. Git使用规范流程
  3. Git常用配置
原文地址:https://www.cnblogs.com/javaadu/p/11742623.html