众所周知,使用Git分支,咱们能够从开发主线上分离开来,而后在不影响主线的同时继续工做。git
既然要使用Git分支,这里就涉及到Git分支的管理及常见操做,如列出分支,分支的建立,分支的删除,分支的合并等操做。github
之前看到这就头痛,老是搞不明白,今天研究了许久才搞懂,这里作个笔记。缓存
如,个人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文件。那么这里就涉及到两个操做了,即分支的建立与切换。具体操做以下: fetch
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!”
下面要将刚建立的文件写入到缓存区。操做以下: spa
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文件添加到仓库,操做以下: code
jiangfeng@jiangfeng MINGW64 /e/mygit/git/myProject (test) $ git commit -m "change log" 将缓存区内容添加到仓库 [test afc4b17] change log 1 file changed, 1 insertion(+) create mode 100644 test.txt
下面要进行分支合并,即将新建的分支test合并到主分支master上,这里首先要将分支test切换到主分支master,而后进行分支合并。操做以下:blog
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 | 1 + 1 file changed, 1 insertion(+) create mode 100644 test.txt
若是,咱们要将本地仓库里的内容提交到远程GitHub上,操做以下:
jiangfeng@jiangfeng MINGW64 /e/mygit/git/myProject (master) $ git push origin master 提交内容到远程GitHub上 Counting objects: 3, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 282 bytes | 0 bytes/s, done. Total 3 (delta 1), reused 0 (delta 0) remote: Resolving deltas: 100% (1/1), completed with 1 local object. To https://github.com/leiwuhen-67/project.git 68d8bfc..afc4b17 master -> master
若是不想将新建分支test与主分支master合并,而是想将新建分支上的文件上传到远程对应的分支上,那么操做以下。首先应该在远程GitHub上创建与本地对应的分支。如我本地新建的分支为test,那么我在远程GitHub上新建的分支也应该为test,操做为:
一、打开Git工具,进入到本地仓库,如个人是myProject,由于默认为主分支master,因此先要切换分支到test上,操做: git checkout test
二、在远程GitHub上新建分支test与本地对应,操做: git push --set-upstream origin test
三、如我如今在本地test分支上新建一个test.txt文件,文件内容为”hello world!” 操做为: echo "Hello world!" >test.txt
四、将新建文件添加到缓存区。操做为: git add .
五、将缓存区内容添加到本地仓库,操做为: git commit -m "测试分支"
六、将本地分支test的内容提交到远程GitHub上,操做为: git push origin test
七、删除远程分支: 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
总结:
一、查看分支:git branch
二、建立分支:git branch 分支名
三、删除分支:git branch -d 分支名
四、切换分支:git checkout 新建分支名
五、合并分支:git merge 新建分支名
六、创建远程分支:git push --set-upstream origin 分支名
七、获取远程分支如test内容到本地分支test上:git pull origin test
八、提交本地分支test内容到远程分支test上:git push origin test
九、删除远程分支:git push origin --delete <branchName>(或者,git push --delete origin <branchName>)
十、查看全部分支状况(本地和远程):git branch -a
十一、建立并切换分支:git checkout -b 分支名
十二、配置用户名和邮箱:
git config --global user.name 用户名
git config --global user.email 邮箱
ps:假如服务器的某个分支删除了,可是本地经过git branch -a仍是能够看获得,可经过如下命令更新分支的状况。git fetch origin --prune