创建版本库:(尽量不要在父级目录中使用中文 git会自动为我们创建一个master分支,所以默认提交到master分支上)
$
mkdir learngit
$
cd learngit
$
pwd //查看当前目录
把目录设置为代码仓库:
$ git init
在代码仓库下的地址
将文件添加到仓库:
$
git add readme.txt //实际上就是把文件修改添加到暂存区
将文件提交到仓库:(文件更新提交:$ git commit -am ""
实际上就是把暂存区的所有内容提交到当前分支
)
$ git
commit -m "wrote a readme file"
//-m后表示提交的说明
查看仓库状态:
$
git status
查看文件修改:
$ git diff readme.txt
查看历史记录:
$ git log
$ git log --pretty=oneline //查看一行信息
回退到上一个版本:
HEAD:当前版本
上一个版本:HEAD^
更早版本:HEAD~100
$ git re
set --hard HEAD^
查找指定版本:
$ git re
set --hard 3628164 //"
3628164
" commit id的前几位
git命令记录:
$
git
reflog
工作区和版本库的关系:
工作区:即工作目录
版本库:即.git目录
目录中有暂存区(stage)和自动创建的分支master,并有一个head指针指向master
|--git是管理修改,所以不将修改add到暂存区中的话,commit是无法把新的修改添加到分支里的
查看文件内容:
$ cat readme.txt
撤销文件修改返回到最近一次git commit或git add时的状态
$
git checkout -- readme.txt
命令git checkout -- readme.txt
意思就是,把readme.txt
文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
将暂存区的修改撤销,重新放回工作区:
$ git re
set HEAD readme.txt
小结
又到了小结时间。
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file
,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
删除文件:
$
rm test.txt
将文件从版本库中删除:(小心操作!可能丢失最近的一次操作)
$ git rm test.txt
$ git
commit -m "remove test.txt"
将版本库中的文件替换工作区的文件:
$
git checkout -- test.txt