Git 常用命令总结
本文最后更新于 2025年2月11日
注意:
- 本文重点介绍某些功能的实现方法,不会详细介绍每一个指令的用法,具体用法请查阅官方文档、官方文档 - 中文等。
- 远程仓库以 GitHub 为例。
- 执行覆盖操作时,请务必谨慎,随时备份重要数据;多人协作时,请遵守团队规范。
设置用户名和邮箱
1 |
|
--global
表示全局设置,如果只想对当前仓库生效,去掉 --global
即可。
注意:
- 不要把 –global 参数放在
user.name
或user.email
之后,否则会把--global
当作用户名或邮箱。 - 本地的用户名和邮箱建议和 GitHub 设置的一致。
- 为防止泄露个人信息,在使用 GitHub 前,切记在
Settings
->Emails
中勾选Keep my email addresses private
,然后把邮箱设置为下面给出的类似于123456+user@users.noreply.github.com
。
初始化本地仓库和远程仓库
初始化本地仓库
1
git init
创建远程空仓库 (如果没有)
登录 GitHub,点击右上角
+
,选择New repository
,填写信息,点击Create repository
。输入仓库名,其余保持默认即可,点击Create repository
。关联本地仓库和远程仓库
1
git remote add origin <远程仓库地址>
这一步也可以使用 Visual Studio 的可视化操作:管理远程存储库,设置名称为
origin
,URL 为远程仓库地址。将本地仓库内容推送到远程仓库
1
git push --set-upstream origin master
注:如果是第一次推送且本地无 commit,执行会报错:
1
2error: src refspec master does not match any
error: failed to push some refs to <your remote repository>请先暂存更改
git add .
并提交git commit -m "init"
。
撤销已 commit 的更改
- 保留更改到暂存区
1 |
|
- 删除更改
1 |
|
修改某个 commit 的 message
假设修改第 n 个 (以最近的 commit 为 1) commit 的 message:
1 |
|
在弹出的编辑器中,将需要修改的 commit 前的 pick
改为 reword
,保存并关闭编辑器。接着会弹出一个新的编辑器,修改 message 后保存并关闭编辑器。
rebase 时请注意:(来自官方文档)
合并多个 commit
假设合并最近的 n 个 commit:
方法一:
1 |
|
在弹出的编辑器中,将需要合并的 commit 前的 pick
改为 squash
,保存并关闭编辑器。接着会弹出一个新的编辑器,修改 message 后保存并关闭编辑器。
方法二:
1 |
|
强制推送
1 |
|
多人协作时不建议使用,必要时可以使用 git push --force-with-lease
。它会检查远程仓库是否有新的更改,如果有则拒绝推送。
批量修改提交者信息
新建一个.mailmap
文件,格式为以下之一:
1 |
|
例如:
1 |
|
再执行:
1 |
|
.mailmap 代表该文件的路径,可以手动指定。
注意:批量修改提交者信息可能会改变未修改提交信息的提交的哈希值,详见这篇文章。这可能会导致 fork 的仓库无法同步,因此请谨慎操作。