教程连接https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013743256916071d599b3aed534aaab22a0db6c4e07fd0000
-
mkdir learngit创建一个空目录
-
进入该路径,用 git init 将该目录变成git可管理的仓库
-
git 只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等
-
在创建的新目录下新建一个.txt文件,并输入内容 (eg:1.txt)
-
git add 1.txt 将文件添加到仓库
-
git commit -m "wrote a 1 file" 将文件提交到仓库
-
git status 查看当前仓库状态
-
git diff 查看diffierent,即查看文件修改的内容
-
git log 显示最近到最远的日志 git log --pretty=oneline
-
git reset --hard HEAD^ 版本回退到上一个,git reset --hard HEAD^^上两个 git reset --hard HEAD~100上100个,git reset --hard 1090a 回退到某一指定版本号,其中版本号为git log --pretty=oneline中显示的版本号的前几位
-
git reflog 记录每一次命令
- 工作区:可见的目录,即每个文件夹都是一个工作区,例如本例中的learngit文件夹,其中有一个隐藏文件夹.git,这是版本库,版本库中有一个部分叫暂存区(称为stage,或者index)还有一个部分叫分支(master),以及指向master 的指针HEAD,
把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用
git add
把文件添加进去,实际上就是把文件修改添加到暂存区;第二步是用
git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。git add
实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit
就可以一次性把暂存区的所有修改提交到分支。 -
Git跟踪并管理的是修改,而非文件。
第一次修改 ->
git add
-> 第二次修改 ->git commit
你看,我们前面讲了,Git管理的是修改,当你用
git add
命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit
只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。 -
git checkout -- readme.txt 撤销未被add的修改
-
git reset HEAD readme.txt 将add到暂存区的版本撤回到工作区,再git checkout -- readme.txt,即可撤销本次修改
-
已经commit的修改,用版本回退 git reset -hard HEAD^,不过,这是有条件的,就是你还没有把自己的本地版本库推送到远程。还记得Git是分布式版本控制系统吗?我们后面会讲到远程版本库,一旦你把
stupid boss
提交推送到远程版本库,你就真的惨了…… -
rm test.txt 删除文件,但是文件删除后工作区和版本库不一致了,需要用 git rm test.txt 和 git commit -m "remove test.txt" 将删除文件这个修改提交。
-
git checkout -- test.txt 若删错文件,则可撤销上次操作。