Git学习

Git和SVN的区别

SVN是集中式版本控制,版本库是集中放在中央服务器。在工作的时候,用的都是自己的电脑,所以首先要先从中央服务器得到最新版本,然后工作,工作完后还需要将完成的工作推送到中央服务器,所以必须要联网。

Git是分布式控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库。所以不需要联网。协同的办法就是:自己的电脑改了A,其他人也改了A,这时你们两个只需把各自的修改推送给对方,就可以看到对方的修改。

Git相关的配置文件
#查看系统config
git config --system --list

#查看用户(global)配置
git config --global --list

#在配置中添加全局变量
git config --global user.name(可以随便取) "值"

环境配置的目的是为了全局使用,不然只能当前路径使用。

Git基本理论

Git本地有三个工作区域,如果加上远程git仓库(Remote Directory),那就四个:

1.工作目录(workingdirectory):平时存放代码的地方

2.暂存区(Stage/Index):临时存放改动的地方,其实是一个文件,.git文件下的index文件

3.资源库(Git Directory/Repository):仓库区:就是存放安全数据的地方,这里面有提交的所有版本的数据。其中HEAD指向最新放入仓库的版本。.git下的object文件

4.远程仓库(Remote Directory):远程仓库,托管代码的服务器,如Github,Gitee。

Git学习_第1张图片

被Git托管的项目会有一个.git的隐藏文件夹

#查看当前工作区和暂存区的差异
git diff

#查看当前暂存区和仓库区的差异
git diff -staged

#查看当前工作区和仓库区的差异
git diff HEAD

创建本地项目的办法 

#创建本地仓库的办法有两个
#1.初始化init,创建.git文件夹
git init

#2.克隆一个项目以及他的整个代码历史(版本信息)
git clone [url]

文件的状态:

Untracked:未跟踪,此文件在文件夹中,但并没有加入git库,不参与版本控制。

Modify:文件已修改,仅仅是修改。可以git add进入暂存staged状态,也可以git checkout丢弃修改过,变成unmodify状态。

Staged:暂存状态,执行git commit将修改同步到库里。

Unmodify:文件已入库,未修改。

#提交暂存区的内容到
git commit -m [message]
SSH公钥

远程仓库设置本机绑定SSH公钥,实现免密码登录(远程仓库,我们平时工作在本地仓库,push时需要密码登录)

ssh-keygen [选项]

命令选项
-b:指定密钥长度;
-e:读取openssh的私钥或者公钥文件;
-C:添加注释;
-f:指定用来保存密钥的文件名;
-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
-l:显示公钥文件的指纹数据;
-N:提供一个新密语;
-P:提供(旧)密语;
-q:静默模式;
-t:指定要创建的密钥类型

#github生成密钥
ssh-ketgen -t rsa

密钥产生在.ssh目录下

Git学习_第2张图片

然后将pub文件中的全部粘贴到github的ssh中。

IDEA集成Git

在IDEA的VCS中

Git分支
#列出所有的本地分支
git branch

#列出所有的远程分支
git branch -r

#新建一个分支,但仍停留在当前分支
git branch [branch-name]

master主分支应该十分稳定,用来发布新版本,不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完成后,比如要发布或dev代码稳定后可以合并到主分支master上来。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          

你可能感兴趣的:(git)