目录
4.1.1 Maven
Maven:项目构建、jar包管理工具
待更新
4.1.2 Git
4.1.2.1 Git概述
Git:分布式版本控制系统(Distributed Version Control System,简称 DVCS),分布式版本管理工具。
分为两种类型的仓库:
- 本地仓库:是在开发人员自己电脑上的Git仓库
- 远程仓库:是在远程服务器上的Git仓库
4.1.2.2 Git仓库
Git获取仓库有两种方式:
- 本地初始化仓库
- 远程克隆仓库
4.1.2.2.1 本地仓库
在计算机的任意地方创建一个文件夹(本例在桌面创建git文件夹)
进入git文件夹,右键点击Git Bash Here,表示在当前文件夹打开git命令行窗口(本节忽略了Git的安装,可百度搜索安装步骤)。
指令:[git init] 初始化一个空仓库
出现.git文件表示仓库创建成功,由于是隐藏文件,需要显示隐藏文件。
4.1.2.2.2 远程仓库
远程仓库跟随提示即可创建
4.1.2.3 工作区、版本库、暂存区、文件状态
4.1.2.3.1 工作区
如上的git文件夹就是一个工作区。
4.1.2.3.2 版本库
工作区有一个隐藏目录.git,.git文件夹是Git的版本库,而非工作区。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或index)的暂存区,还有Git为我们自动创建的第一个分支master
,以及指向master
的一个指针叫HEAD
。
4.1.2.3.3 暂存区
如版本库所言,里面的stage就是暂存区,顾名思义暂存用。
4.1.2.3.4 文件状态
untracked | 未跟踪(未被纳入版本控制) |
tracked | 已跟踪(被纳入版本控制) |
Unmodified | 未修改状态 |
Modified | 已修改状态 |
Staged | 已暂存状态 |
4.1.2.4 本地仓库指令
指令:[git status] 查看文件状态
我们在工作区新建两个问价test.java和abc.java,输入指令,发现下面提示untracked files,而且文件为红色,说明这两个文件还没有加入暂存区。
指令:[git add 文件名] 将指定文件加入暂存区
指令:[git add --all ] 将所有文件加入暂存区
指令:[git commit -m 备注 文件名] 将指定文件提交到本地仓库
指令:[git commit -m 备注] 将所有文件提交到本地仓库
备注信息一定要填,否则无法成功提交。
指令:[git commit] 不加-m参数 打开一个窗口,输入修改提交信息 ,ESC + ":wq"保存退出
指令:[git rm 文件名] 删除指定文件
删除后,git status
命令会立刻告诉你哪些文件被删除了
之后有两种操作,第一种,从版本库中删除该文件,那就用接着用git commit提交
指令:[git commit -m 备注 删除文件名] 将删除的文件提交到本地仓库
这样文件就从版本库中删除了。
第二种,删错了,恢复,其实使用版本库中的替换被删除的
指令:[git checkout -- 文件名]
4.1.2.5 远程仓库指令
指令:[ git remote ] 查看远程仓库,Git 克隆的仓库服务器的默认名字 默认有origin
指令:[ git remote add <shortname> <url> ] 添加新的远程 Git 仓库,指定可以引用的简写
指令:[git clone [url] ] 克隆远程仓库
指令:[ git fetch ] 从远程仓库获取最新版本到本地仓库
指令:[ git pull ] 从远程仓库获取最新版本并merge到本地仓库
注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories ),解决此问题可以在git pull命令后加入参数--allow-unrelated-histories
指令:[ git pull --allow-unrelated-histories ]
指令:[ git push ] 提交到远程仓库 简写形式
指令:[ git push remote-name branch-name] 完整形式
4.1.2.6 添加忽略文件
当我们提交本地仓库的代码到远程仓库时,并不是所有的代码 都需要提交,如target目录下的文件、日志文件等。这些文件不需要上传,就需要用到忽略文件。
1.在工程中创建 .gitignore文件
2.在文件里按以下格式书写
# : 注释 * : 所有
# no .class files
*.class
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory
doc/**/*.pdf
4.1.2.7 分支
先来看一个分支图,
之后思考一个问题,我们之前提交代码到远程仓库时,没有指定分支,所以默认是master主分支。如果观察仔细会发现,每次都是把远程仓库的所有代码克隆下来,之后修改后push后又覆盖远程仓库的所有代码。显然在实际的开发中,你是不可能这样的,所以引入了分支。
你可以在你的分支里随意修改,不会影响到主分支,只有你修改完成后,有相应的负责人合并分支。
指令:[ git branch ] 列出本地所有分支
指令:[ git branch -r] 列出远程所有分支
指令:[ git branch -a ] 列出本地和远程所有分支
指令:[ git branch 分支名] 创建指定分支名的分支
指令:[ git checkout 分支名] 切换分支
*代表当前所处的分支。
指令:[ git push origin 分支名] 推送到远程仓库的指定分支
指令:[ git merge 分支名] 将指定分支合并到当前分支
如果两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没办法合并它们,同时会提示文件冲突。需要打开冲突的文件并修复冲突内容,最后执行git add命令来标识冲突已解决。
指令:[ git branch -d 要删除的分支名] 删除指定分支
如果对删除的分支进行了修改,上面的删除命令并不会删除分支,可以使用-D强制删除。
指令:[ git push origin –d 要删除的分支名 ] 删除远程仓库的指定分支
4.1.2.8 IDEA中Git项目协作开发
待更新
上一篇:4 JavaEE |
下一篇:4.2 JavaEE-MyBatis |