创建版本库
总结来说就是三步:(<>只是一种指示,实际的命令中不包含)
- 在一个文件夹下,git init初始化,将仓库建好;
- git add < file > ,把文件添加到仓库;
- git commit -m < “message” >,把文件提交到仓库;
查看仓库状态
两个命令:
- git status可以让我们时刻掌握仓库当前的状态,即哪些文件修改过了;
- 当明确哪个文件修改过了,就可以使用git diff命令查看具体修改的细节了。
Tips:
git diff 可以用来比较两个版本之间的区别,命令如下:git diff commit-id-1 commit-id-2 >diff.txt.比如我的boss让我实现一个功能,等我完成之后,他需要对比一下我的代码和之前代码的区别,但是在这个过程中,我自己可能迭代了很多版本了,只看和之前版本的区别显然不能满足需求,这时候就可以使用该命令,找到最开始的版本号,和当前的版本号,使用该命令即可。当然可以不把输出结果输出到diff.txt中,直接显示在屏幕上也是可以的。另外一般commit-id-1是最开始的版本号,commit-id-2是最新的版本号。
时空穿梭
3个命令:
- 就像玩仙剑时的存档,每次想回溯回去的时候,都得先看看现在有哪些存档。git也是这样,每次的commit就对应这样的一个存档,查询每次commit的命令如下: git log
某次git log的输出信息:
$ git log
commit dc1bd471271940a32e01c083fd5814d4176c83c9 (HEAD -> master)
Author: Matthew-Haonan <jhwanghaonan@sina.com>
Date: Thu Nov 14 17:18:27 2019 +0800
append GPL
commit 7601eab3f7edddd172052d122d2ae5e6f0889984
Author: Matthew-Haonan <jhwanghaonan@sina.com>
Date: Thu Nov 14 17:12:44 2019 +0800
add a new word distributed
commit 898a227f7968f1543abe7709f12a022eb3459e76
Author: Haonan Wang <jhwanghaonan@sina.com>
Date: Thu Nov 14 16:30:50 2019 +0800
add a test txt
如果嫌弃这样的输出太复杂了,有很多作者、时间的信息,还可以这样敲: git log --pretty=oneline, 可以得到简洁输出输出如下:
$ git log --pretty=oneline
dc1bd471271940a32e01c083fd5814d4176c83c9 (HEAD -> master) append GPL
7601eab3f7edddd172052d122d2ae5e6f0889984 add a new word distributed
898a227f7968f1543abe7709f12a022eb3459e76 add a test txt
- 查看完存档之后,如果想穿越到某一次存档,需要用到git reset命令,具体形式如下:
git reset --hard < commit id(版本号) > - 想象这样一种情况,当你恢复到上一次的存档的时候,你反悔了想回去最新的状态,但是这时候git log已经没有了最新的那次记录,这怎么办呢,git还有个命令让你吃后悔药,就是 git reflog,它记录了我们敲的每一条命令,因此能看到那个最新的版本号,这时候再用git reset命令就能回到最新的版本了。(bash窗口关闭了重启,依然能使用)
重要概念:暂存区
版本库有两块内容,分别是暂存区与分支。
前面我们说将文件添加到版本库需要两步:先git add,再git commit。其实git add就是把文件添加到了暂存区,git commit就是一次性的把暂存区的所有内容提交到当前分支。
详情参见廖雪峰的git教程,有图很方便理解。
删除
删除命令: git rm < file name> 提交到 暂存区stage,然后git commit提交到分支。
远程提交
如果你想把本地git的仓库推送到远端服务器(例如github),使用如下命令:git push origin < 分支名 >,如果远程服务器中的仓库是刚创建的新仓库,有几点需要注意,参考廖雪峰老师的讲解
分支
- 创建分支dev,使用如下命令:
git branch dev - 查看分支情况,使用如下命令:
git branch - 创建并切换到新的dev分支,使用如下命令:
git switch -c dev(老版本git不支持switch命令,使用git checkout -b dev) - 直接切换到现有的master分支,使用如下命令:
git switch master (老版本的git仅支持 git checkout master切换分支) - 在master分支的情况下,把dev分支的更新并入master,使用如下命令:
git merge dev - 合并之后,可以删除dev分支了,使用如下命令:
git branch -d dev