git是版本控制工具,程序员必备技能。以前在学校的时候自己跟着教程学习过,现在在工作中已经用了一段时间了。在此进行总结和复习。
git的初始化操作
我通过一系列的命令对操作进行复习和解释。
安装git后,需要指定用户名和邮箱
1
2$ git config --global user.name "s********a"
$ git config --global user.email "3**********.com"git init会初始化一个本次仓库
1
2
3mkdir git_test
cd git_test
git init
git 提交文件
- git add 添加文件
git commit 将文件提交至版本库
1
2
3touch readme.txt
git add readme.txt
git commit -m "first commit"git log 查看多次提交的版本文件
1
2
3
4
5
6sssdembp:git_test sss$ git log
commit 81e27beccb5576f2e02f90ad2c373d8a7341268e (HEAD -> master)
Author: stshihia <379187038@qq.com>
Date: Sun Oct 21 08:51:41 2018 +0800
first commit
回退版本
在Git中,用HEAD表示当前版本,上一个版本就是HEAD^
一般使用git log 查看版本的 commit id
通过1
git reset --hard 81e27beccb5576f2e02f90ad2c373d8a7341268e
来回退到某个版本
暂存区和工作区
关于暂存区和工作区, 工作区就是我们能看见的目录。
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
有了暂存区,那么平时我们可以add多次,将多次改动累计到一次进行commit操作。因为git是管理修改,而不是管理文件的。
如果要删除某个文件1
2
3rm readme.txt
git rm readme.txt
git commit -m "remove readme.txt"
远程库的名字就是origin,这是Git默认的叫法
HEAD严格来说不是指向提交,而是指向master
分支
分支是版本库之下的一个概念,一个版本库可以有多个分支,
修改的提交时基于当前的分支的,切换分支后,会看不见之前分支的修改1
2
3
4
5git branch dev 创建分支
git branch 查看分支
git checkout dev 切换分支
git merge dev 合并分支到当前分支
git branch -d dev
合并分支会需要解决冲突,解决冲突就是编辑冲突的文件重新git add并commit提交。能够看出,基于文件的工作流是最为方便的,不会存在冲突,也不会在协作中出现相互覆盖。
分支管理策略
在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
这种策略还是不好,如果不基于文件进行管理,会需要解决大量的冲突,在团队协作中增加许多工作量。
在实际工作中,我们是通过git clone多个库文件,然后checkout 来实现不同分支的管理的。但是我们是测试团队,对代码的要求要低很多。
推送是基于分支的1
2
3git remote -v 查看远端库地址
git pull 拉取远端的仓库
git push origin master 推送本地至master分支
git clone 只会看见master分支,需要看见远端其他分支则需要本地创建, git push 也一样1
2$ git checkout -b dev origin/dev
$ git push origin dev
标签tag
标签就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动)
切换到想打标签的分支,找到想打标签的commit1
2git tag v1.0 <commit-id>
git tag 列出所有标签
有点麻烦的是标签不是按照时间排序的
搭建本地git 服务器
通过树莓派,可以方便地进行实验
安装git1
sudo apt-get install git-core
创建git用户1
2sudo adduser git
password:g***i
此时在树莓派的pi用户路径下面新建一个git repo即可进行clone操作1
2
3
4cd /home/pi
mkdir git_test
cd git_test
git init
在本地进行clone1
git clone git@192.168.1.6:/home/git/git_test
但是每次进行git clone需要输入密码
总结
关于git这样的工具,重点在于使用。但是使用过一段时间之后的总结,才会让自己有所提升。
我自己工作中的一些感受:
- 解决冲突很麻烦,协作中,最好已基于文件的方式进行合作
- 稳定的master分支一定要保证
- 由于提交会很多,开发重要节点打tag很重要
- 常用的命令会总结,不常用的命令会查询
参考
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000