Soulter's Blog
The world is your canvas!
965 words

关于Git的一切(即将)

创建于: 2023-09-18 19:02:00
最近一次更新: 2025-04-07 19:47:00

关于Git的一切(即将)

鉴于Git的工具属性,本博文记录我在项目开发上使用 Git 的一些心得和方法。本博文将以实际场景出发,列出大量场景并给出最好的解决方案(也许)。

将本地未提交的代码移动到另一个分支

在开发一个新功能时,如果没开发完,又接到另一个更加紧急的需求需要在这个分支上进行,此时需要将没开发完的代码移到另一个分支。

1
2
3
git stash # 暂存该分支未提交但已更改并保存的代码。
git checkout -b new-branch # 以某一个分支为基础分出一个新分支
git stash pop # 推出暂存的代码

本来打算取消某次 commit 来重新提交,但是不小心误删(drop commit)了,如何恢复?

1
git reflog

此时你会找到你 drop 的 commit,把对应的 commit hash 复制下来,然后执行:

1
git reset --hard <commit_hash>

即可

提交了的 commit 如何如何撤回?

如果想保留提交的修改:

1
git reset --soft HEAD^{n}

其中 n 为你想要撤回的 commit 数量。前一次就是 1

如果不想保留:

1
git reset --hard HEAD^{n}

从其他分支上取一个 Commit 到当前分支

1
git cherry-pick <commit_hash>

某个开发者交的 PR 的 Commit 很多并且很乱,需要将多个 Commit 合并为一个

1
git rebase -i HEAD~n

其中 n 为你想要合并的 commit 数量。前一次就是 1
在打开的编辑器中,将你想要合并的 commit 的 pick 改为 squash(或者 s),然后保存退出即可。

保存后,会打开一个新的编辑器,显示你要合并的 commit 的信息。你可以选择保留所有的 commit 信息,或者只保留第一个 commit 的信息,或者完全自定义 commit 信息。

有多个 author 在一个 Commit

1
2
3
git commit -m "xxxxx

Co-authored-by: <name> <email>"

可参考: GitHub - Creating a commit with multiple authors

Comments