Git 常用命令大全

166 阅读5分钟

今天回忆了一下, 我上次用Git还是好几个月前搭建我的个人博客, 部署在GitHub上面的时候

唉, 这惨不忍睹的数据

于是, 我决定重新捡起来, 写一篇博客记录一下这个学习的过程

对于windows 用户, 我要推荐一款神器,让你无需配置就能使用一个真正干净的Linux终端!

当当当, 神器登场, 他就是 Cmder.

虽然比不上oh-my-zsh (用过的都知道有多逆天), 但是比win自带的cmd好用多了, 而且, 它自带了git-for-windows, 所以, 你不用再去安装Git啦, 闲话就扯到这里, 下面正式开始Git教程

注意, $cmder$ 所在得文件夹中不能含有空格, 不要问我为什么知道的

参考文献 廖雪峰的Git教程

1. 版本库

版本库, 一个仓库, 创建并初始化之后Git就可以管理和跟踪这个仓库内的文件的创建, 修改与删除.

1.1 创建一个空目录
mkdir learngit
1.2 将这个空目录初始化为Git可以管理的仓库
cd learngit
git init

如果要真正使用版本控制系统,就要以纯文本方式编写文件。因为它只能跟踪文本文件的改动!

1.3 添加一个文件到仓库
git add <filename> //添加文件
git commit -m "message" //提交文件

2. git status命令

git status命令让我们掌握仓库当前的状态, 比如有什么文件被修改了, 新增了什么文件 \dots

3. git diff命令

如果我们想要具体看看修改了什么内容, 那么我们可以使用git diff命令

4. git log命令

查看提交历史, 显示从最近到最远的提交日志, 你会看到commit ID(版本号), 是一个很大的数字, 用于防止冲突

5. 如何回退版本? git reset命令

Git中, 用HEAD表示当前版本, 上一个版本就是HEAD^, 上上个就是HEAD^^ \dots 上一百个版本写作 HEAD~100.

git reset --hard <版本号>

git reset --hard HEAD^ //回退到上个版本

也可以直接指定commit id, 指定前几位让git可以区分就行

6. git reflog命令

用来查看命令历史, 会输出你之前执行过的每一次的命令

7. 放弃工作区的修改 git checkout -- file命令

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

8. 撤销暂存区的修改 git reset HEAD <file>

用命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区

9. 删除与恢复操作

  1. 确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit
$ git rm test.txt
rm 'test.txt'

$ git commit -m "remove test.txt"
[master d46f35e] remove test.txt
 1 file changed, 1 deletion(-)
 delete mode 100644 test.txt
  1. 如果是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本
git checkout -- test.txt

命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

10. 关联远程仓库

可以将本地的仓库与远程的空仓库关联起来, 也可以将远程的仓库克隆到本地

注: 第一次push时要加上 -u 参数

11. 分支管理

11.1 创建并切换分支: git switch -c name

git switch -c name 相当于 :

git branch name
git switch name 

其实也有一种用`checkout`的用法, 不推荐, 因为`checkout`还用于撤销操作, 容易搞混

11.2 查看当前分支: git branch命令

git branch命令会列出所有的分支, 当前分支前面会有一个 *

11.3 整合分支: git merge name命令

git merge 命令用于合并指定分支到当前分支。

11.4 删除分支: git branch -d name命令

合并完成后, 就可以放心的删除那个分支了

11.5 查看分支合并情况 git log --graph --pretty=oneline --abbrev-commit命令

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

12. 储藏现场 'git stash'命令

将当前分支的工作区的内容储藏起来, 让工作区看上去是干净的.

工作现场存到哪去了?用git stash list命令看

如何恢复工作现场?

一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

另一种方式是用git stash pop,恢复的同时把stash内容也删了:

13. 查看远程库的信息 git remote -v

14. 从本地推送分支 git push origin branch-name

15. 从远程抓取分支 git pull

如果有冲突, 要先解决冲突

16. 标签

16.1 创建标签 git tag <name>

命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id

16.2 查看标签 git tag

16.3 删除一个本地标签 git tag -d <tagname> 删除一个远程标签 git push origin :refs/tags/<tagname>

16.4 推送标签

16.4.1 推送某个标签 git push origin <tagname>
16.4.2 一次性推送全部标签 git push origin --tags

17. 关于github

如何参与一个开源项目呢?

fork到你自己的仓库, 然后在git clone到本地, 因为从你的账号克隆, 你才有权限提交修改.

你可以推送pull request给官方仓库来贡献代码。