git常用命令总结

作为一名程序员,git 的使用是必须的,本篇就将作者自己工作中常用的命令进行说明。

拉取对应分支

bash 复制代码
mkdir myNotes        	 	# 创建目录
cd myNotes                	# 进入目录
git init                    # 初始化GIT
git remote add origin https://gitee.com/aSimpleSheep/myNotes.git      # 配置远程仓库
# 或者直接 clone
git clone https://gitee.com/aSimpleSheep/myNotes.git
git config --global http.sslVerify false               				  # 关闭ssl验证
git config --global user.name "Firstname Lastname"     				  # 配置GIT用户名
git config --global credential.helper store      					  # 记住密码
git fetch    														  # 将远程分支信息获取到本地
git pull origin master												  # 获取远程master分支
git checkout -b local_master origin/master							  # 新建本地分支local_master,然后从远程分支master拉取代码到新分支local_master

生成 patch

git diff > xxx.patch

bash 复制代码
# 只想 patch Test.c 文件
git diff Test.c > test.patch
# 把所有的修改文件打成 patch
git diff > test.patch

git format-patch

bash 复制代码
git format-patch HEAD^       # 生成最近的1次commit的patch
git format-patch HEAD^^      # 生成最近的2次commit的patch
git format-patch HEAD^^^     # 生成最近的3次commit的patch
git format-patch HEAD^^^^    # 生成最近的4次commit的patch
git format-patch <r1>..<r2>  # 生成两个commit间的修改的patch(生成的patch不包含r1. <r1>和<r2>都是具体的commit号)
git format-patch -1 <r1>     # 生成单个commit的patch
git format-patch <r1>        # 生成某commit以来的修改patch(不包含该commit)
git format-patch --root <r1> # 生成从根到r1提交的所有patch

应用 patch

检查 patch 的情况

bash 复制代码
git apply --stat 0001-limit-log-function.patch		# 查看patch的情况
git apply --check 0001-limit-log-function.patch		# 检查patch是否能够打上,如果没有任何输出,则说明无冲突,可以打上

打 patch 场景之一使用 git diff 生成的 patch

bash 复制代码
git apply xxx.patch

打 patch 场景之二使用 git format-patch 生成的 patch

bash 复制代码
git am 0001-limit-log-function.patch           # 将名字为0001-limit-log-function.patch的patch打上
git am --signoff 0001-limit-log-function.patch # 添加-s或者--signoff,还可以把自己的名字添加为signed off by信息,作用是注明打patch的人是谁,因为有时打patch的人并不是patch的作者
git am ~/patch-set/*.patch                     # 将路径~/patch-set/*.patch 按照先后顺序打上
git am --abort                                 # 当git am失败时,用以将已经在am过程中打上的patch废弃掉(比如有三个patch,打到第三个patch时有冲突,那么这条命令会把打上的前两个patch丢弃掉,返回没有打patch的状态)
git am --resolved                              # 当git am失败,解决完冲突后,这条命令会接着打patch

补充

工作中还会经常遇到 2 种场景:

  1. 自己 commit 提交次数太多,导致 merge 失败。此时就需要合并多次 commit
bash 复制代码
	git rebase -i HEAD^3		# 合并最近3次 commit 提交
  1. 代码移植:移植相关功能 commit 到其他项目分支
bash 复制代码
	git cherry-pick <commit id>						# 移植对应 commit 到当前分支
	git cherry-pick <commit id1> <commit id2>		# 移植多个 commit 到当前分支
	git cherry-pick <commit id1>..<commit id2>		# 移植 commit1 ~ commit2 之间的所有到当前分支
相关推荐
一口吃俩胖子3 小时前
【脉宽调制DCDC功率变换学习笔记024】频域性能
笔记·学习
吃着火锅x唱着歌3 小时前
深度探索C++对象模型 学习笔记 第五章 构造、解构、拷贝语意学(2)
c++·笔记·学习
Upsy-Daisy3 小时前
Hermes Agent 学习笔记 04:工具调用系统,让 Agent 从“会说”变成“会做”
java·笔记·学习
John_ToDebug4 小时前
在 Windows 上搭建 Chromium 148 内核编译环境:一份实战笔记
chrome·经验分享·笔记
快乐得小萝卜4 小时前
论文:π0.5
笔记·深度学习
sbjdhjd4 小时前
面试题完结 | 投票题 + 到岗时间 + 压力缓解
经验分享·笔记·面试·职场和发展·开源·求职招聘·印象笔记
诸葛思颖4 小时前
论文阅读笔记——Flow-of-Action
论文阅读·笔记
智者知已应修善业5 小时前
【51单片机8个LED,已经使用了D1D2,怎么样在不动D1D2的前提下实现D6~D8的流水灯】2024-1-19
c++·经验分享·笔记·算法·51单片机
数智工坊5 小时前
周志华《Machine Learning》学习笔记--第十四章--概率图模型
笔记·学习·机器学习
Python私教5 小时前
用 Claude Code 做大型重构不翻车:分批+Git 兜底+验证闭环的实战流程(2026)
git·重构·ai编程·代码重构·工程实践·claude code