`

git分支管理及冲突解决

阅读更多

一、分支管理

 

1,查看当前分支所在

 git branch

 

2,切换到(已经存在的)指定分支

git checkout <已存在的分支名称>

 

注:如果本地暂存区内有内容(即,你运行过git add命令,或者使用git status查看,存在绿色文件),则会切换失败,需要提交暂存区内容或者将暂存区内容丢弃,才能切换。

 

3,以本地当前分支为起点,创建新分支

git branch <要创建的新分支名称>

 

注:也有可能创建失败,理由同切换分支功能。

 

4,以本地当前分支为起点,创建新分支并切换到新分支

git checkout -b <要创建并切换的新分支名称>

其实这个命令是一个组合命令:

(1)git branch <要创建的新分支名称>

(2)git checkout <已存在的分支名称>

 

5,以远程仓库的远程分支为起点,创建新分支并切换到新分支

git checkout -b <要创建并切换的新分支名称>  <远程仓库名称>/<远程分支名称>

 

例如:

git checkout -b develop origin/develop

第一个develop是要创建的本地分支名称,origin是远程仓库名称,第二个develop是远程分支名称

 

当从远程拉取内容时,直接使用git pull即可,不需要指定远程仓库和分支名称

当从本地向远程推送内容时,直接使用git push即可,不需要指定远程仓库和分支名称

 

可以通过git remote -v列出多个远程仓库的别名和地址

 

6,将本地分支与远程分支设置关联(追踪tracking)

git branch —set-upstream-to=<远程仓库名称>/<远程分支名称> <本地分支名称>

 

例如

git branch —set-upstream-to=origin/develop develop

origin是远程仓库名称,第一个develop是远程分支名称,第二个develop是本地创建的分支名称

 

当从远程拉取内容时,直接使用git pull即可,不需要指定远程仓库和分支名称

当从本地向远程推送内容时,直接使用git push即可,不需要指定远程仓库和分支名称

 

 

7,查看本地分支与远程分支的追踪关系

git branch -vv

 

!注意是两个v

 

8,合并其他分支到当前分支

git merge <需要合并进来的分支名称>

 

9,从远程仓库拉取内容

(1)git fetch <远程仓库名称>

将远程仓库的所有分支的最新修改,全部取回到本地

(2)git fetch <远程仓库名称> <远程分支名称>

将远程仓库指定分支的最新修改,取回到本地

 

 

10,拉取远程仓库的远程分支,并合并到当前分支中

git pull <远程主机名> <远程分支名>:<本地分支名>

 

由于远程分支与本地分支名称相同,则可以简化为

git pull <远程主机名> <远程分支名>

 

当设置了本地分支对应关联的远程分支时,又可以简化为

git pull

 

注:

git pull命令是一个组合命令,相当于

(1)git fetch <远程仓库名称>

(2)git merge  <远程仓库名称>/<远程分支名称>

 

示例:

git pull origin develop:develop

git pull origin develop

git pull

当你设置本地分支和远程分支相同名称,并且设置了关联关系(就是追踪关系tracking),则这三个命令效果相同

 

11,rebase合并

git rebase -i <要合并进来的分支名称>

适用场景

 

使用 git rebase -i HEAD~<次数>进入commit管理模式,根据提示有如下操作

  1. 合并多次提交
  2. 修改提交的commit message 
  3. 删除某个commit,通过commit id

 

rebase中间态可执行的操作

git add <filename>

git rebase —continue

git rebase --abort

 

 

二、冲突解决

1,有可能产生冲突的命令

(1)git merge <需要合并进来的分支名称>

(2)git pull <远程仓库> <远程分支>

(3)git rebase -i <要合并进来的分支名称>

 

2,解决冲突

发生冲突后,使用git status可以查看到冲突文件是红色字体显示的。打开文件,冲突部分会有特定表示如下

<<<<<<< HEAD

冲突发生前,没有进行合并时,当前位置的代码

=======

合并进来的冲突代码

>>>>>>>

 

用户需要根据具体业务删除或者保留对应的代码,同时将<< HEAD == >> 这些标示去掉。

 

注:

有时>>>>>>>后面会跟一些描述信息,比如分支名称、提交时的注释等等。

 

三、替换撤销命令

!!需要谨慎使用的一些命令

1,删除分支

git branch -D <要删除的分支名称> 强制删除,即便没有被合并到主分支

git branch -d <要删除的分支名称> 非强制删除,如果没有被合并到主分支,则无法删除

 

 

2,替换掉工作目录中的某一个文件,放弃对它的所有修改,将该文件更新到最近的一次提交版本

git checkout <文件路径>

注:替换之后,则该文件再也找不回来了,需谨慎使用!

 

3,清除暂存区内的指定文件的暂存内容

git reset HEAD <文件路径>

注:清除之后,则该文件再也找不回来了,需谨慎使用!

 

4,撤销提交到指定的版本

git reset <指定版本编号>

注:撤销后,指定版本之后的所有提交都会被撤销,并回退到当前工作目录,执行git status可以看到,所有已修改的文件都是红色字体显示

 

注:3,4可以使用git reflog查看改动日志

 

四、常用使用场景举例

 

1,日常性工作

(1)工作之前使用git branch查看当前分支,使用git status查看我们工作目录中是否有未提交的修改,使用git diff查看我们都修改了哪些内容

(2)使用git pull或者git fetch 、git merge命令将远程内容拉取到本地,并合并到当前分支中

(3)使用git add将我们的修改添加到暂存区内,使用git commit提交本次修改(注意使用-m添加提交说明)

(4)使用 git status查看是否提交完成

(5)使用git pull拉取远程分支的修改

(6)使用git push推送本次修改

 

2,不能快速解决的任务,或者需要紧急修复的bug

(1)使用git branch查看当前分支

(2)使用git checkout切换到需要紧急修复的分支

(3)使用git checkout -b迁出一个修复分支(例如叫fix)

(4)在fix分支上修复bug,使用git add、git commit提交修改

(5)使用git checkout切换到需要紧急修复的分支,使用git pull拉取远程内容,使用git merge fix合并修改

(6)使用git status查看合并是否产生冲突

(7)使用git push推送修改到远程仓库

 

 

 

 

 

 

分享到:
评论

相关推荐

    Git的使用文档--分支管理与冲突解决

    下面将详细阐述Git的分支管理和冲突解决。 1. **创建和切换分支** - 创建分支:使用`git branch &lt;branch_name&gt;`命令可以创建一个新的分支,如`git branch test`。 - 切换分支:使用`git checkout &lt;branch_name&gt;`...

    git 分支管理

    ### Git分支管理详解 #### 一、分支的重要性与特点 几乎每种版本控制系统都支持分支功能,但在Git中,分支的使用方式与效率达到了前所未有的高度。传统的版本控制系统在创建分支时,通常需要复制整个项目的代码库...

    idea+git合并分支解决冲突及详解步骤

    通过以上步骤,可以有效地在Idea中管理和合并Git分支,同时解决可能出现的冲突,确保代码库的整洁和团队协作的顺畅。了解这些操作对于日常开发和团队协作至关重要,有助于提升开发效率和代码质量。

    分支管理规范-GIT分支流程开发规范

    有效的Git分支管理规范能提高团队的协作效率,减少错误和冲突。通过遵循以上流程,开发团队可以更好地组织代码开发、测试和发布,确保项目的顺利进行。随着时间的推移,团队可以根据自身需求对这些规范进行调整和...

    git分支版本管理.pdf

    以下是对"git分支版本管理.pdf"中提到的知识点的详细说明: 1. **主分支(master)**: 主分支代表了项目的正式发布版本,通常是最稳定的代码库,只包含已验证并上线的代码。 2. **开发分支(dev)**: 开发分支...

    Git分支合并冲突解决的方法实现

    本文将深入探讨Git分支合并冲突的解决方法,以便更好地理解和管理这些冲突。 首先,我们需要理解Git的两种主要合并策略:`merge`和`rebase`。`merge`策略保留了分支的历史,形成一个网状的提交历史,而`rebase`则...

    git协同冲突解决1

    提交解决冲突后的文件到本地仓库,使用命令`git commit -m "fix conflict"`,在提交消息中简要描述冲突解决的过程。 e. 最后,用`git push origin dev`将解决冲突后的代码推送到远端仓库。 理解这些基本的冲突...

    git 在Intellij 上解决git冲突

    Git在IntelliJ IDEA上解决冲突的详细指南 ...通过以上步骤和策略,你可以在IntelliJ IDEA中有效地管理和解决Git冲突,确保团队协作的顺利进行。记得在解决冲突后进行充分的测试,以确保代码的正确性和完整性。

    git的使用葵花宝典,模块化开发,git flow,代码冲突的解决,GitLabWeb

    Git flow是一种广泛使用的Git分支管理策略,特别适用于大型团队开发。其核心概念包括: 1. **master分支**:代表项目的稳定版本,仅包含已发布的代码。 2. **develop分支**:代表项目的开发版本,包含正在进行的...

    git分支原理命令图文解析

    在深入探讨Git分支的具体操作之前,首先需要理解Git是如何管理和维护不同版本的。Git通过一系列的指针(称为引用,通常简称ref)来追踪项目的不同版本。每个提交(commit)实际上都是一个对象,包含了上一个版本的...

    git 代码管理与版本管理.docx

    Git 代码管理与版本管理 Git 代码管理与版本管理是...Git 代码管理与版本管理是软件开发过程中不可或缺的一部分,了解 Git 的基本概念、工作流程和分支管理可以帮助开发团队更好地管理代码,提高协作效率和代码质量。

    Git使用详细教程-Git分支管理.pdf

    也不会冲突了,而是fast-forward,此时我们再查看dev分支最新的commit id会发现和刚刚在主分支最新的commit id一样,dev分支只是采用了fast-forward方式更新了commit id,道理很简单,因为在master我们解决冲突后做...

    git常用命令和冲突解决.doc

    Git 常用命令和冲突解决 Git 是一个免费、开源的分布式版本控制系统,能够记录每一次更新,并与他人协作。下面是一些 Git 常用的命令和冲突解决方法。 一、远程仓库相关命令 1.检出仓库:`$ git clone git://...

    Git分支管理流程与规范化操作指南

    内容概要:文档详细介绍了针对公司内部项目的 Git 分支管理和版本发布规范,涵盖版本分类及其驱动源,分支分类及命名规则,不同情况下代码分支的合并及发布流程,强调了分支间的流转规则与发版前后的注意事项。...

    Git分支使用方法,详细方法

    本文将详细介绍Git分支的使用方法,包括查看分支、创建分支、切换分支、在新分支上工作、提交更改、切换回主分支、删除分支以及合并分支,并简要讨论了处理合并冲突的过程。 一、查看可用分支 在Git中,你可以使用`...

    git仓库管理工具

    7. **冲突解决**:当多个开发者修改了同一部分代码时,Git会检测到冲突,并要求用户手动解决。这确保了合并后的代码是经过审慎检查的,避免了潜在问题。 8. **hooks**:Git提供预定义的脚本钩子(hooks),允许在...

    git仓库迁移(所有分支)脚本,git合并dev分支到master分支脚本

    在开发过程中,Git仓库的迁移和分支管理是非常常见的操作。下面将详细讲解如何进行Git仓库迁移以及如何合并dev分支到master分支。 **一、Git仓库迁移** 1. **克隆仓库**:首先,你需要在新的服务器或本地目录上...

Global site tag (gtag.js) - Google Analytics