Git 之 获取远程分支(fetch5种方法),并合并到本地分支(merge和rebase的2种方法)中

2023-10-27

 

 

Git  之 获取远程分支(fetch5种方法),并合并到本地分支(merge和rebase的2种方法)中

 

目录

Git  之 获取远程分支(fetch5种方法),并合并到本地分支(merge和rebase的2种方法)中

一、简单介绍

二、获取远程分支,并与构建对应本地分支的操作

1、方法一:git checkout targetbranch

2、方法二:git checkout -b 本地分支名 origin/远程分支名

3、方法三:git checkout --track origin/远程分支名

4、方法四:git checkout -t origin/远程分支名

5、方法五:fetch指定的一个分支:git fetch [repo] [remote_branch_name]:[local_branch_name]         

三、远程分支,合并到本地分支的方法一(merge):

1、切换到把远程合并到的分支

2、 查看远程仓,找到远程要合并的远程分支

3、从远程仓orgin仓的 [remoteBranchName] 分支下载到本地,并在本地新建一个对应 [localBranchName] 分支

4、查看[localBranchName]   分支与本地要合并的当前分支的不同

5、将 [localBranchName]    分支和本地要合并的当前分支合并

6、push 推到远程服务器

7、删除temp分支 (酌情处理)

四、远程分支,合并到本地分支的方法一(rebase):

1、从远程仓orgin仓的 [remoteBranchName] 分支下载到本地,并在本地新建一个对应 [localBranchName] 分支

2、切换到远程分支下载的新建的本地分支 [localBranchName]  

3、rebase 目标合并的本地分支 [targetBranchName]git rebase [targetBranchName]

4、切换分支,切到要合并的本地目标分支 [targetBranchName]上

5、合并分支 [localBranchName] 

6、push 推到远程服务器

7、删除temp分支 (酌情处理)

附录:merge 和 rebase 的区别


 

一、简单介绍

Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 [1]  Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

本节介绍,Git 对 远程分支获取和,远程分支合并到本地某个分支的简单操作。

 

二、获取远程分支,并与构建对应本地分支的操作

(下面给出多种方法,大家可以酌情选择)

整理了五种方法,我常用最后一种,这五种方法(除了第4中已经写了fetch的步骤)执行前都需要执行git fetch来同步远程仓库

1、方法一:git checkout targetbranch

1)首先,获取远程所有分支
    git fetch 

2)查看所有远程分支,找到需要的远程分支,例如 origin/targetbranch
    git branch -r 

3)在本地新建一个同名分支,然后系统会自动与该远程分支关联
    git checkout targetbranch
    

注意(git checkout origin/mybranch 会进入detached head状态,不会在本地新建分支,不要这样写)

2、方法二:git checkout -b 本地分支名 origin/远程分支名

1)首先,获取远程所有分支
    git fetch 

2)创建与远程分支关联的本地分支(可以同名,也可以不同名;建议同名,方便管理)
    git checkout -b 本地分支名 origin/远程分支名

3、方法三:git checkout --track origin/远程分支名

1)首先,获取远程所有分支
    git fetch 

2)创建与远程分支关联的本地分支
    git checkout --track origin/远程分支名 

4、方法四:git checkout -t origin/远程分支名

1)首先,获取远程所有分支
    git fetch 

2)创建与远程分支关联的本地分支
    git checkout -t origin/远程分支名

5、方法五:fetch指定的一个分支:git fetch [repo] [remote_branch_name]:[local_branch_name]         

1)获取远程指定分支,并创建与之关联的本地分支
    git fetch [repo] [remote_branch_name]:[local_branch_name]   

    (举例:git fetch origin TargetBranch:tempBranch    从远程仓orgin仓的TargetBranch分支下载到本地,并新建一个tempBranch分支)
    ([remote_branch_name]:[local_branch_name] 可同名,也可不同名;建议同名,便于管理)     

2)切换当前分支为本地建立的分支
    git checkout [local_branch_name]      

注意:第一行的:[local_branch_name]如果不写,则本地新建的分支名默认与远程分支名相同

 

三、远程分支,合并到本地分支的方法一(merge):

注意:前提,当前分支为远程分支要合并的分支;最好要合并的分支之前commit提交并 pull 和 push 一次,避免不必要的冲突

1、切换到把远程合并到的分支

git check [branchName]

 

2、 查看远程仓,找到远程要合并的远程分支

git remote -v   

 

3、从远程仓orgin仓的 [remoteBranchName] 分支下载到本地,并在本地新建一个对应 [localBranchName] 分支

( [remoteBranchName]:[localBranchName] 可以同名,也可以不同名;建议同名,便于管理)

