Git
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
Git安装
直接搜Git,下载安装包,无脑安装就ok。
一、Git前置知识
初学我们先使用Git Bash,使用Bash实际上就是和使用Linux差不多的,下面有记录一些常用的命令
cd xxx
# 改变目录
cd ..
# 返回上一级
pwd
# 显示当前位置
ls(ll)
# 都是列出当前目录的所有文件,ll比ls更详细
touch xxx.xx
# 创建一个xxx.xx文件
rm xxx.xx
# 删除xxx.xx文件
rm -r xxx
# 删除一个名为 xxx 的文件夹
mv xxx.xx **
# 移动文件,将xxx.xx文件移动到**文件夹内
reset
# 重新初始化终端
clear
# 清屏
history
# 查看命令历史
help
# 帮助
exit
# 退出
GIt配置
git config -l
# 此命令可查看git配置
git config --global --list
# 此命令可查看用户配置,还没配置就查看不了
git config --system --list
# 此命令查看系统配置
系统配置文件在安装目录下的 etc/gitConfig。
用户配置文件在你的用户文件夹下。
没有配置就不会有用户的gitConfig文件,输入命令创建
git config --global --edit
也可以输入命令配置或者手动配置:
git config --global user.name "xxxx""
git config --global user.email "xxx@xxx.xx"
二、Git基本理论
git工作流程
- 我们在WorkSpace中添加,删除,修改文件
- 将需要进行版本管理的文件放入暂存区
- 将暂存区的文件提交到git仓库
因此,git管理的文件有三种状态:已修改(modified)、已暂存(staged)、已提交(committed)。
三、Git使用
3.1 文件的四种状态
- untracked 未跟踪,此文件在文件夹中,但没有加入git库,不参与版本控制,要通过
git add
将其变为staged。 - unmodify 文件已入库,未修改,文件有两种去处,一是被修改,变为modified状态,二是使用
git rm
将其移出版本库,成为untracked。 - modified 文件已修改,可通过
git add
进入暂存staged,使用git checkout
则丢弃修改,返回到unmodify状态,git checkout
即从库中取出文件,覆盖当前修改 - staged 暂存状态,执行
git commit
将修改同步到库,库和本地文件又变为一致,文件为Unmodify状态。执行git reset HEAD filename
取消暂存,文件变为Modified。
可通过命令查看文件状态:
git status
3.2 使用Git
-
初始化
在要创建的git项目的目录下空白处右键选择git bash,或者使用命令创建目录并cd进去,然后输入命令git init
git init
初始化完毕后该文件夹会多出一个.git的隐藏目录
-
偷代码
以gitee为例,到远程仓库后,会有一个克隆/下载的url地址,我们只需要输入
git clone [url] # [url] 输入克隆/下载的url
就会将远程仓库的代码下载到本地仓库
-
添加到暂存区
git add . # 添加当前目录下所有文件到暂存区
-
提交
git commit -m 消息内容
将staged状态的文件提交
-
忽略文件
有时候并不是所有的文件都要版本控制,比如临时文件,数据库文件,设计文件等。
主目录下创建“.gitignore”文件来配置将忽略哪些文件,规则:
- 可以使用Linux通配符,‘*’表示任意多个字符,‘?’表示一个字符,‘[]’表示可选字符范围,“{}”表示可选字符串……
- !+文件名,表示外规则,将不被忽略
- / + 目录名,表示只忽略根目录下的该目录
- 目录名 + /, 表示忽略该目录下所有文件
示例:
*.txt # 忽略所有 .txt结尾的文件 !lib.txt # 忽略除了lib目录下的txt文件 /temp # 忽略根目录下的temp文件,但不包括其他目录的temp build/ # 忽略build目录下的所有文件 doc/*.txt # 忽略doc目录下的所有.txt文件,但不包括子目录下的txt文件
狂神的配置:
*.class *.log *.lock # Package Files # *.jar *.war *.ear target/ # idea .idea/ *.iml/ *velocity.log* ### STS ### .apt_generated .factorypath .springBeans ### IntelliJ IDEA ### *.iml *.ipr *.iws .idea .classpath .project .settings/ bin/ *.log tem/ #rebel *rebel.xml*
3.3 Git结合工具使用
Gitee
先注册,注册就完事。
然后生成公钥:
到当前用户目录下找到.ssh文件夹
ssh-keygen
# 还可以用一些加密算法
ssh-keygen -t rsa
生成后将公钥复制粘贴到ssh设置里面,添加一个公钥。
然后建个仓库
克隆、修改、提交什么的随便玩玩。
IDEA集成Git
两种办法,一是直接在git本地工作区创建项目,二是将空仓库克隆后,将那些文件拷贝到项目中。
如果idea提示找不到git,打开设置
配置就完事。
配置完成后可根据文件颜色来判断文件状态:
绿色:已经加入控制暂未提交;
红色:未加入版本控制;
蓝色:加入,已提交,有改动;
白色:加入,已提交,无改动;
灰色:版本控制已忽略文件;
黄色:被git忽略,不跟踪。
可在右上角快捷完成git的一些操作:
四、Git分支
git branch
# 列出本地分支
git branch -r
# 列出远程分支
git branch xxx
# 新建一个分支,停留在原分支
git checkout -b xxx
# 新建一个分支,切换到该分支
git merge xxx
# 合并指定分支到当前分支
git branch -d xxx
# 删除分支
git push origin --delet xxx
git branch -dr xxx
# 删除远程分支
master主分支应该非常稳定,用来发布稳定版本,一般情况下不允许在上面工作, 工作一般情况下在新建的dev分支,工作完成后,若要发布,或者说dev分支代码稳定后可以合并到主分支master上来。
Git只需要最开始了解一些基础操作,日后再工作中使用git自然就熟练了。
五、补充
一套流程:
-
Gitee上建空仓库,空仓库会有提示。
-
按照空仓库提示,在本地初始化一个仓库,push一个README.md上去。
-
创建dev分支
git checkout -b dev
-
给远程仓库添加dev分支,并且将master分支设置为受保护或者只读(只读的话每次合并dev分支都要去设置一下)。
git push origin dev:dev # 推送一个分支到远程仓库
- 在本地dev分支完成开发,将本地dev分支推送到远程仓库的dev分支,远程dev分支稳定后,将其合并到远程master分支。
持续学习:
git merge xxx
# 将xxx分支合并到当前分支
git pull origin dev:master
# 将远程dev分支合并到本地master分支
git push -u origin master
# 推送到远程仓库的master分支 -u意为设置默认主机
git push <远程主机名> <本地分支名>:<远程分支名>
# 如果分支名相同,可以省略不写冒号
git pull <远程主机名> <远程分支名>:<本地分支名>
# 远程分支合并到本地分支