一、分支管理
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管理模式,根据提示有如下操作
- 合并多次提交
- 修改提交的commit message
- 删除某个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的分支管理和冲突解决。 1. **创建和切换分支** - 创建分支:使用`git branch <branch_name>`命令可以创建一个新的分支,如`git branch test`。 - 切换分支:使用`git checkout <branch_name>`...
### Git分支管理详解 #### 一、分支的重要性与特点 几乎每种版本控制系统都支持分支功能,但在Git中,分支的使用方式与效率达到了前所未有的高度。传统的版本控制系统在创建分支时,通常需要复制整个项目的代码库...
通过以上步骤,可以有效地在Idea中管理和合并Git分支,同时解决可能出现的冲突,确保代码库的整洁和团队协作的顺畅。了解这些操作对于日常开发和团队协作至关重要,有助于提升开发效率和代码质量。
有效的Git分支管理规范能提高团队的协作效率,减少错误和冲突。通过遵循以上流程,开发团队可以更好地组织代码开发、测试和发布,确保项目的顺利进行。随着时间的推移,团队可以根据自身需求对这些规范进行调整和...
以下是对"git分支版本管理.pdf"中提到的知识点的详细说明: 1. **主分支(master)**: 主分支代表了项目的正式发布版本,通常是最稳定的代码库,只包含已验证并上线的代码。 2. **开发分支(dev)**: 开发分支...
本文将深入探讨Git分支合并冲突的解决方法,以便更好地理解和管理这些冲突。 首先,我们需要理解Git的两种主要合并策略:`merge`和`rebase`。`merge`策略保留了分支的历史,形成一个网状的提交历史,而`rebase`则...
提交解决冲突后的文件到本地仓库,使用命令`git commit -m "fix conflict"`,在提交消息中简要描述冲突解决的过程。 e. 最后,用`git push origin dev`将解决冲突后的代码推送到远端仓库。 理解这些基本的冲突...
Git在IntelliJ IDEA上解决冲突的详细指南 ...通过以上步骤和策略,你可以在IntelliJ IDEA中有效地管理和解决Git冲突,确保团队协作的顺利进行。记得在解决冲突后进行充分的测试,以确保代码的正确性和完整性。
Git flow是一种广泛使用的Git分支管理策略,特别适用于大型团队开发。其核心概念包括: 1. **master分支**:代表项目的稳定版本,仅包含已发布的代码。 2. **develop分支**:代表项目的开发版本,包含正在进行的...
在深入探讨Git分支的具体操作之前,首先需要理解Git是如何管理和维护不同版本的。Git通过一系列的指针(称为引用,通常简称ref)来追踪项目的不同版本。每个提交(commit)实际上都是一个对象,包含了上一个版本的...
Git 代码管理与版本管理 Git 代码管理与版本管理是...Git 代码管理与版本管理是软件开发过程中不可或缺的一部分,了解 Git 的基本概念、工作流程和分支管理可以帮助开发团队更好地管理代码,提高协作效率和代码质量。
也不会冲突了,而是fast-forward,此时我们再查看dev分支最新的commit id会发现和刚刚在主分支最新的commit id一样,dev分支只是采用了fast-forward方式更新了commit id,道理很简单,因为在master我们解决冲突后做...
Git 常用命令和冲突解决 Git 是一个免费、开源的分布式版本控制系统,能够记录每一次更新,并与他人协作。下面是一些 Git 常用的命令和冲突解决方法。 一、远程仓库相关命令 1.检出仓库:`$ git clone git://...
内容概要:文档详细介绍了针对公司内部项目的 Git 分支管理和版本发布规范,涵盖版本分类及其驱动源,分支分类及命名规则,不同情况下代码分支的合并及发布流程,强调了分支间的流转规则与发版前后的注意事项。...
在开发过程中,Git仓库的迁移和分支管理是非常常见的操作。下面将详细讲解如何进行Git仓库迁移以及如何合并dev分支到master分支。 **一、Git仓库迁移** 1. **克隆仓库**:首先,你需要在新的服务器或本地目录上...
本文将详细介绍Git分支的使用方法,包括查看分支、创建分支、切换分支、在新分支上工作、提交更改、切换回主分支、删除分支以及合并分支,并简要讨论了处理合并冲突的过程。 一、查看可用分支 在Git中,你可以使用`...
7. **冲突解决**:当多个开发者修改了同一部分代码时,Git会检测到冲突,并要求用户手动解决。这确保了合并后的代码是经过审慎检查的,避免了潜在问题。 8. **hooks**:Git提供预定义的脚本钩子(hooks),允许在...