maven、git详解

maven、git
Maven构建生命周期是由阶段组成的,其中内置了三个构建生命周期:default,clean和site。
default
生命周期处理工程的部署
clean
生命周期处理工程的清理
site
生命周期则负责创建工程的站点文档。

default生命周期
是由以下的阶段组成(查看完整的生命周期阶段列表,请参考生命周期参考)
validate – 验证该项目是否正确,所有必要的信息都是可用的
compile – 编译工程源码
test – 使用一个合适的单元测试框架测试编译的源代码。这些测试的代码不会被打包或部署到项目中
package – 将编译的代码打包成它发布的格式,例如JAR
integration-test – 如果必要的话,该命令会将工程处理并部署在一个集成测试运行的环境中
verify – 运行任何检查以验证该包是否有效,是否符合质量标准
install – 将工程打包安装到本地仓库中,以便本地其他项目可以进行依赖
deploy – 在集成或发布环境中,将最终工程打包复制到远程仓库中,用于与其他开发人员和项目共享

Clean生命周期
pre-clean 执行一些清理前需要完成的工作
clean 清理上一次构建生成的文件
post-clean 执行一些清理后需要完成的工作

Site生命周期
pre-site 执行一些在生成站点之前需要完成的工作
site 生成项目的站点文档
post-site 执行一些在生成站点之后需要完成的工作
site-deploy 将生成的站点文件发布到远程服务器上

基本定义
Head(头)
指向当前branch最顶端的一个commit,该分支上一次commit后的节点

Index(索引)
The index, 也可以被认为是staging area(暂存区),是一堆将在下一次commit中提交的文件,提交之后它就是 HEAD的父节点. (译注:Git add添加的文件)

Working Copy(工作副本)
当前工作目录下的文件,(译注:一般指,有修改,没有git add,没有git commit的文件)

命令

  1. git init
    在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹.

2.git clone
获取一个url对应的远程Git repo, 创建一个local copy.
一般的格式是git clone [url].
clone下来的repo会以url最后一个斜线后面的名称命名,创建一个文件夹,如果想要指定特定的名称,可以git clone [url] newname指定.

3.git status
查询repo的状态.
git status -s: -s表示short, -s的输出标记会有两列,第一列是对staging区域而言,第二列是对working目录而言.

4.git log
查询日志记录
git log --author=[author name] 可以指定作者的提交历史.
git log --no-merges可以将merge的commits排除在外.
git log --grep 根据commit信息过滤log: git log --grep=keywords
git log fileName 查看文件历史

5.git add
在提交之前,Git有一个暂存区(staging area),可以放入新添加的文件或者加入新的改动. commit时提交的改动是上一次加入到staging area中的改动,而不是我们disk上的改动.

git add .
会递归地添加当前工作目录中的所有文件.

git add fileName
添加文件

6.git diff
git diff HEAD
show diff of all staged or unstated changes.
也即比较woking directory和上次提交之间所有的改动.

git diff [branchA] [branchB]
可以用来比较两个分支.

git diff [version tag]
自从某个版本之后都改动了什么,可以用:

7.git commit
提交文件到版本库

8.git reset
重置到某个节点
soft 重置 head
mixed 重置 head+stage
hard 重置 head+stage+working copy

9.git revert
git revert HEAD 回退前一次提交修改
git revert HEAD~1 回退前前一次提交(注:只回退提交的一次内容,前一次提交不回退)
git revert 撤销指定的版本,撤销也会作为一次提交进行保存

git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,
版本会递增,不影响之前提交的内容
(注意点:
reset 区别是 reset 重置到某一个点,提交清除
revert 新产生一次提交,对你原有的一次提交进行修正,原有的提交是存在的
)

10.git merge
git merge # 将branch分支合并到当前分支
git merge origin/master --no-ff # 不要Fast-Foward合并,这样可以生成merge提交

11.git rebase
把另一个分支的最新commit改变为当前分支的基础
优点:可以有效的保持git树的整洁
缺点:解决冲突比较麻烦
(1)命令:git rebase 把branch rebase 到当前分支
(2)解决冲突方式 中途会提醒冲突文件 解决冲突后 git add . 然后继续 git rebase --continue
(3) 回退rebase:在rebase中 git rebase --abort

12.git push
合并本地HEAD 文件到远端
13.git fetch
git 中存在一个fetch head列表,保存在 .git/FETCH_HEAD 中,
git fetch作用:
1.创建并更新所有远程分支的本地远程分支.
2.设定当前分支的FETCH_HEAD为远程服务器的对应分支(默认对应分支,就是创建的本地分支的依赖远程分支)

14.git pull
从远端获取到最新版本,合并到本地分支
简单点 git pull = git fetch + merge to local
但是git pull 只会跟新对应的远端分支

  1. git rm
    git rm 删除文件,物理文件也删除
    git rm --cached 把文件从stage中移除 (这个命令存在bug,可能会把文件标记为删除状态)—— 建议使用 git reset HEAD
    git rm –r * 进入某个目录中,执行此语句,会删除该目录下的所有文件和子目录。

  2. git stash
    当你想要保存当前的暂存区和工作区的状态的时候,你可以使用git stash命令。比如:你正在开发一个新功能,写了一些代码(保存暂存的和没有暂存的或没有记录的),现在需要去修复一个紧急bug,你又不想提交,这时你可以选择保存当前工作区和暂存区的内容,需要的时候恢复。
    这个命令会保存当前的暂存区和工作区的状态,然后返回到HEAD(git reset —hard HEAD)。最新的stach可以在.git/refs/stash中看到。

git stash [save message] [-k|–no-keep-index] [–patch]
git stash apply [–index] [] 不删除已恢复的进度,其他同git stash pop
git stash drop [] 删除某一个进度,默认删除最新进度
git stash clear 删除所有进度
git stash branch 基于进度创建分支

  1. 合并提交
    代码log清晰,这里提供一种方式,大家自由发挥
    git rebase -i A
    修改前面的pick 为squash
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值