GIT分支使用
git branch的创建
创建分支
命令:git branch (分支名)
git push origin (创建的分支名)
首先创建本地分支:git branch 分支名,例如:git branch VS2012。注:VS2012是分支名称,可以随便定义。
然后切换本地分支:git checkout 分支名,例如从master切换到分支:VS2012。
上传到远程分支就是本地分支push到服务器上。git push origin VS2012,这样就将一个本地分支VS2012提交到了服务器上。如果在你提交你这个分支之前还有你的修改信息需要提交,则必须在push之前提交修改。最后提交分支,你的分支信息就是在主分支master分支上修改内容之后打出来的新分支。
创建分支演示
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittesttwo/gittest (master)
$ git branch VS2012
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittesttwo/gittest (master)
$ git push origin VS2012
git@192.168.0.216's password:
Total 0 (delta 0), reused 0 (delta 0)
To git@192.168.0.216:/home/data/git/gittest.git
* [new branch] VS2012 -> VS2012
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittesttwo/gittest (master)
$ git branch
VS2012
* master
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittesttwo/gittest (master)
$
git branch的查看与切换
查询本地分支
命令:git branch
这里可以看到有VS2012跟master两个分支,一般项目没有修改分支名的情况下,master默认为主分支。分支前面的*表示你目前所在的分支。你所操作的修改提交将会在这个分支下进行。
查询本地分支演示
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittesttwo/gittest (master)
$ git branch
VS2012
* master
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittesttwo/gittest (master)
$
切换本地分支
命令:git checkout (分支名)
这里我们将分支切换到VS2012,可以看到现在*标识到了VS2012前面。
切换本地分支演示
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittesttwo/gittest (master)
$ git checkout VS2012
Switched to branch 'VS2012'
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittesttwo/gittest (VS2012)
$ git branch
* VS2012
master
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittesttwo/gittest (VS2012)
$
查询远程服务器分支
命令:git branch -a
这里我们可以看到本地分支只有一个主分支,而远程上有两个分支master和VS2012,而且远程分支我们使用的是主分支。如果我们push到远程的代码也会提交到远程分支master上。如果在你知道有远程分支,而用git branch -a 并没有看到你需要的远程分支,你要确定你自己的仓库是不是最新的,需要先pull一下,然后查看远程分支。
查询远程服务器分支演示
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittestone/gittest (master)
$ git branch
* master
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittestone/gittest (master)
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/VS2012
remotes/origin/master
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittestone/gittest (master)
$
Git branch clone
直接克隆某个分支到本地
命令:git clone -b (分支名) [远程库地址]
这里我们clone分支时直接在git clone 后面加 -b 分支名,就会把特定的这个分支clone到本地仓库,不会有其他分支内容(包括主分支);如果直接clone 不加分支名 git clone [remote repository address],这样就会把默认的主分支clone到本地仓库。
直接克隆某个分支到本地演示
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作
$ git clone -b VS2012 git@192.168.0.216:/home/data/git/gittest.git
Cloning into 'gittest'...
git@192.168.0.216's password:
remote: Counting objects: 26, done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 26 (delta 2), reused 0 (delta 0)
Receiving objects: 100% (26/26), done.
Resolving deltas: 100% (2/2), done.
Checking connectivity... done.
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作
$ cd gittest
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittest (VS2012)
$ git branch
* VS2012
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittest (VS2012)
$
切换远程分支并clone到本地
命令:git checkout -t (远程分支名)
将远程分支代码复制一份到本地并在本地建立一个一样的分支名,同时切换到本地的这个分支。远程分支名一定要写全路径如:remotes/origin/master
切换远程分支并clone到本地演示
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittest (VS2012)
$ git branch
* VS2012
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittest (VS2012)
$ git branch -a
* VS2012
remotes/origin/HEAD -> origin/master
remotes/origin/VS2012
remotes/origin/master
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittest (VS2012)
$ git checkout -t remotes/origin/master
Branch master set up to track remote branch master from origin.
Switched to a new branch 'master'
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittest (master)
$ git branch
VS2012
* master
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittest (master)
$
删除分支
删除本地分支命令:git branch -d (分支名)
删除远程分支命令:git push origin :(分支名)冒号前面的空格不能少,原理是把一个空分支push到server上,相当于删除该分支。
删除分支演示
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittest (master)
$ git branch
VS2012
* master
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittest (master)
$ git branch -d VS2012
Deleted branch VS2012 (was c1285f3).
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittest (master)
$ git branch
* master
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittest (master)
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/VS2012
remotes/origin/master
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittest (master)
$ git push origin :VS2012
git@192.168.0.216's password:
To git@192.168.0.216:/home/data/git/gittest.git
- [deleted] VS2012
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittest (master)
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
administrator@3S5W0LWUWE7GOX7 /E/codepeter/我的工作/gittest (master)
$