Git超详解四 分支管理 (看不懂算我输)

1.创建和切换分支

    1. 创建分支:git branch [新分支名称]
    1. 切换分支:git checkout [分支名]
    1. 创建并切换分支:git checkout -b [分支名]
    1. 合并分支:git merge [分支名]。将指定的分支代码合并到当前分支上来。
    1. 查看所有分支:git branch
    1. 修改完直接提交:git commit -a -m ""

2.合并分支冲突处理

<<<<<<< HEADf
i love python
=======
i love git
>>>>>>> dev

解释:
<<<<<<< HEADf
i love python 是属于HEAD指针指向的分支的代码。
也就是当前分支的代码。
=======

=======
i love git 是属于dev分支的代码。
>>>>>>> dev

2.2解决办法:

说白了,该删删!!!

    1. 如果dev分支上面的代码应该保留下来,那么就应该把当前分支
      的代码删掉,并且把<<<HEAD,===,>>>dev删掉,值留下dev分支的代码
    1. 如果dev分支上面的代码是写错了,应该保留当前分支的代码,
      这时候,就留下当前分支的代码,并且把<<<HEAD,===,>>>dev删掉。
    1. 有些时候,dev分支和当前分支代码都选择性的保留或者都要保留,
      这时候,就需要人工去干预,看哪些代码要保留,哪些代码要删掉,
      但是<<<HEAD,===,>>>dev是必须要删掉的。

非常重要的一点是。解决完冲突以后。这个文件相当于重新配置,需要重新addcommit

3.合并没有历史相关的commit

我们本地有一个仓库了,然后远程也有一个仓库了。这时候如果我们在本地仓库直接拉
远程仓库的代码,会提示以下错误:

fatal: refusing to merge unrelated histories

原因是远程仓库的commit和我们本地仓库的commit是没有历史相关的,这时候如果我们
还是想要进行合并,那么可以使用--allow-unrelated-historeis参数:

$ git pull --allow-unrelated-histories origin master

只要本地代码进行了commit,拉代码的时候就不会被覆盖掉,顶多是产生冲突。

重要的事情说三遍:
做任何pull操作之前,一定要先进行commit
做任何pull操作之前,一定要先进行commit
做任何pull操作之前,一定要先进行commit
(如果你和同事都修改了同一个文件,然后同事先把代码提交到服务器了,这时候如果
你不commit直接pull,那么你同事的代码会把你本地的代码该覆盖掉了,这时候,神仙也救不了你了。)

git remote add origin url //添加远程仓库

然后如果直接git pull origin master会出错

原因是因为本地和云端是两个不关联的仓库,需要允许不关联的进行合并

git pull  --allow-unrelated-histories origin master

4.本地分支和远程仓库关联

如果想远程创建一个分支

那么需要在本地先创建一个该分支,比如xiaosheng

git checkout -b xiaosheng

然后推送到远程

git push origin xiaosheng

关联

git branch -u origin/分支名称

输入命令git branch -vv可以查看本地分支和远程分支的关联情况。

(如果出现了类似以下的输出,那么说明是已经关联了:)

如果出现了类似以下的输出,那么说明是已经关联了:
master b9bfb09 [origin/master]

如果没有关联,那么这时候可以用git branch -u origin/分支名称进行关联。前提是
远程有这个分支。比如本地有dev分支,但是远程没有dev分支,这时候我们应该先把
本地分支推送到远程上去,git push origin 分支名 来创建一个dev分支。

4.1关联有什么好处呢?

以后我们只要通过git push 分支名就可以将本地当前分支,推送到关联的远程分支。

5.远程拉取分支

如果在多人开发中,你的领导创建了一个dev分支,用来作为发布前的协作分支,并且
已经把dev分支推送到了远程,那么这时候我们怎么在本地进行关联呢?

# 是把远程仓库的数据在本地进行更新。
$ git fetch origin

# 创建一个新的分支,并且把远程的origin/zhiliao和本地的zhiliao进行关联
$ git checkout -b zhiliao origin/zhiliao

# 将origin/zhiliao的分支上的代码合并到zhiliao分支
$ git merge origin/zhiliao

正常来说:pull=fetch+merge;但是此处只能这样,如果pull,因为本地没有这个分支,会将远程gitbash代码与当前分支dev合并,也就是两个不相干的分支合并,就会有问题

比如现在在dev分支上,不要pull远程的其他分支(比如zhiliao),这样会把代码搞得
很乱。

6.删除远程分支

当工作已经完成了,代码也已经合并到master分支了,这时候可以把这个远程分支删掉了。可以通过以下命令来实现:

$ git branch -d xs			删除本地的`xs`分支
$ git push origin --delete xs		删除远程的`xs`分支。
git log --graph --oneline		可以以图像形式显示出来
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Git中,分支是用来管理代码开发的重要概念。分支可以让多个开发者在同一个代码库中并行地进行工作,而不会相互干扰。每个分支都是代码库的一个独立副本,可以在其中进行修改、提交和合并操作。 在Git中,有一个默认的主分支,通常被称为"master"或"main"分支。除了主分支之外,你还可以创建其他分支来进行特定的开发工作。这些分支可以基于主分支或其他分支创建,并且可以在开发完成后合并回主分支。 关于你提到的"idea看不到",可能是因为你的IDE(如IntelliJ IDEA)没有正确地与Git集成。你可以尝试以下步骤来解决这个问题: 1. 确保你已经在IDE中正确配置了Git的路径和设置。 2. 检查你的项目是否已经与Git仓库关联。你可以在项目根目录下执行`git init`命令来初始化一个新的Git仓库。 3. 如果你已经有一个远程Git仓库,可以使用`git clone`命令将其克隆到本地,并在IDE中打开克隆的项目。 4. 如果你已经在IDE中打开了项目,但是无法看到分支信息,可以尝试在IDE的Git工具窗口中切换到"Branches"选项卡,查看分支列表。 5. 如果分支列表为空,可能是因为你的项目还没有创建任何分支。你可以使用`git branch`命令来创建一个新的分支,然后在IDE中刷新分支列表。 希望以上解答对你有帮助!如果还有其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值