Home git系统学习笔记
Post
Cancel

git系统学习笔记

本列表笔记为系统学习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 -- *.pygit restore *.py无法恢复tasks.py,但是git checkout -- .git restore . 可以

4. 关于git rebase

git rebase Reverts all commits since the current branch diverged from upstream branch, and then re-applies them one-by-one on top of changes from the HEAD of upstream branch.

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.保存文件退出

This post is licensed under CC BY 4.0 by the author.