手把手带你入门git操作
本文全为实战 建议观后实践 (上周写的哦)
大家假期安康,我是测试君。
下面我们来一起学习git操作,相信我这对你来说并不难。
一、Git原理
1、Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一)。
2、Git有什么特点? 简单来说就是:高端大气上档次!
3、GIt与SVN区别
SVN管理: 属于集中式版本控制系统,版本库是集中存放在中央服务器,必须联网才能工作,脱离局域网,采取互联网提交大文件会比较慢
Git管理: 属于分布式版本控制系统,根本没有“中央服务器”,安全性高,每个人的电脑上都是一个完整的版本库,即电脑硬盘上会有个版本这样,你工作的时候,就不需要联网了。即使中央服务器出了问题,从其他人那复制一个就好了
4、Git 工作流程 一般工作流程如下:
- 克隆 Git 资源作为工作目录。
- 在克隆的资源上添加或修改文件。
- 如果其他人修改了,你可以更新资源。
- 在提交前查看修改。
- 提交修改。
- 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
下图展示了 Git 的工作流程:
二、Git 配置
1、配置个人的用户名称和电子邮件地址 $ git config --global user.name "username" $ git config --global user.email yourmail
2、在客户端生成ssh key
- 安装客户端后在桌面任意空白处右击
- 打开Git Base Here然后输入下面命令
- 打开本地git bash,使用如下命令生成ssh公钥和私钥对
- ssh-keygen -t rsa -C 'xxx@xxx.com' 然后一路回车(-C 参数是你的邮箱地址)
- 然后打开~/.ssh/id_rsa.pub文件(~表示用户目录,比如我的windows就是C:\Users\Administrator),复制其中的内容
- 打开gitlab,找到Settings -->Profile -->SSH Keys--->Add SSH Key,并把上一步中复制的内容粘贴到Key所对应的文本框,在Title对应的文本框中给这个sshkey设置一个名字,点击Add key按钮
三、Git常用操作
1、创建一个版本库 Ps:只是一个空目录哦 $ mkdir mytest
2、通过git init命令把这个目录变成Git可以管理的仓库 $ git init Initialized empty Git repository in C:/Users/userAccount/Desktop/test/.git/ ps:目录下会自动生成.git,误删,毕竟全靠它做版本管理
第一步,用命令git add告诉Git,把文件添加到仓库: $ git add readme.txt 执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。
第二步,用命令git commit告诉Git,把文件提交到仓库: $ git commit -m "test add file" [master (root-commit) 5a92835] test add file 1 file changed, 1 insertion(+) create mode 100644 mytest/readme.txt
3、版本的操作内容操作查看 本地版本操作:(连续操作一个文件并提交好多次) git log日志查看命令 $ git log commit d9669171c9c5890fd282c40a7e7fe0c372074233 (HEAD -> master) Date: Thu Apr 4 14:52:23 2019 +0800 test third version commit 6b39a4a6ce09c472e7f9c09e50c79c78b2efee16 Date: Thu Apr 4 14:51:11 2019 +0800 test second version commit 9e42e41abf01d85e163b3d63c41bf5b099920d47 Date: Thu Apr 4 14:47:32 2019 +0800 test first version commit dca156cf9c72b17f5d1aaff88ebfbfc79d5b91e2 Date: Thu Apr 4 14:46:39 2019 +0800
test add file
:
比较直观的方式查看 $ git log --pretty=oneline
4、版本回退操作 比如返回上一个版本 $ git reset --hard HEAD^ HEAD is now at 6b39a4a test second version Git的版本是生成是十六进制生成的,我的上一版本是如截图:
再查看日志当前版本是否为6b39a4a
回滚到某个指定版本
$ git reset --hard dca156cf HEAD is now at dca156c test add file 再查看日志当前版本是否为dca156cf
优势:回滚很快呀
5、git status 查看状态 比如我对readme.txt内容做了修改,再输入git status查看状态
git checkout -- file可以丢弃工作区的修改,即撤销修改 $ git checkout -- readme.txt 再次输入git status 发现文件回滚到改动之前了
6、删除文件操作 先增加一个文件 $ git add delete.txt
再删除文件 $ rm delete.txt
查看文件状态 $ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: delete.txt Changes not staged for commit: (use "git add/rm <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) deleted: delete.txt
提交修改 $ git commit -m "remove test.txt" [master cc6aa8f] remove test.txt 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mytest/delete.txt
7、将本地仓库和远程仓库相关联 $ git remote add origin git@172.16.5.128:RefainZero/demo.git 把本地库的所有内容推送到远程库 $ git push -u origin master
从现在起,只要本地作了提交,就可以通过命令: $ git push origin master Everything up-to-date
8、从远程仓库获取代码 $ git clone git@172.16.5.128:RefainZero/demo.git Cloning into 'demo'... remote: Counting objects: 16, done. remote: Compressing objects: 100% (5/5), done. remote: Total 16 (delta 0), reused 0 (delta 0) Receiving objects: 100% (16/16), done.
9、解决冲突 1)、先制造一个冲突 情景,readme.txt中的,文本默认是test git status 修改本地的readme.txt中文本内容为“20191635” 在服务器也修改了readme.txt,修改文本内容为“就想冲突下”
2)、提交本地的代码到远程仓库 在服务器执行git pull(获取最新代码)
不负众望,果然发生代码冲突
3)、解决文件中冲突的的部分 打开冲突的文件
4)、把冲突标记删掉,把冲突解决正确 提交修改,并同步到远程仓库 $ git add readme.txt $ git commit -m '解决冲突的测试' [master 0feb18f] 解决冲突的测试
$ git push origin master Counting objects: 8, done. Delta compression using up to 8 threads. Compressing objects: 100% (4/4), done. Writing objects: 100% (8/8), 740 bytes | 740.00 KiB/s, done. Total 8 (delta 0), reused 0 (delta 0) To 172.16.5.128:RefainZero/demo.git ca9bc5e..0feb18f master -> master
5)、再次从服务器上获取最新代码,验证是否冲突 $ git pull Already up to date.
四、附:Gitlab显示的提交内容
END
Android ADB命令大全 导入导出文件测试点 对不起,这是一篇负能量爆棚的文章
还有一件重要的事情要和大家说,我不是经常看公众号后台,所以有时候大家在后台发留言,时间一旦超过2天,我就没有回复权限了。所以,我要公布自己的微信号了,欢迎大家来埋伏我
*本文创作:糖小幽
不需要打赏,在看就好!