【git笔记】分支管理

git笔记 分支管理

说明

介绍git分支相关命令。环境:Ubuntu/Debian。

命令

创建分支

创建分支

git branch <branchname>

该命令执行后,创建一个分支。

创建并切换到分支

git checkout -b <branchname>

或者是

git branch <branchname>
git checkout <branchname>

或者是Git version2.23新增的命令

git switch -c <branchname>

该命令执行后,创建一个分支并切换到这个分支下。

查看分支情况

git branch

该命令执行后,会列出所有分支,并显示当前分支。

合并分支

git merge <branchname>

该命令执行后,会合并指定分支到当前分支。

切换分支

git checkout <branchname>

或者是Git version2.23新增的命令

git switch <branchname>

该命令执行后,会切换到指定分支。

删除分支

git branch -d <branchname>

该命令执行后,会删除到指定分支。

推送分支

git push <remote> <branch>

该命令执行后,会推送<branch>分支到远程仓库<remote>

远程仓库默认名称是origin

git push origin <branchname>

该命令执行后,会推送<branch>分支到远程仓库origin

创建远程仓库的分支到本地

git checkout -b <branchname> <remote>/<branchname>

该命令执行后,会创建远程仓库<remote><branchname>分支到本地分支<branchname>

远程仓库默认名称是origin

git checkout -b <branchname> origin/<branchname>

该命令执行后,会创建远程仓库origin的分支到本地。

查看分支合并情况

git log --graph

或者

git log --graph --pretty=oneline --abbrev-commit

该命令执行后,可以看出分支的合并情况。

命令使用示例

创建分支示例

创建分支示例

使用命令git branch testbranch创建testbranch分支。

然后使用命令git branch查看分支情况

* master
  testbranch

可以看到新建了一个testbranch分支。

创建并切换到分支

使用命令git checkout -b testbranch创建并切换到testbranch分支。

Switched to a new branch 'testbranch'

然后使用命令git branch查看分支情况

  master
* testbranch

可以看到新建了一个分支testbranch,并且当前已经切换到了testbranch分支。

切换分支示例

当前有两个分支,分别是mastertestbranch分支。

使用命令git branch查看分支情况。

* master
  testbranch

然后执行git checkout testbranch,切换到testbranch分支。

Switched to branch 'testbranch'

使用命令git branch查看分支情况。

  master
* testbranch

可以看到该命令执行后,会切换到指定的testbranch分支。

删除分支示例

当前有两个分支,分别是mastertestbranch分支。

使用命令git branch查看分支情况。

* master
  testbranch

然后执行git branch -d testbranch,删除testbranch分支。

Deleted branch testbranch (was 632d1fe).

使用命令git branch查看分支情况。

* master

可以看到该命令执行后,testbranch分支会被删除。

合并分支示例

当前有两个分支,分别是mastertestbranch分支,现在在testbranch分支。

目前仓库中有一个文件README.md。

现在对里面的内容做出了修改。

执行git add README.mdgit commit -m "branch test"提交到本地仓库(local repository)。

[testbranch 20e9301] branch test
 1 file changed, 1 insertion(+)

这个时候完成testbranch分支的开发工作。

执行git checkout master切换回master分支。

现在执行git merge testbranch,将分支的更新内容合并到master分支。

Updating 632d1fe..20e9301
Fast-forward
 README.md |    1 +
 1 file changed, 1 insertion(+)

这个时候查看master分支的内容已经都和testbranch分支内容相同了。

推送分支示例

当前有两个分支,分别是mastertestbranch分支,现在在testbranch分支。

执行命令git push origin testbranch推送分支到远程仓库(remote repository)

remote: 
remote: To create a merge request for testbranch, visit:
remote:   https://github.com/test=testbranch
remote: 
To https://github.com/test/test.git
 * [new branch]      testbranch -> testbranch

获取远程仓库的分支

执行命令git clone https://github.com/test/gittest.git将项目克隆到本地

Cloning into 'gittest'...
remote: Enumerating objects: 23, done.
remote: Counting objects: 100% (23/23), done.
remote: Compressing objects: 100% (15/15), done.
remote: Total 23 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (23/23), done.

使用命令git branch查看分支情况

* master

发现只有master分支,没有其他分支。

执行命令git checkout -b testbranch origin/testbranch创建本地testbranch分支

Branch testbranch set up to track remote branch testbranch from origin.
Switched to a new branch 'testbranch'

这个时候再使用命令git branch查看分支情况

  master
* testbranch

就已经有testbranch分支,可以在该分支上进行操作了。

解决本地分支冲突示例

当前有两个分支,分别是mastertestbranch分支,现在在testbranch分支。

目前仓库中有一个文件NEW.md。

现在对里面的内容做出了修改,改成以下内容。

test branch

执行git add README.mdgit commit -m "branch test"提交到本地仓库(local repository)。

[testbranch 5421aa7] branch test
 1 file changed, 1 insertion(+)

这个时候完成testbranch分支的开发工作。

执行git checkout master切换回master分支。

现在对NEW.md文件里面的内容做出修改,改成以下内容。

test master

执行git add README.mdgit commit -m "master test"提交到本地仓库(local repository)。

[master 6086e59] master test
 1 file changed, 1 insertion(+)

这个时候执行git merge testbranch命令来合并testbranch分支

Auto-merging NEW.md
CONFLICT (content): Merge conflict in NEW.md
Automatic merge failed; fix conflicts and then commit the result.

提示文件冲突,需要手动解决冲突才能提交。

使用git status命令查看

# On branch master
# Unmerged paths:
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#       both modified:      NEW.md
#
no changes added to commit (use "git add" and/or "git commit -a")

看到NEW.md被共同修改了。

使用cat NEW.md文件查看

<<<<<<< HEAD
test master
=======
test branch
>>>>>>> testbranch

可以看到标记出了不同分支的冲突内容。

手动修改NEW.md文件,解决冲突。

修改为

test merge

执行git add NEW.mdgit commit -m "merge test"重新提交。

提交完成后,可以使用命令git log --graph或者git log --graph --pretty=oneline --abbrev-commit查看分支的合并情况。

使用命令git log --graph查看

# git log --graph
*   commit 09d41b448dfa3abb4526aa5406ce5d49d6724e59
|\  Merge: 6086e59 5421aa7
| | Author: root <root@Linux-host.(none)>
| | Date:   Sun Jan 24 23:22:09 2021 +0800
| | 
| |     merge test
| |   
| * commit 5421aa77f5abcc81174d358f4dde50d615524e59
| | Author: root <root@Linux-host.(none)>
| | Date:   Sun Jan 24 23:17:08 2021 +0800
| | 
| |     branch test
| |   
* | commit 6086e59208cb8545c40b80c6563ff5094864bafa
|/  Author: root <root@Linux-host.(none)>
|   Date:   Sun Jan 24 23:18:29 2021 +0800
|   
|       master test
|    
* commit 632d1fee973a4fee3256d3fb05f3cdf2e9324e59
| Author: root <root@Linux-host.(none)>
| Date:   Sun Jan 24 17:38:31 2021 +0800
| 
|     version
|

或者使用命令git log --graph --pretty=oneline --abbrev-commit查看

# git log --graph --pretty=oneline --abbrev-commit
*   09d41b4 merge test
|\  
| * 5421aa7 branch test
* | 6086e59 master test
|/  
* 632d1fe version

[参考资料]

git Documentation

git-branch

多人协作

解决冲突


本文链接:https://blog.csdn.net/u012028275/article/details/121389537

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值