前言:
本人记忆力过于差,导致实习期间浏览器里堆满了搜索基础命令的选项卡。整理了实际工作中高频使用的命令在此,以飨自己。
一、基础操作
列出所有分支
查看项目中的分支是最基础的操作:
1 | # 列出所有本地分支 |
切换分支
切换分支是Git最常用的操作之一。根据目标分支是否已存在,有两种情况:
1 | # 当本地已存在分支B时,直接切换 |
提示:也可以使用git switch命令(Git 2.23+版本):
1 | # 切换到已存在的分支 |
查看分支从属关系
在协作开发中,经常需要确认某个分支是否基于另一个分支创建。可以使用以下命令:
1 | git merge-base --is-ancestor A B && echo "✅ B 基于 A 创建" || echo "⚠️ B 不是基于 A" |
这个命令会检查分支B是否是从分支A衍生出来的。如果是,输出"✅ B 基于 A 创建";否则输出"⚠️ B 不是基于 A"。
切换传输协议
如果你需要在HTTPS和SSH协议之间切换(比如配置了SSH密钥后,想要免密推送),可以使用:
1 | # 将远程仓库URL改为SSH协议 |
注意:使用SSH协议前,需要先在GitHub/GitLab等平台配置SSH公钥。
全局切换传输协议
你也可以让ssh成为你的Git的默认协议,日后所有操作都将使用ssh。
1 | git config --global url."git@github.com:".insteadOf "https://github.com/" |
二、拉取更新
更新本地某个非当前分支
有时候你正在分支A上工作,但需要更新分支B到最新状态。这时有两种方法:
方法一:使用git fetch和git branch -f
1 | # 获取远程所有更新 |
这种方法的优点是不需要切换分支,当前工作不受影响。
方法二:切换过去再拉取
1 | # 切换到目标分支 |
这种方法更直观,适合需要检查目标分支内容的情况。
强制对齐远程分支
如果你的本地分支出现了问题,或者需要完全放弃本地修改,可以强制对齐远程分支:
1 | # a. 下载远程分支 B 的最新历史记录 |
警告:git reset --hard是危险操作,会丢失所有未提交的修改和未推送的提交。使用前请确保你不需要这些内容,或者已经做好备份。
三、提交修改
将本地分支A的状态推送到远程分支B
有时候你在本地分支A上开发,但需要将这些修改推送到远程的分支B(而不是远程分支A),可以使用:
1 | git push origin A:B |
这个命令的格式是git push <远程仓库名> <本地分支>:<远程分支>。它会将本地分支A的当前状态推送到远程仓库的分支B。
使用场景:
- 你在本地feature分支开发完成,想要推送到远程的dev分支
- 本地分支名和远程分支名不一致的情况
- 临时将某个分支的内容推送到另一个分支进行测试
注意:这个操作会覆盖远程分支B的内容,使用时要小心,确保不会影响他人工作。
四、其他实用命令
查看提交历史
1 | # 查看提交历史 |
暂存当前修改
当你需要临时切换到其他分支,但又不想提交当前的修改时:
1 | # 暂存当前修改 |
撤销操作
1 | # 撤销工作区的修改(未add) |
五、总结
建议根据自己的工作流程整理一份个人速查表,遇到不常用的命令可以随时查阅。
如果你对某个命令不熟悉,可以使用git <命令> --help查看详细文档。熟练掌握这些命令,能够大大提高开发效率。