Git 命令简记

虽然现在各种 Git 可视化工具都很好用,但是常用命令能熟练使用还是比较好的。好记性不如烂笔头,这里记下 git 命令,方便日后快速翻阅。

初始配置

1. 初始化目录

进入相应目录,使用命令 git init,会在目录下生成 .git 目录,里面都是 git 的记录信息,切不可乱删除。

2. 设置库级别签名

仅在当前本地库有效:

1
2
git config user.name ChiFuYong
git config user.email g3545616@gmail

详细信息保存于当前库目录的 .git/config 中,使用 cat conf 即可查看。

3. 设置全局级签名

对登录系统的当前用户全局有效:

1
2
git config --global user.name ChiFuYong
git config --global user.email g3545616@gmail

详细信息保存于 ~/.gitconfig 中,使用 cat ~/.gitconfig 可看到如下信息。

注:库级别优先于全局级别,二者都有时采用库级别。签名用于区分不同开发人员身份,与远程 Git 服务器上的账号密码无关。

设置全局级签名

4. .gitconfig 中配置忽略文件(java.gitignore

编辑 vim ~/.gitconfig,所有 git 库都会忽略相应文件,添加内容如下:

1
2
[core]
excludesfile = /home/guan/Java.gitignore

java.gitignore 内容如下(详细可参考 Github 项目):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs
hs_err_pid*
# Eclipse ignore
.classpath
.project
.settings
# Maven Compiled Directory
target
# IDEA ignore
.idea
*.iml
out

基本操作命令

  • git init:初始化仓库
  • git status:查看工作区、暂存区状态
  • git add [file name]:将工作区的文件(新建或修改)添加到暂存区,git add . 表示添加所有修改过的文件到暂存区
  • git commit -m "commit message" [file name]:将暂存区的文件提交到本地库,-m 表示此次提交的修改概述
  • git log:查看 commit 的详细历史记录,其他常用命令参数如下:
1
2
3
git log --pretty=oneline
git log --oneline
git reflog

三者区别如下图:

基本操作命令

  • git diff [file name]:比较工作区中文件和暂存区差别
  • git diff [版本号] [file name]:工作区文件和本地库历史版本比较
  • git reset:版本回退/前进,有三种方式,参数作用如下:
1
2
3
--soft    # 仅仅在本地库移动 HEAD 指针
--mixed # 1. 在本地库移动 HEAD 指针 2. 重置暂存区(默认方式)
--hard # 1. 在本地库移动 HEAD 指针 2. 重置暂存区 3. 重置工作区

git reset --hard [局部版本索引] 可直接恢复到相应版本,git reset --hard HEAD^ 表示回退到上个版本(多少个 ^ 代表回退多少个版本),git reset --hard HEAD~n 表示后退 n 步。

分支管理命令

  • git branch -v:查看全部分支
  • git branch [branch name]:创建分支
  • git branch -d [branch name]:删除分支
  • git checkout [branch name]:切换分支
  • git merge [branch name]:把指定分支合并到当前分支
  • git rebase [branch name]:从当前分支合并指定分支,和 merge 有所区别,会把 commit 内容暂存起来然后再合并,合并后不会导致分叉

暂存操作命令

  • git stash save "信息":暂存当前工作区和暂存区内容,工作区将会变干净,开发时在需要排查其他分支的 bug 问题时常用
  • git stash list:显示暂存过的所有列表
  • git stash pop:恢复到最新的暂存数据到工作区,默认会把工作区和暂存区的改动都恢复到工作区。git stash pop stash@{X} 可恢复到某个暂存记录,@{X} 通过 git stash list 命令可以看到。注:git stash pop 恢复暂存数据后,会删除恢复的那条暂存记录(类似于弹栈弹出去了)
  • git stash apply:除了恢复后不会删除暂存记录,其他和 git stash pop 功能一样
  • git stash drop stash@{X}:删除暂存的一条记录,@{X} 通过 git stash list 命令可以看到
  • git stash clear:删除所有暂存的记录

远程相关命令

  • git remote -v:查看当前所有远程地址别名
  • git remote add [origin] [远程地址]:添加远程服务器关联地址,取名为 origin(默认)
  • git remote remove [origin]:删除 origin 远程关联地址
  • git clone [https://github.com/....]:克隆远程服务器仓库代码(默认拉取 master 分支),加上 -b [branch name] 参数可以拉取指定分支
  • git fetch:更新本地的远程跟踪分支
  • git pull:相当于 fetch + merge,先更新远程跟踪分支(例如 origin/master),再合并到本地分支,有冲突需要解决冲突
  • git push [别名] [分支名]:推送代码到远程服务器,有冲突需要 pull 解决代码冲突后再 push 到远程服务器