精选的 Git 操作清单

精选的 Git 操作清单

如果程序员有兵器排行榜,那么 Git 一定能排到前三!下面看看我为你精选的一些常见 Git 操作。

⚠️ 注意:

  1. $符号开头的一些变量,需要你手动替换成实际情况。
  2. 所有 git 命令后面加上 -h,可以查看详细的帮助。

1 配置

配置有一个通用属性就是作用域,全部仓库有效使用 --global,当前仓库有效使用 --local,下面在我仅会列出的 --global 的命令,如果你只需要对当前仓库使用,可以自己替换成 --local

1.1 常见配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 基本配置
git config --global user.name $your_name
git config --glbbal user.email $your_email

# 查看配置
git config --global --list

# 取消某个配置
git config --global --unset $config_item

# 保存账户和密码
git config credential.helper store

# 别名
git config --global alias.cm commit
git cm -m $commit_message

1.2 配置代理

为啥要给 Git 配置代理呢? 一个字:

比如我在不使用代理时大概 10k/s,而配置了以后 1m/s 以上,爽的飞起!

1
2
3
4
5
6
7
8
9
10
11
12
## 设置代理
# http 协议
git config --global https.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080

# sock5 协议
git config --global http.proxy socks5://127.0.0.1:1080
git config --global https.proxy socks5://127.0.0.1:1080

## 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy

2 分支

2.1 列出分支

1
2
3
4
5
# 列出所有本地分支
git branch -v

# 列出所有本地和远程分支
git branch -av

2.2 创建分支

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 基于当前分支创建新分支
git branch $new_branch_name

# 基于指定分支创建新分支
git branch $new_branch_name $branch_name
# 这个指定分支既可以是本地分支,也可以是远程分支,比如我想基于远程的 dev 分支创建一个本地的 dev 分支
git branch dev origin/dev

# 基于 commit 创建新分支
git branch $new_branch_name $commit_id

# 创建并切换到该分支
git checkout -b $new_branch_name
# 这个做法仅仅算是一个语法糖,上面步骤相当于下面的两步
git branch $new_branch_name
git checkout $new_branch_name
# 因此上面的 3 种创建方式都可以用它来替换

2.3 删除分支

1
2
3
4
5
6
7
8
# 删除已经合并的分支
git branch -d $branch_name

# 强制删除分支
git branch -D $branch_name

# 删除远程分支
git push origin --delete $branch_name

3 撤销

1
2
3
4
5
6
7
8
# 撤销尚未暂存的文件(第一次 git add)
git rm --cached $file
# 撤销已经修改但尚未暂存的文件,文件的修改会消失
git checkout -- $file
# 撤销已暂存的文件的暂存操作(撤销 git add),文件的修改依旧存在
git reset HEAD $file
# 撤销暂存文件,删除文件的修改
git reset --hard HEAD $file

4 比较

1
2
3
4
5
6
# 比较当前修改(未暂存)
git diff
# 比较已暂存的修改
git diff --cached
# or
git diff --staged

5 删除

1
2
3
4
5
# 删除文件,并暂存删除操作
git rm $file
# 相当于
rm $file
git add $file

6 标签

1
2
3
4
5
6
7
8
9
10
# 轻量标签,只是一个引用
git tag $tag_name
# 附注标签,一个完整对象
git tag -a $tag_name -m $tag_message
# 后期打标签
git tag -a $tag_name $commit_hash_key
# 把特定标签推送到服务器
git push origin $tag_name
# 把所有标签推送到服务器
git push origin --tags

7 其他

1
2
3
4
5
6
7
8
9
10
11
12
13
# add 和 commit 一起做
git commit -a -m $commit_message
# or
git commit -am $commit_message

# 修改最新一条的 commit 信息
git commit --amend

# 仅 clone 最新版本的代码
git clone $url --depth 1

# 仅 clone 某一分支代码
git clone -b $branch_name $url

8 问题

8.1 git:’credential–h’ 不是一个 git 命令

问题详情:

1
git:'credential--h' 不是一个 git 命令。参见 'git --help'

解决方法:

1
2
3
git config -e
# 找到最后一行的 helper = -h
# 修改为 helper = cache

9 参考

评论