github分支相关操作

github分支

0.为什么要使用分支

分支相当于项目的独立副本,类似于平行宇宙的概念。其主要意义在于,可以在开发分支上进行实验和修改,即便这些尝试尚未成熟,也不会对主分支的稳定性造成影响。一旦修改完成且经过验证成熟后,便可以将其合并到主分支上。通过这种在开发分支上进行开发、测试、验证,再合并到主分支的工作流程,确保了主分支的稳定性和可靠性,同时提高了团队协作的效率。

GIT Branchand its Operations

1.分支的常见命令

在这里插入图片描述

列出分支

Git 提供了多种方式来列出分支。命令以 git branch 开头,可以通过添加不同的标志来调整或过滤显示的数据。

列出本地分支
git branch

这个命令会列出所有本地分支。

列出本地和远程分支
git branch -a

这个命令会列出所有本地和远程分支。

按最近提交日期排序列出分支
git branch --sort=-committerdate

这个命令会按最近的提交日期排序列出分支。

列出已经合并到主分支的分支
git branch --merged main

这个命令会列出已经合并到 main 分支的所有分支。

列出尚未合并的分支
git branch --no-merged

这个命令会列出尚未合并到当前分支的分支。

列出分支及其上游和最后的提交信息
git branch -vv

这个命令会列出分支及其上游分支和最后一次提交的信息。

查看当前分支
git branch --show-current

这个命令会显示你当前所在的分支名称。

查看分支的详细信息
git show-branch

这个命令会显示所有分支的提交历史,方便你了解分支间的差异。

查看特定分支的提交日志
git log branch-name

这个命令会显示特定分支的提交日志。

创建分支

Git 提供了几种不同的方法来创建分支。

创建一个新分支并切换到该分支
git branch new-branch
git checkout new-branch

上述命令先创建一个名为 new-branch 的新分支,然后切换到该分支。

创建一个新分支并立即切换到该分支
git checkout -b new-branch

这个命令会创建一个名为 new-branch 的新分支并立即切换到该分支。

使用新的 switch -c 命令来创建和切换分支
git switch -c new-branch

这个命令与 git checkout -b 类似,会创建并切换到一个名为 new-branch 的新分支。

重命名分支

有时你可能需要重命名一个分支,可以使用 -m 标志来完成。

git branch -m old-branch new-branch

这个命令会将 old-branch 分支重命名为 new-branch

切换分支

你可以使用 git checkout 或新的 git switch 命令来切换分支。以下命令作用相同。

使用 checkout 切换分支
git checkout existing-branch
使用 switch 切换分支
git switch existing-branch
切换到上一个分支

通过传递 -git checkout,可以自动切换到之前所在的分支。

git checkout -

删除分支

根据分支的类型,可以使用不同的方法删除分支。

删除本地分支
git branch -d existing-branch

这个命令会删除本地的 existing-branch 分支。

强制删除本地未合并的分支
git branch -D existing-branch

这个命令会强制删除一个未合并到当前分支的本地分支。

删除远程分支
git push origin --delete branch-name

这个命令会删除远程仓库中的指定分支。

删除已经合并的分支

以下命令会列出已经合并到 main 分支(排除 main 分支本身)的分支并删除这些分支。

git branch --merged main | grep -v "main" | xargs -n 1 git branch -d
删除陈旧的跟踪分支

有时你本地有些分支在 GitHub 或其他远程仓库中已经不再跟踪。prune 命令可以帮助你识别并删除这些分支。使用 --dry-run 选项可以预览命令执行的结果。

git remote prune origin --dry-run
git remote prune origin

分支合并命令

合并分支
git merge branch-name

这个命令会将指定的分支合并到当前分支。

取消合并

如果你在合并过程中遇到冲突并决定取消合并,可以使用以下命令:

git merge --abort

这个命令会取消当前的合并操作,恢复到合并前的状态。

分支同步命令

拉取最新的远程分支信息
git fetch origin

这个命令会从远程仓库获取最新的分支信息,但不会自动合并。

拉取并合并远程分支
git pull origin branch-name

这个命令会从远程仓库拉取指定分支的最新提交,并自动合并到当前分支。

分支跟踪命令

设置上游分支
git branch --set-upstream-to=origin/branch-name

这个命令会为当前分支设置上游分支,使其跟踪远程分支。

取消跟踪上游分支
git branch --unset-upstream

这个命令会取消当前分支的上游分支设置。

分支比较命令

