因为之前任职的公司所使用的版本管理工具都是SVN,所以对Git了解不是很多。但是因为女朋友公司开始使用Git,她之前也没用过,然后来问我,我知道的也不是很多,显得有点菜,研究了一下午,写篇笔记,记录一下。
一.关于Git
这个直接点说就是一个版本控制系统,在这个角度上说,是和SVN一样的。但是和SVN不同的是,Git是一个分布式的版本控制系统。SVN是有一个远程库,开发人员从远程库把代码down下来,然后每次修改后提交到远程库,是一种中心化的方式;但Git不同,使用Git的话,参与进来的每台电脑都相当于一个版本库,这里有个最大的好处以为着,你的版本控制是在本地的,也就是说你在进行版本控制的时候不是需要联网的。
二.准备工作
首先你要在电脑安装Git,因为我用的是Mac,所以这部分只介绍Mac的安装。这里就不具体讲解git的安装了,如果需要自行百度。
三.常用命令
这里按SVN的操作习惯来解释Git的使用。
我们都知道,如果使用SVN的话,常用的操作是,首先是从远程库chect out一个working copy到本地,修改之后要提交到远程库的话要update远程库的改变,如果有冲突解决冲突,然后commit到远程库。下面按照这个思路来介绍Git。
1.创建远程库
首先你得有一个远程库。
这里就用github作为远程库来演示,布置在自己公司服务器的同理。
5371535784802_.pic_hd.jpg
在github上创建一个新库,做测试用;需要注意的是,创建的时候需要Initialize this repository with a README勾选上,即
屏幕快照 2018-09-01 下午3.00.04.png
至此,已经创建了一个远程库。
屏幕快照 2018-09-01 下午3.01.48.png
2.clone到本地
这里是svn与git不同的地方。首先创建本地文件夹,并在在目录下终端输入git init,这里多说一下,先讲解一下用终端怎么控制git,后边会讲解怎么利用可视化工具进行git版本控制,这里举的例子是SourceTree。
/Users/caoyu/Desktop/git测试
192:git测试 caoyu$ git init
Initialized empty Git repository in /Users/caoyu/Desktop/git测试/.git/
这样就在本地初始化了一个git仓库。在对应文件夹下会出现一个.git的文件夹。
然后clone到本地,指令是 git clone + 地址
192:git测试 caoyu$ git clone https://github.com/PodCao/gitTest.git
Cloning into 'gitTest'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
现在已经把远程库clone到本地了。
屏幕快照 2018-09-01 下午4.16.46.png
3.修改并提交与更新
现在在已经建好的git本地仓库中添加一个test.txt测试文件,添加到文件夹之后,终端输入指令,
192:gitTest caoyu$ git add test.txt
然后commit,commit指令是git commit -m "说明"
192:gitTest caoyu$ git commit -m "测试"
[master 386c90a] 测试
Committer: PodCao <caoyu@192.168.2.104>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:
git config --global user.name "Your Name"
git config --global user.email you@example.com
After doing this, you may fix the identity used for this commit with:
git commit --amend --reset-author
1 file changed, 1 insertion(+)
create mode 100644 test.txt
但这里要注意下,git的commit和svn的commit不同:svn的commit是会把本地修改直接推到远程库;但是git只是把修改推到本地库,提交到远程库还需要push指令。
192:gitTest caoyu$ git push https://github.com/PodCao/gitTest.git
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 287 bytes | 143.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
这样在远程库,我们就能看见在远程库已经收到提交。
屏幕快照 2018-09-01 下午4.35.40.png
接下来我们在本地再建一个本地库,模拟多人开发的情况。然后重复之前clone步骤。再把这个本地库做一次修改提交到远程库。
这里和svn有点不同的是,svn指令是update,而git是pull。然后在原来库下执行指令
192:git测试 caoyu$ git pull https://github.com/PodCao/gitTest.git
remote: Counting objects: 9, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 9 (delta 0), reused 6 (delta 0), pack-reused 0
Unpacking objects: 100% (9/9), done.
From https://github.com/PodCao/gitTest
* branch HEAD -> FETCH_HEAD
至此已更新。
4.冲突
这里和svn处理的方式基本一致,也是更新到本地发现冲突,然后解决冲突,再次提交就好了,这里就不做细节解释了。
网友评论