关于本地版本库的操做,请见:
Git入门——本地版本库操做
前面提到,Git相对于传统的SVN有着很大的优点,其中之一就在于集中式系统中,版本库只能存在于中央服务器上;而在Git中,版本库能够克隆多个,甚至在同一台主机中也能够克隆多个版本库。固然,平常开发过程当中,仍是会有一台主机充当中央服务器的角色,做为整个项目的总体基准。咱们能够本身搭建一个git服务器,也能够直接使用github所提供的免费仓库托管服务。 在本文中咱们使用GitHub。在使用以前,须要注册GitHub帐号,而且在本地与GitHub上设置SSH,具体操做请参照:
SSH设置
1、远程仓库的添加与克隆
一、关联本地仓库
首先在GitHub网站上建立仓库
建立完成后,咱们能够选择将这个库克隆至本地,也能够将本地已经建立好的库关联至远程库,这里咱们关联。
a、使用git remote add origin 仓库地址命令将远程库与本地库关联
仓库地址有两种形式,https形式: https://github.com/zhuwq585/
DataStructure-JavaScript.git
ssr形式: git@github.com:zhuwq585/
DataStructure-JavaScript.git
使用https形式则每次须要输入用户名密码且速度慢,使用ssr形式就直接调用先前配置的ssr密钥进行认证,无需输入用户名密码。
b、使用git push -u origin master命令将本地仓库推送至远程库
这时就能够在github上看到推送的文件了
二、从远程仓库克隆
仍是老办法,先在GitHub上创建仓库。使用git clone 远程库地址命令克隆仓库。
以后添加文件,提交并使用git push命令推送至远程仓库便可。
2、分支管理
一、 建立分支
使用 git branch 分支名 建立分支
使用 git branch 查看分支 标注*的是当前分支
使用 git checkout 分支名 切换分支
使用 git branch -d 分支名 删除分支
·可使用git checkout -b 分支名 建立分支并直接切换至该分支
·当前分支没法被删除
二、合并分支
使用git merge 分支名 命令将所选分支合并到当前分支上
这里建立了test1分支,并在此分支上添加并提交了test.txt文件。此时切换至master分支,咱们会发现刚才添加的test.txt文件不见了。使用merge命令合并分支以后,刚才添加的文件又回来了。
直接使用merge命令会默认用Fast forward模式进行合并,等因而将另外一分支的下一个版本直接指向当前的提交。这样的话,一旦删除分支以后,该分支信息便会丢失。 如果在合并分支的时候加上--no-ff参数,则会强制禁用Fast forward模式,合并时会生成一个新的提交,将两个分支的下一版本指向该提交。这样便不会丢失分支信息。
三、解决冲突
在合并分支的时候,若两个分支都对同一个文件的同一部分进行了修改提交,则会发生冲突。这个时候就须要用户手动解决冲突,再行合并。这里咱们添加一个test.txt文件,创建两个分支,在这两个分支上同时修改该文件并尝试提交合并:
这个时候git会提示咱们发生了冲突,没法合并分支,冲突发生在test.txt中。status命令能够看到更多详情。这个时候,文件系统中的test.txt文件也已经标出了冲突位置。以下图: git使用<<<<<<< ======= >>>>>>>进行冲突位置提示
其中<<<<<<<与=======之间的部分是当前分支的修改,=======与>>>>>>>之间是其它分支的提交。
这个时候,咱们把冲突位置修改成正确的文本,再进行合并:
使用log命令能够看到分支合并的状况。使用
git log --graph命令能够看到分支合并图:
四、工做区暂存
有时候,咱们在进行手头工做的时候,会忽然转向其它紧急工做,好比Bug修复等等,这个时候由于手头工做还没有完成,不能进行提交。而Git中是必须提交后才能切换分支进行工做的。这个时候工做区暂存功能就很是有用。咱们可使用git stash命令储存工做区状态。 待其它工做完成后,再使用git stash apply恢复工做区,使用git stach drop删除工做区暂存文件。使用git stach list能够查看储存的工做现场。能够暂存多个工做区状态,这个时候就须要在apply等命令后加上list命令中查询到的暂存文件名。
恢复工做区与删除暂存文件能够用一条命令git stach pop直接完成。
3、分支与远程库
可使用git remote命令查看远程库信息
一、将分支推送至远程库
使用git push origin 分支名将本地分支上的全部提交推送到远程库。
二、从远程库抓取分支
建立远程分支的本地分支,使用git checkout -b 分支名 origin/分支名命令,一样的,这条命名能够分红branch和checkout两步命令。有时须要将本地分支与远程分支创建连接,这时使用git branch --set-upstream 分支名 origin/分支名命令。
当连接创建完毕后,有时须要将远程分支的最新提交抓取到本地,这时使用git pull命令,将远程分支提交抓取至本地并尝试合并。
本篇提到的命令:
命令 |
说明 |
git remote add origin 仓库地址 |
将远程库与本地当前库关联 |
git push -u origin master |
将本地仓库推送至远程仓库 |
git clone 远程库地址 |
将远程仓库克隆至本地 |
git branch 分支名 |
建立分支 |
git branch |
查看分支列表 |
git checkout 分支名 |
切换分支 |
git checkout -d 分支名 |
删除分支 |
git checkout -b 分支名 |
建立并切换至分支 |
git merge 分支名 |
将分支合并至当前分支 |
git log --graph |
查看分支合并图 |
git stash |
暂存工做区 |
git stash apply |
恢复工做区 |
git stach drop |
删除工做区状态暂存文件 |
git stach list |
查看工做区状态暂存文件列表 |
git stach pop |
恢复工做区状态并删除暂存文件 |
git remote |
查看远程库信息 (-v 查看详细信息) |
git push origin 分支名 |
将本地分支提交至远程库 |
git checkout -b 分支名 origin/分支名 |
建立远程库分支的本地分支 |
git branch --set-upstream 分支名 origin/分支名 |
将本地分支与远程库分支创建连接 |
git pull |
将远程分支抓至本地并试图合并 |