比较两个分支的差异
git diff branch1..branch2

这个命令会显示两个分支之间的差异。

临时分支命令

创建并切换到一个临时分支
git switch -c temp-branch

这个命令会创建一个名为 temp-branch 的临时分支并切换到该分支。

删除临时分支
git branch -d temp-branch

这个命令会删除名为 temp-branch 的本地分支。

示例:完整的分支操作流程

以下是一个完整的分支操作流程示例,从创建分支到合并并删除分支:

  1. 创建并切换到新分支:

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

    git add .
    git commit -m "Add new feature"
    
  3. 切换回主分支:

    git checkout main
    
  4. 合并新分支:

    git merge feature-branch
    
  5. 删除已合并的分支:

    git branch -d feature-branch
    
  6. 推送更改到远程仓库:

    git push origin main
    

2.分支合并冲突的解决

场景描述

假设你有一个项目,包含两个文件 file1.txtfile2.txt。你有两个分支:mainfeature-branch。在这两个分支中,你对这两个文件进行了不同的修改,现在你要将 feature-branch 合并到 main 中。

文件内容

main 分支中的 file1.txt
Hello from the main branch in file1.
feature-branch 分支中的 file1.txt
Hello from the feature branch in file1.
main 分支中的 file2.txt
Hello from the main branch in file2.
feature-branch 分支中的 file2.txt
Hello from the feature branch in file2.

合并操作

  1. 切换到 main 分支并开始合并

    git checkout main
    git merge feature-branch
    
  2. 合并时出现冲突: Git 会提示有冲突:

    Auto-merging file2.txt
    CONFLICT (content): Merge conflict in file2.txt
    Auto-merging file1.txt
    CONFLICT (content): Merge conflict in file1.txt
    Automatic merge failed; fix conflicts and then commit the result.
    
  3. 查看冲突状态

    git status
    

    输出如下:

    On branch main
    You have unmerged paths.
      (fix conflicts and run "git commit")
      (use "git merge --abort" to abort the merge)
    
    Unmerged paths:
      (use "git add <file>..." to mark resolution)
        both modified:   file1.txt
        both modified:   file2.txt
    
  4. 打开 file1.txt 解决冲突: 打开 file1.txt,你会看到以下内容:

    <<<<<<< HEAD
    Hello from the main branch in file1.
    =======
    Hello from the feature branch in file1.
    >>>>>>> feature-branch
    

    你需要手动解决冲突。比如结合两个分支的内容,可以这样编辑:

    Hello from the main branch in file1.
    Hello from the feature branch in file1.
    
  5. 打开 file2.txt 解决冲突: 打开 file2.txt,你会看到以下内容:

    <<<<<<< HEAD
    Hello from the main branch in file2.
    =======
    Hello from the feature branch in file2.
    >>>>>>> feature-branch
    

    你也需要手动解决冲突。比如结合两个分支的内容,可以这样编辑:

    Hello from the main branch in file2.
    Hello from the feature branch in file2.
    
  6. 标记冲突已解决: 解决完冲突后,使用 git add 命令将已解决冲突的文件标记为已解决:

    git add file1.txt
    git add file2.txt
    
  7. 提交合并: 所有冲突解决并标记完成后,使用 git commit 提交合并:

    git commit -m "Merge feature-branch into main, resolve conflicts in file1.txt and file2.txt"
    
  8. 推送到远程仓库

    git push origin main
    
  • 31
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: GitHub分支管理是指在GitHub上对代码库进行分支的创建、切换、合并和删除等操作。通过使用git checkout命令加上-b参数可以创建并切换分支,相当于执行了git branch和git checkout两条命令,例如:$ git checkout -b dev,这条命令创建了一个名为dev的分支并切换到该分支上。\[1\]在进行文件上传操作时,可以使用以下指令:cd git-test/ git add . git commit -m "branch test" git push -u origin First,其中最后一个参数为要推送的分支名。\[2\]当需要提交更改时,可以使用git add命令将文件添加到暂存区,然后使用git commit命令提交更改,例如:$ git add readme.txt $ git commit -m "branch test",这条命令将readme.txt文件添加到暂存区并提交了一个名为"branch test"的更改。\[3\] #### 引用[.reference_title] - *1* *3* [github分支管理, 创建与合并分支](https://blog.csdn.net/sinat_26367835/article/details/45061749)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Github分支创建、管理、下载与上传](https://blog.csdn.net/qq_44786250/article/details/126733368)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值