写点什么

Git 分支管理:优化版本控制与应急处理的关键策略

作者:小万哥
  • 2024-03-01
    广东
  • 本文字数:2188 字

    阅读完需:约 7 分钟

Git 分支管理:优化版本控制与应急处理的关键策略

使用 Git 分支:轻松管理不同版本和应对紧急情况的最佳实践

使用 Git 分支

在 Git 中,分支是主仓库的新/独立版本。


假设你有一个大型项目,需要对其进行设计更新。


没有使用 Git 时:


  • 复制所有相关文件以避免影响实时版本

  • 开始进行设计工作,并发现代码依赖于其他文件中的代码,这些文件也需要更改!

  • 复制相关文件,确保每个文件依赖项引用正确的文件名

  • 紧急情况!项目的其他地方存在无关的错误,需要尽快修复!

  • 保存所有文件,记录你正在工作的副本的名称

  • 处理无关的错误并更新代码以修复它

  • 返回到设计工作,完成工作

  • 复制代码或重命名文件,以使更新后的设计出现在实时版本中


(两周后,你意识到未修复无关的错误,因为在修复之前你复制了文件)


使用 Git 时:


  • 使用名为 "new-design" 的新分支,直接编辑代码,而不影响主分支

  • 紧急情况!项目的其他地方存在无关的错误,需要尽快修复!

  • 从主项目创建名为 "small-error-fix" 的新分支

  • 修复无关的错误并将 "small-error-fix" 分支与主分支合并

  • 返回到 "new-design" 分支,完成工作

  • 合并 "new-design" 分支与主分支(提醒你正在缺少的小错误修复)


分支允许你在项目的不同部分上工作,而不影响主分支。


当工作完成后,可以将分支与主项目合并。


你甚至可以在不同分支之间切换,同时在不同项目上工作,而彼此不会互相干扰。


在 Git 中,分支非常轻量且快速!

创建新 Git 分支

让我们向我们的 index.html 页面添加一些新功能。


我们在本地仓库中工作,不希望干扰或可能破坏主项目。


所以我们创建一个新分支:


git branch hello-world-images


现在我们创建了一个名为 "hello-world-images" 的新分支。


让我们确认我们已经创建了一个新分支:


git branch  hello-world-images* master
复制代码


我们可以看到新分支的名称为 "hello-world-images",但在 master 旁边的 * 指定我们当前在该分支上。


checkout 是用于检出分支的命令,将我们从当前分支移动到命令末尾指定的分支:


git checkout hello-world-images
复制代码


现在我们已将当前工作区从 master 分支移动到新分支。


打开你最喜欢的编辑器并进行一些更改。


在此示例中,我们在工作目录中添加了一个图像(img_hello_world.jpg)和 index.html 文件的一行代码:


<!DOCTYPE html><html><head><title>Hello World!</title><link rel="stylesheet" href="bluestyle.css"></head><body>
<h1>Hello world!</h1><div><img src="img_hello_world.jpg" alt="Hello World from Space"style="width:100%;max-width:960px"></div><p>This is the first file in my new Git Repo.</p><p>A new line in our file!</p>
</body></html>
复制代码


我们对一个文件进行了更改,并在工作目录中添加了一个新文件(与主分支相同的目录)。


现在检查当前分支的状态:


git status
复制代码


在 hello-world-images 分支上,有文件更改,但该文件未准备好提交,img_hello_world.jpg 不在跟踪文件中。


因此,我们需要将这两个文件都添加到该分支的暂存区中:


git add --all
复制代码


使用 --all 而不是单独的文件名将所有已更改的文件(新的、修改的和已删除的)放入暂存区。


检查分支的状态:


git status
复制代码


在 hello-world-images 分支上,有文件更改,但未准备好提交。所以我们将这些更改提交到该分支:


git commit -m "Added image to Hello World"
复制代码


现在我们有一个不同于 master 分支的新分支。


注意:在 checkout 命令上使用 -b 选项会创建一个新分支,并移动到该分支,如果该分支不存在的话。

切换分支

现在让我们看看工作在不同分支上有多么快速和容易,以及它是如何有效地工作的。


我们当前位于 hello-world-images 分支。我们向此分支添加了一个图像,所以让我们列出当前目录中的文件:


ls
复制代码


我们可以看到新文件 img_hello_world.jpg,如果打开 html 文件,可以看到代码已经发生了变化。一切都按计划进行。


现在,让我们看看当我们切换到 master 分支时会发生什么


git checkout master
复制代码


不再存在 img_hello_world.jpg!如果打开 html 文件,可以看到代码已经恢复到修改之前的状态。


看看工作在不同分支上有多么容易?以及它是如何允许你在不同的任务上工作的?


###


紧急分支


现在假设我们还没有完成 hello-world-images,但我们需要在 master 上修复一个错误。


我不想直接干预 master,也不想干扰 hello-world-images,因为它还没有完成。


所以我们创建一个新分支来处理紧急情况:


git checkout -b emergency-fix
复制代码


现在我们已经从 master 创建了一个新分支,并切换到它。我们可以安全地修复错误,而不会干扰其他分支。


让我们修复我们想象中的错误:


<!DOCTYPE html><html><head><title>Hello World!</title><link rel="stylesheet href="bluestyle.css"></head><body>
<h1>Hello world!</h1><p>This is the first file in my new Git Repo.</p><p>This line is here to show how merging works.</p>
</body></html>
复制代码


我们在该文件中进行了更改,现在需要将这些更改传输到 master 分支。


检查分支的状态:


git status
复制代码


在 emergency-fix 分支上,有文件更改,但未准备好提交,所以我们需要将该文件暂存,然后提交:


git add index.htmlgit commit -m "updated index.html with emergency fix"
复制代码


现在,我们已经为 master 分支准备好一个修复。需要合并这两个分支。

最后

为了方便其他设备和平台的小伙伴观看往期文章:


微信公众号搜索:Let us Coding,关注后即可获取最新文章推送


看完如果觉得有帮助,欢迎 点赞、收藏、关注

发布于: 刚刚阅读数: 4
用户头像

小万哥

关注

代码如人生 2023-02-09 加入

编程爱好者

评论

发布
暂无评论
Git 分支管理:优化版本控制与应急处理的关键策略_git_小万哥_InfoQ写作社区