本列表笔记为系统学习git官方文档及日常工作中积累的值得注意的知识点列表。
更新:在此推荐一下本人开发的zsh的git插件 goofygit
1. 关于git add
git add . 只是将当前目录下所有改动添加到stage
git add --all/-A 则是所有文件
git add -u 则是添加除了untracked以外(即commit 和 staged 中都没有的文件)的所有改动
2. 关于git commit
git commit -a 不会带上untracked文件
git commit --amend amend本质上时撤销上一个commit,改了之后用同样的元信息再建一个新commit替换,所以只带上staged,不管working tree中未提交的,加上-a即可带上。注意:用同样的元信息,所以连commit时间都不变
3. 一个删除恢复的问题
将文件删除后:
1
2
gss
D tasks.py
使用git checkout -- *.py 和 git restore *.py无法恢复tasks.py,但是git checkout -- .和 git restore . 可以
4. 关于git rebase
git rebase
5. 关于git rm
git rm --cached 中cached的意思是,只从staged中移除,但是不管working tree中的文件,改没改都扔那了。
如果此时该文件在gitignore中,则会从status里消失,当然working tree中文件依然在 如果不在gitignore,该文件又会出现在untracked中
git rm 不加cache的时候, 如果文件有新修改,不管在(新加)不在gitignore中,都会报错,因为有新修改,就会提示要么加cache保留文件,要么加-f强制删除 如果没有修改,就直接全部扬了,staged中显示删了,working tree中也消失了
总结一下就是,cache的作用就是文件夹下留不留这个文件,对于文件怎么显示,参考一下gitignore,按原有规则来 对于不加cache,大方向是斩草除根,所以有修改提示一下,然后报错退出
6.关于git rebase
git reset 只能累积的往前退,但是不能抽出某一个commit抛弃掉。 要去掉历史中的特定一个或多个commit,可以使用git rebase -i,在文件中将要去掉的commit改成drop,保留的依旧保持pick即可。
1.git log获取commit信息 2.git rebase -i
commit-id 为要删除的commit的前一个commit号 3.编辑文件,将要删除的commit之前的单词改为drop 4.保存文件退出