教你如何在vscode里玩转git操作(2)!!!(小白必看)

216 阅读7分钟

🐟前言

在上一篇文章中(没看过童鞋,可以去看看,左边是🔗git操作(1),我们已经领略了Git的基础魅力,学会了如何初始化仓库、添加文件、提交更改、添加远程仓库以及推送代码。那么,接下来让我们一起深入了解Git的高级操作,包括分支管理、合并冲突解决。让我们一起RUSH起来!

教你如何在vscode里玩转git操作(1)

教你如何在vscode里玩转git操作(3)

分支管理:自由开发创作的空间

在写作的世界里,每一个故事都有它的起点和发展路径。同样,在软件开发中,每个功能也有其独特的发展轨迹。Git的分支功能就像是一扇扇通往不同创作空间的门,让我们能够在不同的“房间”里自由创作,而不必担心会影响到其他“房间”的故事。例如:

  • 功能开发:当你有一个新的功能需要开发时,可以创建一个专门的分支来实现这个功能。这样,你可以在这个分支上自由地进行开发,而不会影响到主分支(如 main 或 master)的稳定性。
  • Bug修复:当发现一个Bug时,可以创建一个专门的分支来修复这个Bug。这样做可以避免修复过程中引入新的问题,确保修复过程的安全性和可控性。

分支可以分为本地分支和远程分支,他们共同构成了版本控制系统中的分支体系。合理地运用本地分支和远程分支可以有效地提高开发效率,你在本地分支自己操作开发的代码推送操作到远程分支中,其他开发者再通过拉取操作获取远程分支的更新并合并到自己的本地分支,从而实现团队成员之间的代码共享和协作开发。是不是很nice呢!

简单来说它就是实现了我们所说的分布式开发啦

下面是常见操作:

本地分支操作

创建分支

当你有一个新想法时,可以创建一个新分支来实现它。使用命令 git branch <branch-name> 创建一个名为 <branch-name> 的新分支。

git branch <branch-name>
切换分支

想要回到原来的故事线,只需轻轻一跃,使用 git checkout <branch-name> 即可切换到你想要的分支。

git checkout <branch-name>
创建并切换分支

有时灵感来得快,你也想动得更快,那么 git checkout -b <branch-name> 是你的最佳选择,它会为你创建并切换到新分支。

git checkout -b <branch-name>
列出所有分支

想知道自己的灵感世界里还有哪些未完成的故事?git branch 能帮你列出所有的分支。

git branch
删除分支

当一个故事告一段落,你可以使用 git branch -d <branch-name> 清理掉不再需要的分支,为新的灵感腾出空间。

git branch -d <branch-name>

远程分支操作

查看远程分支

使用 git branch -r 查看所有远程仓库中的分支。

git branch -r
查看所有本地和远程分支

使用 git branch -a 查看所有本地和远程分支。

git branch -a
从远程仓库拉取分支

使用 git fetch <remote-name> 将远程仓库中的所有分支信息拉取到本地,但不会自动切换到这些分支。

git fetch <remote-name>
切换到远程分支

使用 git checkout <remote-name>/<branch-name> 切换到远程分支。这会创建一个新的本地分支并将其与远程分支关联起来。

git checkout <remote-name>/<branch-name>
推送本地分支到远程仓库

使用 git push <remote-name> <local-branch-name> 将本地分支推送到远程仓库。如果这是第一次推送,可以使用 -u 参数来设置上游分支。

git push -u <remote-name> <local-branch-name>
删除远程分支

使用 git push <remote-name> --delete <remote-branch-name> 删除远程仓库中的分支。

git push <remote-name> --delete <remote-branch-name>

示例

假设你有一个本地分支 feature-1,并且你想将它推送到名为 origin 的远程仓库中,并设置上游分支。

  1. 创建并切换到本地分支

    git checkout -b feature-1
    
  2. 进行一些更改并提交

    git add .
    git commit -m "Add new feature"
    
  3. 推送本地分支到远程仓库并设置上游分支

    小Tips:上游分支是远程仓库的一个分支,他与你的本地分支建立了关联关系,一旦设置了上游分支,Git就会在推送和拉取操作中自动使用这个关联关系。

    git push -u origin feature-1
    
  4. 查看所有本地和远程分支

    git branch -a
    
  5. 切换到远程分支

    git checkout origin/feature-1
    
  6. 删除远程分支

    git push origin --delete feature-1
    

既然我们创建了分支,呢么他的归途自然是合并到一个统一的地方去,就像游子归乡一样。

合并分支:故事的交汇点

当不同的故事线发展成熟,它们终将交汇,共同构建出一部完整的作品。在Git中,合并分支就是让不同功能或修复汇聚成最终产品的过程。

分支基本操作

切换到目标分支

在合并分支之前,你需要先切换到你希望合并到的目标分支。通常情况下,目标分支是主分支(如 mainmaster)。

```
git checkout main
```
合并分支

使用 git merge <branch-name> 命令将 <branch-name> 分支的内容合并到当前分支。

```
git merge <branch-name>
```
解决冲突(如果有)

如果两个分支之间没有冲突,合并过程将自动完成。如果有冲突,Git会提示你解决这些冲突。

提交合并

解决冲突后,需要再次提交更改。

```
git add <conflicted-files>
git commit
```
示例

假设你有一个功能分支 feature-1,你希望将它合并到主分支 main

  1. 切换到主分支

    git checkout main
    
  2. 合并功能分支

    git merge feature-1
    
  3. 解决冲突(如果有) : 如果出现冲突,Git会在冲突文件中插入冲突标记,如下所示:

    <<<<<<< HEAD
    This is the content from the main branch.
    =======
    This is the content from the feature-1 branch.
    >>>>>>> feature-1
    

    你需要手动编辑这些文件,删除冲突标记并保留你希望保留的内容。例如:

    This is the combined and resolved content.
    
  4. 提交合并: 解决冲突后,添加更改并提交:

    git add <conflicted-file>
    git commit
    

解决合并冲突

冲突标记

当合并冲突发生时,Git会在冲突文件中插入以下标记:

  • <<<<<<< HEAD:表示当前分支(HEAD)的代码开始。
  • =======:表示冲突的分隔线。
  • >>>>>>> <branch-name>:表示要合并的分支的代码结束。
解决冲突的步骤
查看冲突文件

使用文本编辑器打开冲突文件,找到冲突标记。

手动编辑文件

删除冲突标记并保留你希望保留的内容。你可以选择保留一方的代码,或者结合两方的代码进行修改。

添加更改

解决冲突后,使用 git add 命令将更改添加到暂存区。

```
git add <conflicted-file>
```
提交更改

使用 git commit 命令提交更改。通常情况下,Git会为你生成一个默认的提交消息,包含合并信息。

```
git commit
```
示例

假设你在合并 feature-1 分支时遇到了冲突:

  1. 查看冲突文件: 打开冲突文件 example.txt,找到冲突标记:

    <<<<<<< HEAD
    This is the content from the main branch.
    =======
    This is the content from the feature-1 branch.
    >>>>>>> feature-1
    
  2. 手动编辑文件: 编辑文件,删除冲突标记并保留你希望保留的内容:

    This is the combined and resolved content.
    
  3. 添加更改

    git add example.txt
    
  4. 提交更改

    git commit
    

🐟END

分支操作和合并操作已经初步完成我们要做的git操作啦,这是你以后未来开发中避免不了的操作,希望大家可以忘记了,就回来看看,如有任何问题,欢迎大家在评论区讨论提问!