济沧浪 济沧浪
首页
  • Git
  • Linux
  • C++
  • 设计模式
  • CUDA
  • AI
金融

LonelyTaoist

道可道非常道 名可名非常名
首页
  • Git
  • Linux
  • C++
  • 设计模式
  • CUDA
  • AI
金融
  • Git

    • Git 学习笔记①
    • Git 学习笔记②
    • Git 学习笔记③
      • 使用技巧
      • merge 和 rebase 的异同
      • 冲突解决
      • 常用分支解决方案
  • Linux

  • C++

  • 设计模式

  • CUDA

  • Python

  • VScode

  • AI

  • 计算机 小知识点
  • 计算机相关博客目录
  • 计算机
  • Git
2021/07/11
目录

Git 学习笔记③

# Git 分支管理

# 使用技巧

# 更人性化地输出 log 日志

我们可以通过 git log --graph --pretty 命令使得输出的 log 日志更加人性化。

注意,一些我们个人常用但是又比较难以输入的命令,我们可以使用 alias 配置简化其输入。例如命令 git config --global alias.lg "log --graph --pretty" 便将我们上述讲的命令简化为了 git lg ,之后我们只需要输入 git lg 就相当于输入了上面那个命令。

# 对比差异

我们可以使用 git diff 命令对比两个文件的不同:

  • git diff <id1> <id2> 对比两次提交之间的差异,仅输入一个提交 id 时对比本工作区和其的差异。

  • git diff <branch1> <branch2> 对比两个分支之间的差异,仅输入一个分支名时对比本工作区和其的差异。

  • git diff --staged 对比暂存区和版本库之间的差异,不输入 --staged 参数时对比工作区和暂存区之间的差异。

下图中当前分支和 main 相同,存储库和暂存区相同,只有工作区删除了 lab1-report.pdf 文件。

# stash暂存区保存

当我们需要放下手头的工作去处理另一个紧急的事件,但是手头的工作又没完成不能 commit 时,我们可以使用 git stash save '标记' 命令将其暂存区内的状态保存在 list 内。同时,我们还可以通过 git stash list 命令查看保存了的暂存区的状态。

在将紧急事件处理结束后,我们可以使用 git stash apply (stash@{n}) 将队列首(第 n 个)状态恢复,然后使用 git stash drop (stash@{n}) 在 list 内删除此状态(第 n 个状态)。或者我们直接使用 git stash pop 一次性完成上述两步。最后,我们还可以通过 git stash clear 命令完全删除所有暂存状态。

# merge 和 rebase 的异同

git merge <分支> 和 git rebase <分支> 都可以合并分支。 但是, merge 不会更改原始 commit 信息的上下文,即 merge 相当于保存了原始分支的情况;而 rebase 会对原始 commit 进行整理,使得合并后的分支看起来如同一直是一个分支一样。

merge 可以保留分支信息用于复原,而 rebase 则让分支图显得更加简洁。所以,在开发中经常是合并到主分支上时使用 merge (这样可以复原主分支的合并情况),合并到个人开发的分支时使用 rebase (防止分支图变得过于复杂)。

# 冲突解决

我们先构造一种冲突情况。

我们在master中的test内容为第一排是“111”,第二排是“333”;

我们在main中的test内容为第一排是“111”,第二排是“222”。

冲突之后会在我们的工作区文件内形成冲突的说明,这是需要我们手动解决冲突,待解决之后再次尝试合并,如下:

修改后:

再次尝试合并:

# 常用分支解决方案

注意:首先明确尽量保证本地分支名和远程仓库对应的分支名相同。

一些远程分支操作:

git branch -r 查看远程分支git push origin :<分支名>删除远程分支

git checkout <分支名> origin/<分支名>将本地不存在的远程分支迁移到本地

# Git Flow 分支管理解决方案

流程图:

  • Production 分支 即常用的 master 分支,这个分支用于发布不同版本的成品产品。所以通常不在这个分支上进行修改。

  • Develop 分支 主开发分支,其内包含所有要发布到下一个 Release 分支的代码。

  • Feature 分支 用于一些相对独立的功能的开发,开发完成后合并到 Develop 分支。

  • Release 分支 当开发到某一程度时,需要发布新本版,便从 Develop 分支创建一个 Release 分支。在完成发布前准备后,再合并到 Production(master) 分支和 Develop 分支。

  • Hotfix 分支 在 Production(master) 分支上发现 bug 时,便创建 Hotfix 分支进行修补,修补完成后合并到 Production(master) 分支和 Develop 分支。

个人开发常常只需要使用 Production(master) 分支和 Develop 分支。

GitHub 上有开源的 Git Flow 工具:gitflow (opens new window)

Git 学习笔记②
Linux 服务器编程学习笔记①

← Git 学习笔记② Linux 服务器编程学习笔记①→

最近更新
01
深度学习简单介绍
04/18
02
VScode-ssh 不兼容旧版本 Linux
02/08
03
Centos6.7 安装 python3
01/25
更多文章>
Theme by Vdoing | Copyright © 2023-2024 苏ICP备2023014117号-1 苏公网安备 32011502011853号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式