版本控制工具我用的并不多,之前比较流行的svn是,现在的git也是。由于最近的工作由我来发布gitlab上的版本,对于git的使用变得多了起来,很有必要写点东西记录下来。
首先,有这样一个问题,什么情况下我们需要版本控制?
无非就是:
- 项目复杂度太高,需要检测变更,便于自己的还原操作。
- 多人协作的情况。
ps:一般情况下第二个原因要多一些
一、开始
而git和svn的区别在于,git在本地也能有所谓的仓库。
那么,现在就开始说说步骤,首先下载安装git,然后打开命令行工具输入
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
PS:里面的name和邮箱,请填写自己的邮箱
如果想看自己git的设置,可以使用
$ git config --list
接下来,cd到需要版本控制的目录,运行
$ git init
这时候会在目录下面生成隐藏文件.git
image.png
二、版本控制
接着,往上面添加两个文件
image.png
然后运行
$ git add a.html
这样a.html文件添加到监测里面,如果输入
$ git add .
会添加所有文件到监测
与之相反的是,如果要删除添加到缓存的文件,需要使用
$ git rm --cached [filename]
这时我在两个文件的主体部分都写上xxx,然后提交
image.png
由于只是添加了a.html文件,b.txt文件的变动并不会被检测到。
一般情况下,会使用全部添加来进行,但是有些文件不想监测它的变化,比如通用的index.js经常要调试,每次处理冲突会很麻烦,这个时候就可以新建一个文件名为.gitignore,在里面配置相应的规则就可以忽略不该要的部分了。
我这里的文件就将bin目录下的文件全部忽视了
OK,我这里添加完两个文件后,再提交一次,然后就可以使用
$ git log
来看看做了哪些提交了
image.png回退在版本控制里面很重要,这样可以定位到自己之前做的一些错误的修改,在git里
$ git reset --hard HEAD^
可以返回上一个版本,而
$ git reset --hard [version]
传入你要的版本号,就可以回退到想要的版本了,而对这次回退返回的话,就可以使用
$ git reflog
查看你做的版本改动。
注意:
1.只有add过的change才能commit
2.在add前取消修改可以使用git checkout -- [file]
三、远程仓库
这个关系到多人协作,非常重要。这里我选用的测试平台为码云,原因嘛,速度快且能私有。
注册好账号之后,建一个项目。
通讯协议有http和ssh,为了避免每次都要输密码,这里使用ssh协议,首先就是添加公钥,具体看看官方文档http://git.mydoc.io/?t=154712
特别注意的是在使用图形化工具tortoiseGit的时候要生成符合该工具格式的私钥,然后才能正常的进行版本控制
第一次我们操作的时候,一般会使用,也就是下图的地址。
$ git clone [url]
image.png
另外一个方法就是将本地仓库(用git init过的)和云端关联起来
$ git remote add origin [url]
同时我们也可以使用
$ git remote -v
来查看远程仓库
image.png
使用
$ git push
来将本地的仓库推送至远程,当然这里是默认的推送,可以使用
git branch --set-upstream-to <branch-name> origin/<branch-name>
让本地的分支和远程的分支就建立起了联系
四、分支
版本控制另外一个很重要的点就是分支了,分支使多人协作成为了可能
image.png
这里,使用
$ git branch A
创建了A分支,我们可以使用
$ git checkout A
切换到A分支,修改commit
image.png
再切换到主分支
image.png
修改的地方消失了,这个时候我们也修改这个文件,并且提交这个文件,然后合并A分支,
$ git merge A
出现冲突
image.png
这里我选择保留两个修改,然后再提交
要删除分支,使用
$ git branch -d [name]
下面和之前的结合起来,比如把本地的a分支上传到远程的仓库的A分支,先切换到本地A分支,然后
$ git push origin A
这样就会在远程建立一个分支A,并且是本地A分支的内容。
如果要删除远程分支A,则可以使用
$ git push origin :A
仅仅多了一个冒号,语义就是大不相同。
网友评论