`

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服务器从搭建到使用,很详细~这个是分支管理与冲突解决

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

    主要介绍了idea+git合并分支解决冲突及详解步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    史上最全的git解决冲突

    史上最全的eclipes git解决冲突方法,快来下载下载!!!!

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

    主要介绍了Git分支合并冲突解决的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    git分支操作.txt

    gti详细的分支操作,在git中,可以使用git merge 和git rebase两个命令来进行分支的合并。 git merge 和git rebase在大体上都差不多,下文主要以git merge来例来讲解分支的合并流程。 如果你想了解分支合并的更多...

    Git 版本管理 8 分支冲突 (merge) (教学 教程 tutorial)

    Git_版本管理_#8_分支冲突_(merge)_(教学_教程_tutorial)

    git协同冲突解决1

    1.不同人修改了不同的文件 a.账户A,账户B分别从远端拉取了相同分支 b.账户A修改了main.cpp文件后提交到远端,账户B修改fun.cpp文

    vim-merginal, 用于管理和合并Git分支的逃犯扩展.zip

    vim-merginal, 用于管理和合并Git分支的逃犯扩展 简介Merginal为处理Git分支提供了一个不错的inteface 。 它提供交互式的TUI用于:查看分支列表从该列表签出分支创建新分支删除分支合并分支分支分支解决合并冲突遥控...

    Git 版本管理 9 分支冲突 (rebase) (教学 教程 tutorial)

    Git_版本管理_#9_分支冲突_(rebase)_(教学_教程_tutorial)

    gradle-git-versioning-plugin:此扩展将根据当前的Git分支或Git标签设置项目版本

    Gradle Git版本控制插件 :information: 也可以作为该扩展将根据当前的Git分支或Git标签设置项目版本。 摆脱... 编辑build.gradle 通过git和文件内管理版本Git合并冲突安装添加插件 :warning_selector: 您应该在版本...

    基于Git的软件项目管理配置方法及应用实践.pdf

    :Git分布式特性和分支管理能力适用于大型软件项目,每个分支彼此独立,互不影响。为提高碳化硅外延设备控制系统的精 度、实时性、稳定性,提出一种基于Git进行配置管理的方法。介绍Git的特点、环境配置和常用操作;...

    Git-1.8.chm Git-1.8英文API Git文档工具

    Git的功能特性:  从一般开发者的角度来看git有以下功能:  1:从服务器上克隆... 8:一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。 Git API下载

    2018尚硅谷Git和GitHub视频教程

    29.Git分支管理的本质是创建和移动指针 30.GitHub账号注册 31.修改GitHub账号头像 32.本地库和远程库交互方式回顾 33.为了测试远程交互初始化新的本地库 34.创建远程库 35.在本地创建远程库地址别名 36.推送操作 37....

    Git使用手册.pdf

    8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。 从主开发者的角度(假设主开发者不用开发代码)看,git有以下功能: 1、查看邮件或者通过其它方式...

    Git介绍与使用-培训专用课程PPT

    初始化仓库、克隆项目、添加文件到暂存区、查看仓库当前状态、比较文件不同、提交修改、回退版本(包含清理分支和常用组合操作命令)、删除工作区文件、查看提交记录、远程操作、拉取与合并代码、管理分支(分支操作...

    Git权威指南PDF完整版

    26.2.1 Git 库配置文件的扩展及分支映射/ 387 26.2.2 Git工作分支和 Subversion 如何对应/ 388 26.2.3 其他辅助文件/ 390 26.3 多样的 git-svn 克隆模式/ 390 26.4 共享 git-svn 的克隆库/ 393 26.5 git-svn 的局限/...

    Git基础用法

    Git基础用法 1 一、 Git是什么 1 二、 SVN与Git的最主要的区别 1 三、 安装Git 2 1、 Windows下安装git 2 ...2、 解决冲突 21 3、 分支管理策略 24 4、Bug处理 26 5、 多人协作 29 五、 git基础命令 33

    Git教程——merge 分支冲突

    文章目录1.merge 分支冲突 1.merge 分支冲突 今天的情况是这样, 想象不仅有人在做开发版 dev 的更新, 还有人在修改 master 中的一些 bug. 当我们再 merge dev 的时候, 冲突就来了. 因为 git 不知道应该怎么处理 ...

    pro_git中文版

    本书详细说明git代码管理工具的使用。包括克隆,创建分支,合并,冲突解决,搭建git服务器等。介绍了服务器上的git,分布式git,自定义git,git工具等内容。很全面的一本书,读完可以掌握好git代码管理工具。

    TortoiseGit用户手册中文

    1 安装MsysGit 1 2 安装TortoiseGit 6 3 配置TortoiseGit 6 ...6 Git分支管理策略 25 6.1 Master分支(主分支) 26 6.2开发分支Develop 26 6.3 临时性分支 26 功能分支 27 预发布分支 27 修补Bug分支 27

Global site tag (gtag.js) - Google Analytics