git学习笔记

git clone

clone仓库:

1
git clone <仓库地址>

递归clone项目:

1
git clone --recurse-submodules <repo-address>

git checkout

从当分支上创建新分支:

1
git checkout -b <new-branch>

切换分支:

1
git checkout -b <other-branch>

从指定远程仓库中指定分支上创建新的分支:

1
git checkout -b <new-branch> <remote-repo>/<branch-name>

git branch

查看分支:

1
git branch # 默认查看本地分支
  • -v:显示commit sha以及commit title
  • -r:显示远程分支
  • -a:查看所有分支
  • -d:删除本地分支,-d <loccal-branch-name>

git stash

查看stash区内容:

1
git stash list

将所有更改加入到stash:

1
git stash

弹出stash栈顶:

1
git stash pop

清空stash:

1
git clear

git add

将指定文件加入到暂存区:

1
git add <filename>

将当前目录所有文件加入到暂存区:

1
git add .

git commit

显式指定作者名字邮箱:

1
git commit --author="<author-name>" -c <commit-sha>

对commit签名:

1
git commit -S -m <commit-message>

git reset

撤回未push的commit:

1
2
git reset --soft HEAD^ # 撤回一次
git reset --soft HAED2 # 撤回两次

git remote

添加新的远程仓库:

1
git remote add <local-remote-repo-name> <repo-address>

git fetch

抓取新分支:

1
git fetch <branch-name>

git push

push的同时设置上游分支:

1
git push -u <local-repo-name> <branch-name>
  • 当第一次推送本地分支到远程仓库时,使用git push -u会将本地分支与远程分支关联,这样以后就可以直接用git pushgit pull
  • 通过设置上游分支,git会知道该使用哪个远程分支来同步操作

git revert

如果想单独撤销某个commit修改,可以使用git revert

1
git revert <commit-hash>

同样的,如果不想立马提交,想要修改commit log,添加选项-n

1
git revert -n <commit-hash>

git bisect

1. 开始二分:

1
git bisect start

2. 标记初始坏commit:

1
git bisect bad

3. 标记好的commit:

1
git bisect good <commit-hash>

之后git会自动切换到中间commit

4. 开始查找:

如果是好的commit,标记:

1
git bisect good

否则:

1
git bisect bad

5. 结束查找:

最后git会给出错误的commit信息

执行命令结束查找

1
git bisect reset 

git format-patch

如果想要把最近提交的commit打包成patch方便别人使用,可以使用该命令:

git cherry-pick

如果想把远程仓库的某个commit应用到当前分支,可以使用以下命令:

1
git cherry-pick <commit-hash>

在新的commit中自动添加签名(Signed-off-by),这是一个git用来标识提交作者并确认对提交内容的合法性的一种方式

1
git cherry-pick -s <commit-hash>

如果不想立马提交,想要修改commit log,添加选项-n

1
git cherry-pick -n <commit-hash>

git tag

想知道哪些tag包含了某个commit

1
git tag --contain <commit-sha>

git log

查看一个文件提交时间线:

1
git log --oneline -- <文件路径>

git hook

  • pre-commit:在提交之前运行。可以用来检查代码格式、运行单元测试等
  • prepare-commit-msg:在提交信息编辑器打开之前运行。可以用来自动生成提交消息模板
  • commit-msg:在提交信息编辑器关闭之后运行。可以用来验证提交信息的格式
  • post-commit:在提交完成之后运行,可以用来发送通知或执行其他后续任务
  • pre-rebase:在变基操作之前余小宁,可以用来检查变基之前的状态
  • post-checkout:在git checkout命令执行之后运行,可以用来设置特定文件的状态
  • post-merge:在合并操作完成之后运行,可以用来重新编译项目或执行其他合并后的任务。

git 签名

参考资料:https://docs.github.com/zh/authentication/managing-commit-signature-verification/about-commit-signature-verification#gpg-commit-signature-verification


git学习笔记
http://example.com/2025/05/26/git学习笔记/
作者
凌云行者
发布于
2025年5月26日
许可协议