GIT笔记
git add -A和 git add . git add -u在功能上看似很相近,但还是存在一点差别
git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。
git add -u :他仅监控已经被add的文件(即tracked file),他会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked file)。(git add --update的缩写)
总结:
· git add -A 提交所有变化
· git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
· git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
执行:$ git checkout HEAD – test.txt
暂存区的文件没了,工作区的文件被上次提交的文件换掉了
执行:$ git checkout – test.txt:
用暂存区中filename文件来覆盖工作区中的filename文件。
git checkout -- file;撤销对工作区修改;这个命令是以最新的存储时间节点(add和commit)为参照,覆盖工作区对应文件file;这个命令改变的是工作区
git reset HEAD -- file;清空add命令向暂存区提交的关于file文件的修改(Ustage);这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文件同该命令运行之前无任何改变
git reset HEAD
是将咱暂存区和HEAD的提交保持一致, git reset HEAD 会把暂存区恢复成HEAD
git reset --hard HEAD
是将工作区、暂存取和HEAD保持一致,执行 git reset --hard HEAD
命令 会将工作区和暂存区恢复成HEAD
git-diff - Show changes between commits, commit and working tree, etc
git diff 显示提交与提交之间、提交与工作树之间的文件修改。
git diff 显示本地开发工作中已经修改但未提交至暂存区的文件和已经提交至暂存区文件的修改
git diff HEAD 显示的是已提交到工作树中文件和未提交到工作树中文件的所有修改。查看已缓存的与未缓存的所有改动。
git diff --cached 上一次最后一次提交到工作树中文件(也就是head)与暂存区内文件的改动。查看已缓存的改动。
总结一下,可以想象有三个环境,一个是我们本地正在编辑的开发环境,一个我们提交的版本库环境,还有中间一个暂时存放代码的暂存区。
git diff 就是我们本地正在开发的但未提交到暂存区文件和之前已经提交到暂存区里的文件的对比;
git diff head 就是已经提交到版本库环境中的文件和未提交到版本库环境中文件的所有修改对比;
git diff --cached 最后一次提交到版本库环境中文件和暂存区中文件的修改对比;
缓存区 ↔ 库(HEAD):gitdiff --cached
工作区 ↔缓存区:gitdiff
工作区 ↔库(HEAD):gitdiff HEAD -- filename
库 ↔库:git diff 243550a 24bc01b#较旧的id 较新的id