git的相关命令
通过git init
命令把当前目录变成Git可以管理的仓库:
git init
添加文件到git仓库
# 1用命令git add告诉Git,把文件添加到仓库:
git add XXX
# 用命令git commit告诉Git,把文件提交到仓库
git commit -m "some words about change"
为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
当修改了之前提交到git仓库的文件后,我们可以使用git status查看结果
git status
可以用git diff
这个命令查看具体修改了什么内容
git diff
在Git中,我们用git log
命令查看版本控制系统之前提交过的历史记录:
git log
git log命令显示从最近到最远的提交日志。
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline
参数:
git log --pretty=oneline
Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,为什么commit id需要用这么一大串数字表示呢?因为Git是分布式的版本控制系统,后面我们还要研究多人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了。
在Git中,用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
要把当前版本回退到上一个版本,就可以使用git reset
命令:
git reset --hard HEAD^
进行回退后用git log
查看版本时,最新的版本已经没有了。
但是还是可以通过commit id回到现在的版本:
git reset --hard 3628164
版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。
Git提供了一个命令git reflog
用来记录你的每一次命令,可以通过这个命令找到想去的版本号
git reflog
用git diff HEAD -- readme.txt
命令可以查看工作区和版本库里面最新版本的区别。
git diff HEAD -- readme.txt
git checkout -- file
可以丢弃工作区的修改。
git checkout -- file
如果对文件进行了删除,因此工作区和版本库就不一致了,git status
命令会立刻告诉你哪些文件被删除了。
现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm
删掉,并且git commit
提交修改:
git rm XXX
git commit -m "remove XXX"
现在,文件就从版本库中被删除了。
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
git checkout -- XXX
git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
命令git rm
用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
命令git checkout -- XXX
意思就是,把XXX
文件在工作区的修改全部撤销,这里有两种情况:
一种是XXX
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是XXX
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit
或git add
时的状态。
如果需要修改已经git add
的内容的话,此时文件还在暂存区中,用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:
git reset HEAD XXX
git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。
本博客来源于学习中的笔记:廖雪峰 git