git 常用命令

记录一些常用的 Git 命令,便于查看

config

设置用户名和邮箱

1
2
git config –global user.name "[name]"
git config –global user.email "[email]"

别名配置

1
2
3
4
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status

init

初始化一个仓库

1
2
3
4
5
# 将当前目录初始化成一个Git代码库
git init

# 新建一个目录,将其初始化为Git代码库
git init [repository name]

clone

1
2
3
4
5
# 克隆现有的仓库
git clone [repository url]

# 克隆现有的仓库并自定义本地仓库名
git clone [repository url] [new repository name]

add

暂存改变的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 暂存指定文件
git add [file1] [file2] ...

# 暂存所有改变(新增,修改,删除)
git add -A

# 暂存所有改变(新增,修改,删除),git v1 版本不会暂存 删除文件
git add .

# 暂存除删除外的所有改变(新增,修改)
git add --ignore-removal .

# 暂存除新增外的所有改变(修改,删除)
git add -u

commit

提交

1
2
3
4
git commit -m "[commit message]"

# 跳过 add 步骤,直接提交
git commit -a -m "[commit message]"

fetch

1
2
3
4
5
# 下载远程仓库的所有变动
git fetch [remote]

# remove any remote-tracking references that no longer exist on the remote
git fetch --prune

pull

1
2
# 取回远程仓库的变化,并与本地分支合并
git pull [remote] [branch]

push

1
2
3
4
5
6
7
8
# 上传本地分支 branch1 到远程仓库
git push origin branch1

# 强行推送当前分支到远程仓库,即使有冲突
git push [remote] --force

# 推送所有分支到远程仓库
git push [remote] --all

checkout

1
2
3
4
5
6
7
8
# 切换分支
git checkout branch1

# 创建并切换到 branch1 分支
git checkout -b branch1

# 丢弃指定文件的修改,恢复至上一次 git commit 或 git add 时的状态
git checkout -- file

branch

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 查看分支
git branch

# 创建分支 branch1
git branch branch1

# 删除本地分支
git branch -d branch1

# 强制删除本地分支
git branch -D branch1

# 删除远程分支(若报远程分支不存在,可以执行 git fetch --prune)
git push origin --delete branch1

merge

1
2
# 合并 branch1 到当前分支
git merge branch1

diff

1
2
3
4
5
# 比较当前分支文件的修改
git diff

# 比较指定文件的修改
git diff file

status

查看当前分支的状态

1
git status

log

查看提交记录

1
2
3
git log

git log --pretty=oneline

reflog

查看操作的历史命令记录

1
git reflog

reset

1
2
3
4
5
# HEAD^ 表示上一个版本,HEAD^^ 表示上上一个版本,HEAD~n 表示回退 n 个版本
git reset --hard HEAD^

# 回退到指定提交,commit id 没必要写全,前几位就可以了,Git会自动去找
git reset --hard [commit id]

关联并提交到远程仓库

1
2
3
git remote add origin [repository url]

git push -u origin master

stash

git 暂存,在临时需要开发其他功能时暂存当前修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 暂存当前修改
git stash save 'message'

# 查看已有的暂存
git stash list

# 清空已有的暂存
git stash clear

# 移除编号为 0 的暂存
git stash drop stash@{0}

# 使用编号为 0 的暂存(不指定则默认使用最近的)
git stash aplly stash@{0}

# 使用编号为 0 的暂存,并移除该暂存
git stash pop

# 查看编号为 0 的暂存
git stash show stash@{0}

# 从 stash 创建分支
git stash branch [branch name]

tag

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 查看 tag
git tag

# 用特定的搜索模式列出符合条件的 tag
git tag -l 'v1.4.2.*'

# 新建 tag
git tag -a [tag name] -m [tag message]

# 查看指定 tag 的信息
git show [tag name]

# 推送 tag
git push origin [tag name]

# 一次推送所有本地新增的 tag
git push origin --tags

# 删除本地 tag
git tag -d [tag name]

# 删除远程 tag
git push origin :refs/tags/[tag name]

仓库迁移

Git仓库完整迁移 含历史记录

方法一

1
2
3
4
5
6
7
8
# 1. 从原地址克隆一份裸版本库
git clone --bare git://github.com/username/project.git
cd project.git

# 2. 然后到新的 Git 服务器上创建一个新项目

# 3. 以镜像推送的方式上传代码到新服务器上的新仓库
git push --mirror git@mygit.com/username/newproject.git

方法二

1
2
3
4
git clone --mirror <URL to my OLD repo location>
cd <New directory where your OLD repo was cloned>
git remote set-url origin <URL to my NEW repo location>
git push -f origin