Git快速入门
Git历史
(1991-2002)Linux ——> (2002-2005)BitKeeper ——> (两周研发)Git
Git是免费的、开源的、最先进的分布式版本控制系统
———————————————————
Git环境配置
Git最新版本2.25.2
安装:
官网下载慢可以找镜像
淘宝镜像下载:CNPM Binaries Mirror
无脑下一步安装
安装成功后在开始菜单会有Git三个程序(Git:Bash Unix和Linux命令行)(Git CMD:Windows风格命令行)(Git GUI:图形界面的Git);
任意文件夹下右键也可以看到对应的程序
卸载:反安装
环境变量:path中git相关删除
卸载
———————————————————
Git必要配置
git config -l(是L):查看默认配置
git config --system --list:系统级别
git config –global --list:本地配置当前用户的
所有配置文件都保存在本地;mingw64是执行目录
System配置文件位置:Git\etc\gitconfig
Global配置文件位置:C:\Users\Administrator\.gitconfig
配置用户名称email地址
git config –global user.name “lidan”
git config –global user.email 671713661@qq.com
利用下面命令查看
git config –global --list:本地配置当前用户的
———————————————————
Git基本理论
SVN是集中式版本控制系统,版本库是集中放在中央服务器的。协同方法:工作用自己电脑,首先从中央服务器得到最新版本然后工作,工作后提交推送到中央服务器,集中式版本控制系统是必须联网工作的,对网络要求较高。
Git四个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、远程git仓库(Remote Directory)
- Working Directory:工作区,平时存放代码的地方;
- Stage/Index:暂存区,存放临时改动的文件,保持即将提交到文件列表信息;
- Repository:仓库区(或本地仓库),安全存放数据的位置,有提交到所有版本的数据,其中HEAD指向最新放入仓库的版本;
- Remote:远程仓库,托管代码的服务器。
本地三个区域准确说是git仓库中HEAD指向版本
- Directory:使用Git管理的一个目录,也就是仓库,包含工作空间和Git管理空间;
- Workspace:需要通过Git进行版本控制的目录和文件,这些目录和文件组成了工作空间;
- .git是隐藏文件夹;
- Stage/Index:暂存区,存放临时改动的文件,保持即将提交到文件列表信息;
- Local Repo:本地仓库,存放本地的版本库、HEAD只是当前的开发分支(branch);
- Stash:隐藏是一个工作状态保持栈,用于保存/恢复Workspace中的临时状态。
工作流程
- 在工作目录中添加、修改文件;(UserMapper.xml)
- 将需要进行版本管理的文件放入暂存区域;(git add.)
- 将暂存区域的文件提交到git仓库。(git commmit)
Git管理的文件有三种状态:已修改(modified)、已暂存(staged)、已提交(committed)
———————————————————
Git项目搭建
常用命令
本地仓库搭建
创建本地仓库的方法有两种:一种是创建全新的仓库,一种是克隆远程仓库.
创建全新仓库,需要用git管理的项目的根目录执行, 执行后可以看到,只是在项目目录多出来一个.git目录,关于版本等的所有信息都在这个目录里面。
# 在当前目录新建一个git代码库
$ git init
克隆远程仓库
将远程服务器上的仓库完全镜像一份到本地。(gitee、github)
# 克隆一个项目和它整个代码历史(版本信息)
$ git clone [url]
例:
$ git clone https;//gitee.com/kuangstudy/openclass.git
———————————————————
Git文件操作
文件四种状态:
Untracked:未跟踪,此文件在文件夹中,但并没有加入到git库,不参与版本控制,通过git add.状态变为staged(暂存);
Hello.java -> git add. -> git commit
本地文件 —> 添加到暂存区(被跟踪)—> 提交到远程仓库
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 [filename] #查看指定文件状态
git status #查看所有文件状态
#git add . 添加所有文件到暂存区
#git commit -m “” 提交m暂存区中的内容到本地仓库 -m提交信息
具体实践:
基本文件操作步骤
文件添加到工作文件夹下 ——>
git add . #添加所有文件到暂存区 ——>
git status #查看所有文件状态 ——>
git commit -m “注释内容” #提交m暂存区中的内容到本地仓库 ——>
git status #查看所有文件状态
操作截图:
忽略文件
前端项目总 npm_moudles 不打包进去不提交;
Idea中.idea文件夹目录下都不需要提交 + 本地文件targrt 文件夹 upload、iml、pom.xml、README.md、数据库文件、临时文件、设计文件等都不需要提交;
在idea与.idea文件夹同级别的主目录下建立 .gitignore 文件,语法:
*.txt #忽略所有 .txt 结尾的文件,这样上传就不会被选中
!lib.txt #但是lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,但不包括其他目录temp
Build/ #忽略build/目录下的所有文件
Doc/*.txt #忽略doc/notes.txt但不包括 doc/server/arch.txt
例如具体项目中下面 .gitignore 文件:
第一段所有的class、log、lock不提交;
第二段注释Package Files下,所有的jar、war、ear以及targrt下的不提交;
第三段idea下,所有的.idea/以及*.iml的不提交;
*.class
*.log
*.lock
# Package Files #
*.jar
*.war
*.ear
targrt/
# idea
.idea/
*.iml
*velocity.log*
### STS ###
.apt_generated
.factorypath
.springBeans
### IntelliJ IDEA ###
*.iml
*.ipr
*.iws
.idea
.classpath
.project
.settings/
bin/
*.log
tmp/
#rebel
*rebel.xml*
———————————————————
使用码云
Github有墙,比较慢,国内一般使用gitee,公司可能搭建自己的gitlab服务器。
- 注册登录码云,完善个人信息
- 设置本机绑定SSH公钥,实现免密码登录
# 进入 C:\Users\Administrator\.ssh 目录
#生成公钥 pub公用的 另一个私钥
ssh-keygen
- 将公钥信息public key添加到码云账户
- 使用码云创建自己的远程仓库
———————————————————
Idea中集成Git
单人
创建idea项目(项目创建在git目录下) ——>
绑定git:将我们远程git文件目录(有.git文件夹的)复制到项目文件夹中,再刷新,会有红色就是选择状态 ——>
进入Terminal
输入git add回车
输入 git commit -m “file”回车
输入 git Push到远程仓库
分支
Master :主分支
Dev :开发用
V4.0 V3.0 :不同版本分支
(mas)就是分支,分支操作常用指令:
git branch #列出所有本地分支
git branch -r #列出所有远程分支
git btanch name #新建一个叫name的分支但仍然存留在当前分支
git checkout -b [branch] #新建一个分支并切换到新分支
git merge [branch] #合并指定分支到当前分支
git branch -d name #删除叫name的分支
git push origin –delete name #删除远程分支
git branch -dr [remote/branch] #删除远程分支
—————————————————————————————————
笔记内容来源:B站 “狂神说Java”快速入门Git