该笔记是廖雪峰的git教程的一个总结
添加文件的操作:
- 初始化:
git init
- 添加指定文件:
git add readme.txt
。 - 添加所有的修改过的、删除的或者未跟踪的文件:
git add -a
- 添加所有修改过或者删除的文件,但是不会添加未跟踪的文件:
git add -u
- 查看路径中所有修改过或删除的,但是没有提交的文件:
git add -i
git的2个区:
- 工作区:当前计算机中可以看到的所有目录
- 暂存区:使用
git add
命令添加的文件,都放到暂存区;之后使用git commit
进行统一提交操作,才最终加入git的开发分支中。git status
显示的是暂存区的内容,显示的修改。
HEAD
是git的头指针,用于切换当前的开发位置。
git版本回退:
- 查看所有的提交信息,仅仅是当前HEAD指针及其之前的:
git log
;使用git log --pretty=online
只显示一行的关键信息。 - 查看所有的提交信息,包括HEAD之前的:
git reflog
。这个本质上是命令的历史。 - 回退到某次提交:
git reset --hard HEAD^
,^
表示HEAD
前的一个,HEAD^^
表示前2个;如果是多个,则使用git reset --hard~100
,表示向前回退100次。这个不会真正删除之前的提交。 - 回退到某个特定的commid_id:
git add reset --hard e475agf
,字母没必要写全,但是需要保证唯一。这个不会删除之前的提交。
git的修改和删除
- 查看工作区和版本库最新版本的文件的区别:
git diff HEAD -- readme.txt
,其他版本类推上面的HEAD
表示方法。 - 恢复文件的修改:
git checkout -- readme.txt
,有两个情况:- 如果readme.txt未被添加到暂存区,那么就恢复到和版本库最新的一致
- 如果readme.txt已经添加到暂存区,那么就恢复到和暂存区的一致
git checkout
用版本库的版本替换工作区的版本- 删除暂存区的修改:
git reaset HEAD readme.txt
。如果文件添加到暂存区,但是不想下次提交,则使用这个命令,使得暂存区的和版本库中的一致。之后再git checkout -- readme.txt
,就可以彻底恢复到之前的状态了 - 删除版本库中的文件:
git rm readme.txt
;之后提交git commit -m "rm readme.txt"
。这是在版本库中删除,无法恢复。 - 删除工作区的文件:
rm readme.txt
,误删从版本库中恢复,git checkout -- readme.txt