分布式版本控制系统
Git 是分布式版本控制系统。集中式版本控制系统需要一台“中央服务器”作为版本库,对版本进行控制。二分布式版本控制系统则不需要“中央服务器”,每台电脑上都是一个完整的版本仓库,各自工作,对版本进行管理,互不干扰,对于本地仓库的所有操作都不需要联网进行。至于人多协作,电脑之间可以互相推送各自的修改,合并记录,当然这样并不方便。分布式版本控制系统也可以有“中央服务器”,用来交换大家的修改,但是没有它,也一样能够工作、交换修改。
创建本地版本库
创建一个空目录,初始化仓库,此时仓库中创建一个分支 master:
这时候在目录中就会有一个 .git 的隐藏文件,是用来跟踪管理版本库的,.git 相当于 Git 的版本库。
工作区&暂存区&本地仓库
工作区就是电脑能看到的目录。
版本库内包含了一个暂存区(stage), 各个分支,还有一个叫 HEAD 的指针,HEAD 指针始终指向当前分支最新的 commit。
把文件放到版本库需要分两步执行:
① git add 将文件添加到暂存区
② git commit -m 'commit text' 编辑提交信息,并将暂存区的文件提交到当前分支上
可以使用 git status 查看状态,当提交后,并且没有对工作区进行修改,如下图,表示工作区是“干净”的。
版本库中存储着每一次的提交记录,可以通过 git log 查看
远程仓库
当多人协作时,有个“中央服务器”进行版本控制会方便很多。像 github、coding 远程仓库就相当于一个“中央服务器”。
但记录很多时,可以通过添加参数,使输出信息扁平化
关联:
当本地和 github 上各自有一个仓库,又想将它们同步时,可以使用
将它们关联。
yourname 为你的 github 账号名,yourepo 为 github 上的仓库名。Git 的远程仓库名默认叫 origin,也可以改成其它的。
获取:
多人协作,每次修改代码前最好使用
获取远程仓库最新的版本,减少冲突的发生。
推送:
接着就可以将本地代码推送到远程仓库啦。
将当前分支 master 推送到远程仓库 origin 上。
第一次推送的时候需要加上 -u 参数,这样 Git 除了将本地 master 推送到远程 master 外,还会将两个分支关联起来。关联之后就可以使用
推送啦。
克隆远程仓库
如果本地没有仓库,想将 github 上的仓库克隆到本地
分支
当你需要开发一项功能,但没完成之前提交代码会影响其他人工作,就不能提交代码。但等功能完成后再提交,又不能记录进度。这时候,就可以创建一个分支,既可以记录进度,又不影响其他人工作啦。
创建分支
git branch dev 创建一个名为 dev 的分支,此时版本库中就存着 master 和 dev 两个分支
git checkout dev 切换到 dev 分支,
git checkout -b dev 可以将以上两步可以合成一步执行。
在 dev 分支上修改提交后,分支变为
在 dev 上的开发完成之后,需要提交到 master 上,可以将 dev 合并到 master。
首先要切换到 master 主分支上,再合并
git merge 命令用于合并指定分支到当前分支。
当不再需要 dev 分支时,可以将它删除
还能通过 git 查看有哪些分支
* 指向当前分支。
冲突
有时候合并分支或者推送到远程仓库的时候,会发生冲突
这时可以使用 git status 查看冲突的文件
打开文件可以看到被标记出来的冲突,冲突需要手动解决之后才能合并。
最后
git 太强大,功能太齐全啦,今天就这样吧。
参考