git 常用命令

常用

git 与上游 保持同步

1
2
3
git remote add src-zephyr <https://github.com/zephyrproject-rtos/zephyr>
git pull src-zephyr master
git push

git 合并分支

1
2
3
git revert
git pull --rebase origin
git pull --rebase origin release-v1.0

如果有冲突:

1
2
3
git status # 查看冲突文件并解决冲突
git add # 提交解决冲突后的文件
git rebase --continue # 完成

免密操作

方法一

进入用户主目录:

1
$ cd ~

建立文件 .git-credentials:

1
$ touch .git-credentia

编辑文件 .git-credentials:

1
$ vi .git-credentials

添加规则:

1
<https://username:password@gitlab.com>

执行命令

1
$ git config --global credential.helper store

方法二

1
2
$ git config --global credential.helper store
$ git pull /git push

第一次需要输入用户名密码,以后就不用了(本质上同上,会在用户目录下创建。git-credential 文件并将用户信息写入该文件)

git 撤销修改

1
2
git checkout [file]
git checkout .

git 撤销 add

1
2
git reset [file]
git reset # 取消所有更改

git 撤销 commit

1
2
3
4
git reset --soft HEAD^ # 不删除工作空间改动代码,撤销 commit,不撤销 git add .
git reset --mixed HEAD^ # 不删除工作空间改动代码,撤销 commit,并且撤销 git add . 操作
git reset HEAD^ # 同 git reset --mixed HEAD^一样
git reset --hard HEAD^ # 删除工作空间改动代码,撤销 commit,撤销 git add .

合并多条 commit

1
git rebase -i HEAD~3

关于 ssh-key

创建 key

1
$ ssh-keygen -t rsa -C "something"

-t 指定密钥类型,默认是 rsa -C 设置注释文字,比如邮箱

该命令会生成两个秘钥文件将 id_rsa.pub 文件内容复制到 github 或 gitlab 就可以通过 ssh 传输文件 对于 http 协议传输需要修改。git 目录下 config 文件格式为

1
<http://username:password@github.com>

git 不能 clone 代码,证书问题

1
2
$ git config --global http.sslverify true
$ git config --global http.sslCAPath /etc/pki/tls/certs

其他

Git 标签: 一个轻量标签很像一个不会改变的分支 - 它只是一个特定提交的引用。 附注标签是存储在 Git 数据库中的一个完整对象。它们是可以被校验的;其中包含打标签者的名字、电子邮件地址、日期时间;还有一个标签信息。

创建标签: 附注标签

1
git tag -a v1.4 -m 'my version 1.4'

轻量标签:

1
git tag v1.4-lw

后期打标签:

1
git tag -a v1.29fceb02 (29fceb02 是一次提交的校验)

共享标签 将标签提交到远程服务器:

1
git push origin v1.5

一次性推送很多标签:

1
git push origin --tags

Git 别名 通过 git config 文件来轻松地为每一个命令设置一个别名。例如:

1
git config --global alias.ci commit

这意味着,当要输入 git commit 时,只需要输入 git ci。

查询是否使用代理:

1
git config --global http.proxy

取消代理:

1
git config --global --unset http.proxy

使用代理

1
2
git config --global http.proxy 'socks5://127.0.0.1:7891'
git config --global https.proxy 'socks5://127.0.0.1:7891'

git 提交规范

1
2
3
4
5
6
7
8
9
10
11
12
feat: 新功能(feature)
fix: 修补 bug
docs: 文档(documentation)
style: 格式(不影响代码运行的变动)
refactor: 重构(即不是新增功能,也不是修改 bug 的代码变动)
chore: 构建过程或辅助工具的变动
revert: 撤销,版本回退
perf: 性能优化
test:测试
improvement: 改进
build: 打包
ci: 持续集成