必须好使的git命令

git设置颜色高亮显示

1
git config --global color.ui true

git 命令别名设置

1
git config --global alias.br branch

查看git提交日志

1
git log

查看最近的提交内容

1
2
3
git show #最近一次
git show HEAD^ #往前推一次,等于git show HEAD~1
git show HEAD^^ #往前推两次,等于git show HEAD~2

找到规律的同学应该知道怎么看更早之前的记录了

一次加入所有修改,包括delete

1
2
git add -u #一次加入所有被修改的内容,包含 modified 及 deleted
git add --update #同上

移动文件或重命名

1
2
git mv my_folder/numbers.txt . #将my_folder/numbers.txt文件移动到当前目录,文件名不变
git mv numbers.txt num.txt #修改文件名

Git将”尚未被提交”的内容分成三种类型,分別是

  • Changes to be committed(将要提交的内容)
  • Changes not staged for commit(被修改但未提交)
  • Untracked files(没有如版本库的文件)

撤销修改

  1. 变回未修改状态
1
git checkout -- <file>
  1. 回到未提交状态
1
git reset HEAD <file>

回到指定版本

1
2
3
4
5
git log --oneline #显示log日志,但只显示commit id和提交描述
a2ba80 First commit
80635e7 增加index.html文件
c65ef5e Create README.md

选择commit id 使用下述命令回到指定版本

1
git reset --hard 5a2ba80

查看git历史修改记录

1
2
3
4
git reflog #查看所有记录
80635e7 HEAD@{2}: commit: 增加index.html文件 #三列;1是commit id;2是short name;3是描述
git show <commit id> #查看指定记录
git show <short name> #同上

分支管理

创建并删除分支

1
2
3
4
git branch develop
git checkout -b <new branch name> #建立分支并切换到该分支
git branch -f <new branch name> <commit id> #在指定版本上建立分支
git branch -D <branch name> #删除分支

修改远程分支名称

一般来说,我们主要的分支都是origin,但其实这个名字是可以改的

1
git remote rename origin github

上传分支需改

1
git push <remote name> <branch name>

删除远端分支

1
git push <remote name> :<branch name>

查看分支

1
2
git branch #只看本地分支
git branch -a #查看本地及远程分支

版本暂存

1
2
3
4
5
6
7
8
git stash #暂存目前修改的内容
git stash list # 列出所有暂存的内容
git show stash@{0} #显示暂存内容的详情
git stash pop #取出最近一次暂存的内容
git stash pop stash@{n} #取出指定的暂存内容
git stash drop #删除暂存的内容
git stash drop stash@{n} #删除指定的暂存内容
git stash clear #清空暂存区

子模块

添加子模块

如果我们用到外部依赖的库的时候,通常需要使用子模块来实现

1
git submodule add git@github.com:jquery/jquery.git jquery #添加jquery作为子模块

初始化子模块

使用子模块的项目在clone出新的项目后,必须初始化子模块内容

1
2
git submodule init
git submodule update

在clone的时候加上--recursive可以直接完成子模块的初始化

1
git clone --recursive git@github.com:zlargon/git-test.git

删除子模块

  1. 删除子模块
    rm -rf <submodule path>
  2. 刪除.gitmodules 里边的submodule设置
  3. 提交修改
  4. 刪除 .git/config 里面的submodule 设置内容
  5. 刪除 .git/modules/里边的内容

参考资料