Git 实用命令

最近实习在公司内接触到了 Git 协作开发中一些比较实用的命令,在此记录供以后参考。

1. 多分支提交

在开发新特性或者进行 bug 修复时,可能会涉及到多个版本,因此我们需要将代码提交到多个分支。这时需要使用 git cherry-pick 命令:

1
2
$ git checkout target-branch
$ git cherry-pick commit-hash

其中 cimmit-hash 可以通过 git log 命令查看。

上述是最简单的使用 git cherry-pick 的情况。有时我们需要将多个 commit 转移到另一个分支;或者在 cherry-pick 的过程中遇到了冲突,需要我们使用其他的命令选项或者解决冲突。具体请参考文末链接 1 和 2。

2. 定位哪次提交引入问题

有时我们会发现新提交的代码引入了 bug 或者性能等问题,需要确定是哪一次提交引入的,进而确定代码并修复。这时需要使用 git bisect 命令。它类似于二分查找,需要我们指定一个提交起始范围,然后 Git 会进行二分搜索,搜索过程中需要我们在命令行告诉 Git 当前代码是否正常。最后 Git 会输出哪一次提交引入了问题。其涉及到的命令有:

1
2
3
4
$ git bisect start [终点] [起点]    # 指定搜索的提交起始范围
$ git bisect good # 表示当前版本的代码正常
$ git bisect bad # 表示当前版本的代码已经表现出问题
$ git bisect reset # 退出 bisect 二分搜索

关于该命令使用的例子,请参考文末链接 3。

3. 回退

有时我们本地的代码库提交出现了问题;或者远程代码仓库的代码可能有些问题,如引入了 bug 或者编译问题,我们需要回退到某个正常的版本,进行开发或测试等工作。这时需要使用 git reset 命令:

1
2
3
$ git reset --hard HEAD^         # 回退到上个版本
$ git reset --hard HEAD~3 # 回退到前 3 次提交之前,以此类推,回退到 n 次提交之前
$ git reset --hard commit-hash # 退到/进到 指定 commit-hash

4. 冲突解决

有时进行代码的 merge 或者 rebase 时,可能会有提交和我们的提交修改了相同的代码段,此时就会产生冲突,Git 会暂停 merge 或 rebase,并需要我们人工介入进行冲突解决。

这里个人推荐使用 VS Code Git 插件提供的冲突解决功能,可以选择:

  • 已提交代码
  • 即将提交代码
  • 保留二者并进行适当修改

解决完冲突后,即可继续进行 merge、rebase、push 等操作。

5. 拉取远程分支到本地新分支

这一需求标题已经描述得很清楚了,只需要使用一条命令:

1
$ git checkout -b local_branch_name origin/remote_branch_name

即可实现。


Reference:

  1. git cherry-pick 同步修改到另一个分支 - 大数据王小皮 - 博客园 (cnblogs.com)
  2. git cherry-pick 教程 - 阮一峰的网络日志 (ruanyifeng.com)
  3. git bisect 命令教程 - 阮一峰的网络日志 (ruanyifeng.com)
  4. Git回滚代码到某个commit-阿里云开发者社区 (aliyun.com)
  5. git 拉取远程分支到本地及本地切换分支-腾讯云开发者社区-腾讯云 (tencent.com)

Git 实用命令
https://arcsin2.cloud/2024/08/04/Git-实用命令/
作者
arcsin2
发布于
2024年8月4日
许可协议