Git 开源的版本控制系统-04-branch manage 分支管理

拓展阅读

Subversion 开源的版本控制系统入门介绍 VCS

Git 开源的版本控制系统-01-入门使用介绍

Git 开源的版本控制系统-02-base usage 基本用法

Git 开源的版本控制系统-03-时间数据回溯

Git 开源的版本控制系统-04-branch manage 分支管理

Git 开源的版本控制系统-05-tags 标签管理

Git 开源的版本控制系统-06-share to github 如何把项目代码共享到 github

Git 开源的版本控制系统-07-gitignore 指定忽略版本管理的文件

分支管理

  • 查看分支

本地

$   git branch

远程

$   git branch -r

所有

$   git branch -a
  • 创建与切换

    houbinbindeMacBook-Pro:git-demo houbinbin$ git branch git_demo_1.1
    houbinbindeMacBook-Pro:git-demo houbinbin$ git branch
    git_demo_1.1

    • master
      houbinbindeMacBook-Pro:git-demo houbinbin$ git checkout git_demo_1.1
      切换到分支 'git_demo_1.1'
      houbinbindeMacBook-Pro:git-demo houbinbin$

与以下命令相同

$   git checkout -b <name>
  • 推送分支到 Github

    $ git push origin [分支名]

  • 删除分支

本地

$   git branch -d [分支名]

Github 远程

$   git push origin --delete <分支名>

git wiki

$ git checkout master

$ git pull

$ git checkout 分支

$ git rebase master     (用rebase合并主干的修改,如果有冲突在此时解决)

$ git checkout master

$ git merge 分支

$ git push
  • 推送

注意,合并后它没有暂存区,所以,提交会告诉你没有变化。

您应该使用 git push origin master

$   git push    //推送到当前分支
$   git push origin master  //推送到主分支
  • 分支合并提示

通常,当合并时,git 会使用 Fast Forward 模式,我们可以使用 --no-ff 进行合并。

houbinbindeMacBook-Pro:git-demo houbinbin$ git checkout -b git_demo_1.2
切换到一个新分支 'git_demo_1.2'

houbinbindeMacBook-Pro:git-demo houbinbin$ git add README.md
houbinbindeMacBook-Pro:git-demo houbinbin$ git commit -m "change git_demo_1.2"
[git_demo_1.2 8983fd1] change git_demo_1.2
 1 file changed, 2 insertions(+), 1 deletion(-)

houbinbindeMacBook-Pro:git-demo houbinbin$ git checkout master
切换到分支 'master'
您的分支与 'origin/master' 一致。
houbinbindeMacBook-Pro:git-demo houbinbin$ git merge --no-ff -m "merge with --no-ff" git_demo_1.2
合并分支 'git_demo_1.2' 到 'master'
Fast-forward
 README.md | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

现在,查看日志

houbinbindeMacBook-Pro:git-demo houbinbin$ git log --graph --pretty=oneline --abbrev-commit
*   0d899d1 merge with --no-ff
|\
| * 8983fd1 change git_demo_1.2
|/
* d696904 add pom.xml
* cd84e27 git diff
* 9f18a0c add readme
* 965cf5d first commit
  • 删除本地分支

    $ git branch -d xxxxx

Bug 分支

如果在工作的过程中,您必须解决其他问题。

例如,您在分支 1.2 上编写了一些东西,但是有一个 bug 需要修复,我们应该如何处理?

  • git stash

这个命令可以保存当前的工作状态。

houbinbindeMacBook-Pro:git-demo houbinbin$ git status
在分支 master
您的分支领先 'origin/master' 2 个提交。
  (使用 "git push" 来发布您的本地提交)
未暂存的变更:
  (使用 "git add <file>..." 更新要提交的内容)
  (使用 "git checkout -- <file>..." 丢弃工作区的更改)

        修改:     README.md

没有要提交的变更(使用 "git add" 和/或 "git commit -a")

现在,我们可以切换到 master 分支并解决 bug。

houbinbindeMacBook-Pro:git-demo houbinbin$ git checkout master
已经位于 'master'
您的分支领先 'origin/master' 2 个提交。
  (使用 "git push" 来发布您的本地提交)
houbinbindeMacBook-Pro:git-demo houbinbin$ git checkout -b git_demo_bug_001
切换到一个新分支 'git_demo_bug_001'
houbinbindeMacBook-Pro:git-demo houbinbin$ git add README.md
houbinbindeMacBook-Pro:git-demo houbinbin$ git commit -m "fix the bug"
[git_demo_bug_001 4069a0c] 修复 bug
 1 file changed, 2 insertions(+), 1 deletion(-)

houbinbindeMacBook-Pro:git-demo houbinbin$ git checkout master
切换到分支 'master'
您的分支领先 'origin/master' 2 个提交。
  (使用 "git push" 来发布您的本地提交)
houbinbindeMacBook-Pro:git-demo houbinbin$ git merge git_demo_bug_001
更新 0d899d1..4069a0c
Fast-forward
 README.md | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

修复了 bug 后,我们可以切换到 1.2 分支,继续工作

houbinbindeMacBook-Pro:git-demo houbinbin$ git stash list
stash@{0}: 在 master 上 WIP: 0d899d1 merge

 with --no-ff
houbinbindeMacBook-Pro:git-demo houbinbin$ git stash pop
切换到分支 'git_demo_1.2'
未暂存的变更:
  (使用 "git add <file>..." 更新要提交的内容)
  (使用 "git checkout -- <file>..." 丢弃工作区的更改)

        修改:     README.md

没有要提交的变更(使用 "git add" 和/或 "git commit -a")
Dropped refs/stash@{0} (9cd4d92f41db2cdb1b8e15ffde7c73c4fd6ef83c)
houbinbindeMacBook-Pro:git-demo houbinbin$ git stash list

本文由博客一文多发平台 OpenWrite 发布!

相关推荐
P.H. Infinity2 分钟前
【RabbitMQ】04-发送者可靠性
java·rabbitmq·java-rabbitmq
生命几十年3万天6 分钟前
java的threadlocal为何内存泄漏
java
caridle17 分钟前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
^velpro^22 分钟前
数据库连接池的创建
java·开发语言·数据库
苹果醋326 分钟前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
秋の花31 分钟前
【JAVA基础】Java集合基础
java·开发语言·windows
小松学前端33 分钟前
第六章 7.0 LinkList
java·开发语言·网络
Wx-bishekaifayuan40 分钟前
django电商易购系统-计算机设计毕业源码61059
java·spring boot·spring·spring cloud·django·sqlite·guava
customer0844 分钟前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源
全栈开发圈1 小时前
新书速览|Java网络爬虫精解与实践
java·开发语言·爬虫