一. 简介
git是一种分布式版本控制工具
-
何为分布式版本控制:
所有版本信息仓库全部同步到本地每个用户,可以直接在本地查看历史版本,提交版本,只需要联网后push到相应服务器或者用户那。
优点:不会因为服务器损坏和网络问题导致不能工作
缺点:所有人都有全部代码,安全性不足
-
git和SVN主要区别SVN:集中式,代码放中央服务器;工作时要首先从服务器获取最新代码,完成后推送到中央服务器;必须联网才能工作
Git:分布式,没有中央服务器,每人电脑有完整版本库;工作前只需要推送或接收其他人的修改;不需要联网
二. 安装与介绍
安装完成后会生成三个快捷方式:
- Git Bash:类似Linux命令行(一般用这个)
- Git CMD:类Windows的CMD命令行
- Git GUI:使用GUI界面,但是没啥用
配置
git的配置都是以文件形式保存的,具体查看和位置如下
用户配置文件都保存在 %UserProFile%\.gitconfig
查看所有配置:git config -l
查看系统配置:git config --system --list
查看当前用户配置:git config --global --list
- 首先进行配置用户名和邮箱(必须)
git config --global user.name "用户名"
git config --global user.email "邮箱"
三、基本理论
工作区域: 工作区(Workspace)、暂存目录(Stage/Index)、本地仓库(Repository)、远程仓库(Remote)
- Workspace:工作区,就是你平时存放项目代码的地方(相当于一个房间)
- Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息(相当于把房间里准备搬去仓库的家具进行标记,当然不般的家具就不进行标记)
- Repository:仓库区或本地仓库,就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本(将标记的家具搬到家里仓库,这个仓库还能记录过去般了什么进来)
- Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换(将家里仓库所有东西搬到超市仓库)
四、创建本地仓库
所谓创建本地仓库,可以看作在项目根目录中生成.git
目录
有两种方式:1,创建新的仓库,2、克隆远程仓库
-
创建新的仓库,在项目文件夹根目录运行git初始化命令,会命令运行目录生成
.git
文件夹git init
-
克隆远程项目,在命令运行目录中生成存放此项目的文件夹,
.git
文件夹在其中git clone [url]
五、文件操作
-
文件四种状态(了解):
Untracked
: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add
状态变为Staged
.Unmodify
: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified
. 如果使用git rm
移出版本库, 则成为Untracked
文件Modified
: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add
可进入暂存staged
状态, 使用git checkout
则丢弃修改过, 返回到unmodify
状态, 这个git checkou
t即从库中取出文件, 覆盖当前修改 !Staged
: 暂存状态. 执行git commit
则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify
状态. 执行git reset HEAD filename
取消暂存, 文件状态为Modified
附:在IDEA中会通过文件颜色进行区分状态
-
查看文件状态
#查看指定文件状态 git status [filename] #查看所有文件状态 git status #添加文件到暂存区(.表示添加当权目录所有文件) git add [filename] #将暂存区文件提交到本地仓库 git commit -m "消息内容"
-
忽略文件
在项目目录建立
.gitignore
文件,在此文件中编写忽略规则:# 为注释 *.txt 忽略.txt结尾文件(*可换成其他通配符) !lib.txt lib.txr不忽略 /temp 只忽略项目根目录下的temp目录/文件,不包括子目录里的temp目录/文件夹 buikd/ 忽略所有名为buikd文件/目录 等...
六、配置SSH公钥
当需要提交代码到远程服务器时,最好配置SSH公钥
-
生成公钥:
# git bash运行,-t指定加密方式,生成文件在“%userProFile%\.ssh目录下” ssh-keygen -t rsa
-
上一步生成的密钥在
%userProFile%\.ssh
目录中,包括id_rsa
和id_rsa.pub
两个文件,需要使用后面的id_rsa.pub
公钥 -
登录Github或码云账户,复制
id_rsa.pub
的公钥,进行配置
七、创建远程仓库并提交
配置好SSH-key后进行操作
- 在远程仓库中新建仓库,并使用
git clone
把克隆到本地(主要就是要.git文件夹) - 将克隆到本地的仓库文件复制到项目根目录
- 使用
git add .
添加项目中所有文件 - 使用
git commit -m "消息内容"
提交到本地仓库 - 使用
git push
将本地仓库推到远程仓库
七、分支
分支就是多个人修改了项目,造成多个版本,每个版本可看作一个分支。
当分支进行合并时,若修改了同一个文件,就要手动选择保留谁的修改。
分支一些命名:
- master:主分支。最稳定版本
- dev:开发用分支。
- v1.0:项目某个版本
指令:
# 列出所有本地分支
git branch -a
# 列出所有远程分支
git branch -r
# 新建一个分支,但依然停留在当前分支
git branch [branch-name]
# 切换到该分支
git checkout [branch]
# 或
git switch [branch]
# 合并指定分支到当前分支(参数指定多种合并方式)
$ git merge [branch]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
8、补充
码云提供的git大全:git大全