git fetch origin [remoteBranchName]:[localBranchName]  

 

4、查看[localBranchName]   分支与本地要合并的当前分支的不同

注意:按回车查看更多差异;输入 q 退出差异对比

git diff [localBranchName]     

 

5、将 [localBranchName]    分支和本地要合并的当前分支合并

git merge [localBranchName] 

 

6、push 推到远程服务器

git push origin [targetBranchName]

 

7、删除temp分支 (酌情处理)

git branch -d [localBranchName] 

 

四、远程分支,合并到本地分支的方法一(rebase):

注意:最好要合并的分支之前commit提交并 pull 和 push 一次,避免不必要的冲突

1、从远程仓orgin仓的 [remoteBranchName] 分支下载到本地,并在本地新建一个对应 [localBranchName] 分支

( [remoteBranchName]:[localBranchName] 可以同名,也可以不同名;建议同名,便于管理)

git fetch origin [remoteBranchName]:[localBranchName]  

 

2、切换到远程分支下载的新建的本地分支 [localBranchName]  

git checkout [localBranchName]  

 

3、rebase 目标合并的本地分支 [targetBranchName]
git rebase [targetBranchName]

git rebase [targetBranchName] 的过程是:
1)找到 [targetBranchName] 分支和 [localBranchName]  分支的最近的共同祖先

2)将共同祖先到hotfix head之间的所有提交记录,存入临时文件,将当前分支的基准点设置为master分支的head

3)然后依次引用临时文件中的提交记录

 

在rebase的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase并会让你去解决 冲突;

1)在解决完冲突后,用"git-add"命令(git add .)去更新这些内容的索引(index)

git add .

2)然后,你无需执行 git-commit,只要执行

git rebase --continue

这样git会继续应用(apply)余下的补丁。

3)在任何时候,你可以用--abort参数来终止rebase的行动(git rebase --abort),并且 [targetBranchName] 分支会回到rebase开始前的状态

git rebase --abort

 

4、切换分支,切到要合并的本地目标分支 [targetBranchName]上

git checkout [targetBranchName]

 

5、合并分支 [localBranchName] 

git merge [localBranchName]  

 

6、push 推到远程服务器

git push origin [targetBranchName]

 

7、删除temp分支 (酌情处理)

git branch -d [localBranchName] 

 

附录:merge 和 rebase 的区别

(参考博客:https://blog.csdn.net/m0_38022029/article/details/79054619

1.   git merge

咱们先来看一下第一种方法 —— git merge

在 Git 中合并两个分支时会产生一个特殊的提交记录,它有两个父节点。翻译成自然语言相当于:“我要把这两个父节点本身及它们所有的祖先都包含进来。”下面具体解释。

试试

# 创建新分支 bugFix

     git branch bugFix

# 切换到该分支

     git checkout bugFix

#  提交一次

      git commit

#     切换回 master

       git checkout master

#   再提交一次

    git commit

#  用 git merge 把 bugFix 合并到 master

    git merge bugFix

(master 的分支被混入到所有的提交记录,但 bugFix 没有,所以要进行下面的操作)

#  再把 master 分支合并到 bugFix(因为 master 继承自 bugFix,Git什么都不用做,只是简单地把 bugFix 移动到 master所指向的那个提交记录。)

     git checkout bugFix;

     git merge master

2.  git rebase

第二种合并分支的方法是 git rebase。rebase 实际上就是取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去。

Rebase 的优势就是可以创造更线性的提交历史,这听上去有些难以理解。如果只允许使用 Rebase 的话,代码库的提交历史将会变得异常清晰。 222222

# 创建新分支 bugFix分支

   git branch bugFix

#提交一次(提交在master分支上)

   git commit

# 切换到bugFix分支

   git checkout bugFix

#  提交一次(提交在bugFix分支上)

   git commit

#使用git rebase把 bugFix 分支里的工作直接移到 master 分支上(移动以后会使得两个分支的功能看起来像是按顺序开发,但实际上它们是并行开发#的)。

   git rebase master

注意:提交记录 C3 依然存在(树上那个半透明的节点),而 C3'是我们 Rebase 到 master 分支上的 C3 的副本。

#切换到master分支上(为了进行更新master的操作)

   git checkout master

#把master的 rebase 到 bugFix 分支上(由于 bugFix 继承自 master,所以 git 只是简单的把 master 分支的引用向前移动了一下而已。)

   git rebase bugFix

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git 之 获取远程分支(fetch5种方法),并合并到本地分支(merge和rebase的2种方法)中 的相关文章

随机推荐