Git分支管理及常见操作
众所周知,使用Git分支,我们可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
既然要使用Git分支,这里就涉及到Git分支的管理及常见操作,如列出分支,分支的创建,分支的删除,分支的合并等操作。
以前看到这就头痛,总是搞不明白,今天研究了许久才搞懂,这里做个笔记。
如,我的Git工具安装在E盘>myGit中,安装后目录如下:

我本地创建的仓库为myProject,首先我们可以先查看下本地仓库的分支情况。打开Git工具,操作如下。
jiangfeng@jiangfeng MINGW64 ~/桌面
$ cd e: jiangfeng@jiangfeng MINGW64 /e
$ cd mygit jiangfeng@jiangfeng MINGW64 /e/mygit
$ cd git jiangfeng@jiangfeng MINGW64 /e/mygit/git
$ cd myProject
检查本地仓库分支,命令,git branch回车即可查看该仓库下的分支情况,如果没有创建的话,默认只有主分支master:
jiangfeng@jiangfeng MINGW64 /e/mygit/git/myProject (master)
$ git branch 查看该仓库下的分支情况
* master
下面,创建分支,如,我在该仓库下创建了分支test,然后在该分支下写了一个test.txt文件。那么这里就涉及到两个操作了,即分支的创建与切换。具体操作如下:
jiangfeng@jiangfeng MINGW64 /e/mygit/git/myProject (master)
$ git branch test test为创建的分支名 jiangfeng@jiangfeng MINGW64 /e/mygit/git/myProject (master)
$ git checkout test 从主分支master上切换到刚创建的分支test上
Switched to branch 'test' jiangfeng@jiangfeng MINGW64 /e/mygit/git/myProject (test)
$ echo "hello world!" >test.txt 在分支test里写入一个test.txt文件,文件内容为“hello world!”
下面要将刚创建的文件写入到缓存区。操作如下:
jiangfeng@jiangfeng MINGW64 /e/mygit/git/myProject (test)
$ git add . 将文件写入到缓存区中,注意add与句号间有空格
warning: LF will be replaced by CRLF in test.txt.
The file will have its original line endings in your working directory.
然后要将缓存区内容test.txt文件添加到仓库,操作如下:
jiangfeng@jiangfeng MINGW64 /e/mygit/git/myProject (test)
$ git commit -m "change log" 将缓存区内容添加到仓库
[test afc4b17] change log
file changed, insertion(+)
create mode test.txt
下面要进行分支合并,即将新建的分支test合并到主分支master上,这里首先要将分支test切换到主分支master,然后进行分支合并。操作如下:
jiangfeng@jiangfeng MINGW64 /e/mygit/git/myProject (test)
$ git checkout master 切换分支test到主分支master上
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'. jiangfeng@jiangfeng MINGW64 /e/mygit/git/myProject (master)
$ git merge test 将分支test合并到主分支master上
Updating 68d8bfc..afc4b17
Fast-forward
test.txt | +
file changed, insertion(+)
create mode test.txt
如果,我们要将本地仓库里的内容提交到远程GitHub上,操作如下:
jiangfeng@jiangfeng MINGW64 /e/mygit/git/myProject (master)
$ git push origin master 提交内容到远程GitHub上
Counting objects: , done.
Delta compression using up to threads.
Compressing objects: % (/), done.
Writing objects: % (/), bytes | bytes/s, done.
Total (delta ), reused (delta )
remote: Resolving deltas: % (/), completed with local object.
To https://github.com/leiwuhen-67/project.git
68d8bfc..afc4b17 master -> master
如果不想将新建分支test与主分支master合并,而是想将新建分支上的文件上传到远程对应的分支上,那么操作如下。首先应该在远程GitHub上建立与本地对应的分支。如我本地新建的分支为test,那么我在远程GitHub上新建的分支也应该为test,操作为:
1、打开Git工具,进入到本地仓库,如我的是myProject,因为默认为主分支master,所以先要切换分支到test上,操作: git checkout test
2、在远程GitHub上新建分支test与本地对应,操作: git push --set-upstream origin test
3、如我现在在本地test分支上新建一个test.txt文件,文件内容为”hello world!” 操作为: echo "Hello world!" >test.txt
4、将新建文件添加到缓存区。操作为: git add .
5、将缓存区内容添加到本地仓库,操作为: git commit -m "测试分支"
6、将本地分支test的内容提交到远程GitHub上,操作为: git push origin test
7、删除远程分支: git push origin --delete <branchName> (或者: git push --delete origin <branchName>)
注意:第一次创建远程分支时需要执行步骤2,以后如果要将本地分支上内容提交到远程对应分支上直接git push即可
最后要说的是,假如要获取远程分支test的内容到本地test分支上,应该如何操作呢?
其实,很简单,打开Git工具,进入到本地分支所在的仓库,然后git pull origin test即可,例如我本地仓库在E盘>myGit>Git下,仓库名为myProject,那么我的操作依次为:
cd e: 、 cd mygit 、 cd git 、 cd myproject 、 git pull origin test (因为我这里进去直接是test分支,若不是,则要先从主分支maste切换到test分支,在进行此操作)
进行到这里,那么远程分支test里的内容已经获取到本地test分支上了。
同样的,如果我想将本地分支test内容提交到远程分支master上,那么我的操作则为: git push origin master
总结:
1、查看分支:git branch
2、创建分支:git branch 分支名
3、删除分支:git branch -d 分支名
4、切换分支:git checkout 新建分支名
5、合并分支:git merge 新建分支名
6、建立远程分支:git push --set-upstream origin 分支名
7、获取远程分支如test内容到本地分支test上:git pull origin test
8、提交本地分支test内容到远程分支test上:git push origin test
9、删除远程分支:git push origin --delete <branchName>(或者,git push --delete origin <branchName>)
10、查看所有分支情况(本地和远程):git branch -a
11、创建并切换分支:git checkout -b 分支名
12、配置用户名和邮箱:
git config --global user.name 用户名
git config --global user.email 邮箱
13、关联到远程仓库:
git remote add origin 远程仓库地址
ps:假如服务器的某个分支删除了,但是本地通过git branch -a还是可以看得到,可通过以下命令更新分支的情况。git fetch origin --prune
Git分支管理及常见操作的更多相关文章
- Git工程开发实践(四)——Git分支管理策略
A successful Git branching model https://nvie.com/posts/a-successful-git-branching-model/ Git工程开发实践( ...
- Git 分支管理策略汇总
原文链接: Git 分支管理策略 最近,团队新入职了一些小伙伴,在开发过程中,他们问我 Git 分支是如何管理的,以及应该怎么提交代码? 我大概说了一些规则,但仔细想来,好像也并没有形成一个清晰规范的 ...
- GIT分支管理模型
GIT分支管理模型 link: git-branching-model 主分支(Main branches) 项目两个常驻分支: master 主干分支(锁定),仅用于发布新版本,平时不能在上面干活, ...
- git 分支管理——多人协作
git 分支管理--多人协作 一般一个项目有一个master主分支,还有一个develop开发分支.主要是在develop分支上协作开发,然后merge合并到master主分支上. 当从远程仓库克隆时 ...
- git学习------>Git 分支管理最佳实践
ps:本文转载于 : https://www.ibm.com/developerworks/cn/java/j-lo-git-mange/index.html Git 是目前最流行的源代码管理工具.大 ...
- git分支管理与冲突解决(转载)
Git 分支管理和冲突解决 原文:http://www.cnblogs.com/mengdd/p/3585038.html 创建分支 git branch 没有参数,显示本地版本库中所有的本地分支名称 ...
- Git-Runoob:Git 分支管理
ylbtech-Git-Runoob:Git 分支管理 1.返回顶部 1. Git 分支管理 几乎每一种版本控制系统都以某种形式支持分支.使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同 ...
- git分支管理与tag的学习笔记
git分支管理学习笔记:创建dev分支:git branch dev查看分支:git branch切换分支:git checkout dev创建并切换分支:git checkout dev -b zh ...
- 在Visual Studio 中使用git——分支管理-下(九)
在Visual Studio 中使用git--什么是Git(一) 在Visual Studio 中使用git--给Visual Studio安装 git插件(二) 在Visual Studio 中使用 ...
随机推荐
- Git详解之九:Git内部原理
Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各章一直到这,你都将在本章见识 Git 的内部工作原理和实现方式.我个人发现学习这些内容对于理解 Git 的用处和强大是非常重要的, ...
- S2 深入.NET和C#编程 三:使用集合组织相关数据
三:使用集合组织相关数据 集合概念: ArrayList:非常类似于数组,也有人称他为数组的列表.ArrayList可以动态维护,数组的容量是固定的 和数组类似,ArrayList中存储的是数据成为元 ...
- python重试装饰器的简单实现
简单实现了一个在函数执行出现异常时自动重试的装饰器,支持控制最多重试次数,每次重试间隔,每次重试间隔时间递增. 最新的代码可以访问从github上获取 https://github.com/black ...
- iOS pods-xxxx-frameworks.sh:permission denied问题
找到Build Phases, 点开Embed Pods Frameworks 是不是看到了"${SRCROOT}/Pods/Target Support Files/Pods/Pods-f ...
- Web程序员必备的CSS工具
对于web开发来说,CSS是最有效的美化页面.设置页面布局的技术.但问题是,CSS是一种标记性语言,语法结构非常的松散.不严谨.WEB程序员会经常发现自己的或别人的CSS文件里有大量的冗余代码或错误或 ...
- iOS开发的另类神器:libimobiledevice开源包【类似android adb 方便获取iOS设备信息】
简介 libimobiledevice又称libiphone,是一个开源包,可以让Linux支持连接iPhone/iPod Touch等iOS设备.由于苹果官方并不支持Linux系统,但是Linux上 ...
- 微信小程序节点查询方法:wx.createSelectorQuery()的使用场景与注意事项
小程序由于内置于微信,这使得它有了得天独厚的宣传和使用优势,本着学习的心态,我在官网上看了一遍开发文档,大致得出小程序框架的设计模式与使用注意事项(重点来了,其实开发文档某些方面叙述的并不仔细,甚至存 ...
- 【转载】MySQL · 性能优化· InnoDB buffer pool flush策略漫谈
背景 我们知道InnoDB使用buffer pool来缓存从磁盘读取到内存的数据页.buffer pool通常由数个内存块加上一组控制结构体对象组成.内存块的个数取决于buffer pool inst ...
- 【C#】发票助手二维码生成
之前一起吃饭听说了发票助手这个东西,可以生成发票抬头的二维码,扫码就可以开票了. 官方也有个小程序的 [税务发票助手],微信中搜这个名字就可以了. 我准备在自己的小程序中也尝试一下,本来觉得只要拼接一 ...
- IdentityServer Topics(2)- 定义资源
您通常在系统设计中的第一件事就是您要保护的资源. 这可能是您的用户的身份信息,如个人资料数据或电子邮件地址,或访问API. 您可以使用C#对象模型定义资源(硬编码),或从数据存储中加载它们. IRes ...