##一. 项目创建
###git init
# 当前目录初始化仓库,添加.git文件夹
$ git init
Reinitialized existing Git repository in /temp/.git/
###git clone
# 复制本地仓库,且不创建.git目录
$ git clone --bare git2/ git2Clone
Cloning into bare repository 'git2Clone'...
done.
# 复制远程仓库,指定本地目录为git3
$ git clone git@github.com:bluehtt/test.git git3
Cloning into 'git3'...
注意
git clone
:一个封装了几个命令的一个命令。
- 创建一个新目录并切换到新的目录,
git init
初始化一个空的 Git 仓库,git remote add <URL>
为指定的 URL 添加(默认名为origin
)远程仓库,- 对远程仓库执行
git fetch
,git checkout
将远程仓库的最新提交信息检出到本地工作目录。
二. 项目配置
###git config
设定,获取配置信息
# 设置全局的用户名和邮箱
$ git config --global user.name=carius
$ git config user.name
carius
$ git config --global user.email=bluehtt@163.com
$ git config user.email
bluehtt@163.com
三. 提交修改
git add/commit
# 添加文件到暂存区
$ git add <file name>
# 提交暂存区文件,
# -m 添加提交信息
# -a 省略git add直接提交,提交所有已跟踪文件
# -S 提交签名加密
# --amend 重做最后一次提交
$ git commit -a -m 'commit msg'
git cherry-pick
# 一种特殊的提交方式,根据给定的commit-id再次提交
# -e 编辑提交信息
$ git cherry-pick <commit-id>
# 批量提交,左开右闭
$ git cherry-pick <commit-id>..<commit-id-end>
# 批量提交,包括左边
$ $ git cherry-pick <commit-id>^..<commit-id-end>
git rebase
# 除了变基以外,还可以合并多个提交、
# 合并4个提交
$ git rebase -i HEAD~4
git status
# 查看工作区和暂存区中不同状态的文件
# -s 显示简略的信息
$ git status -s
MM aa #左边的M代表有修改添加到了缓存区,右边的M代表有修改未添加
D bb #文件删除添加到了缓存区
A test #文件新增添加到了缓存区
?? ts #文件未跟踪
###git diff 查看任意两棵树的差异
# 查看任意两棵树的差异
# --cached 查看暂存区做的修改,不添加查看工作目录与暂存区的差异
$ git diff --cached [file]
# 比较两个版本
$ git diff [commit1] [commit2]
# 比较两个分支
$ git diff [branchA] [branchB]
# --stat 查看差异统计
$ git diff develop origin/develop --stat
.../service/statistics/bean/StatisticsServiceBean.java | 16 +++++-----------
src/main/resources/config/properties/system.properties | 5 ++---
.../webapp/scripts/management/dpsManage/dataManage.js | 12 ++++++++----
src/main/webapp/scripts/order/createDpsOrder.js | 8 +++++---
.../template/velocity/app/order/createDpsOrder.vm | 14 +++++++-------
.../webapp/template/velocity/app/order/createOrder.vm | 18 +++++++++---------
.../template/velocity/app/order/createProductOrder.vm | 14 +++++++-------
.../template/velocity/app/order/examineProductOrder.vm | 18 +++++++++---------
.../webapp/template/velocity/app/order/orderDetails.vm | 18 +++++++++---------
.../webapp/template/velocity/app/search/dpsSearch.vm | 2 +-
.../template/velocity/app/user/order/orderBasicInfo.vm | 18 +++++++++---------
.../template/velocity/app/user/order/orderDetails.vm | 4 ++--
.../velocity/app/user/order/orderDetailsByNode.vm | 18 +++++++++---------
.../template/velocity/group/manage/cheosIndex.vm | 6 +++---
src/main/webapp/template/velocity/navigation/index.vm | 7 +++++--
15 files changed, 90 insertions(+), 88 deletions(-)
git reset 本地撤回
根据参数执行撤销操作
# 取消暂存区的修改,取消git add操作
$ git reset HEAD <file>
# 改变工作区
# HEAD^:根据^数量回退n个版本, n > 1 HEAD~n
$ git reset --hard [版本号]
git reset -soft 线上分支撤回
# ------------------------------------------------------------------------------------------------
# 执行 git log查看日志,获取需要回退的版本号
git log
# 显示
# commit f7fd659f21ded62f3bc8a131770f0a1eb46bf18b
# Author: wangningning <523103856@qq.com>
# Date: Tue Aug 13 17:01:15 2019 +0800
# 获取 commit 后面的版本号
# 执行 git reset –soft <版本号> ,如 git reset -soft f7fd659f21ded62f3bc8a131770f0a1eb46bf18b ,重置至指定版本的提交,达到撤销提交的目的
git reset –soft f7fd659f21ded62f3bc8a131770f0a1eb46bf18b
# git reset 命令分为两种: git reset –soft 与 git reset –hard ,区别是:前者表示只是改变了HEAD的指向,本地代码不会变化,我们使用git status依然可以看到,同时也可以git commit提交。后者直接回改变本地源码,不仅仅指向变化了,代码也回到了那个版本时的代码。
# 执行 git push origin 分支名 –force ,强制提交当前版本号。至此,撤销push提交完成。
git push origin dev –force
git rm
从工作区,或者暂存区移除文件。为下一个提交暂存一个移除操作。
# --cached 只移除暂存区的文件但保留工作区的文件,删除git仓库的信息保留本地文件
$ git rm --cached [file]
# 忽略某个文件,不让其提交到git上可以使用 .gitignore 文件,如果之前已经track的文件修改 .gitignore 是无效的。就需要下面这个操作
$ git rm -r --cached .
$ git add .
$ git commit -m 'update .gitignore'
git mv
$ git mv [file]
git clean
删除工作目录中未跟踪文件
# –n 表示试运行,在试运行中什么都不会删除。
# -f 表示实际删除文件。
# -d 表示删除未追踪的目录。
$ git clean
四. 分支与合并
git branch
# 查看所有分支
# -v 显示详细
$ git branch -v
# 创建分支
$ git branch <name>
# 删除分支
$ git branch -d <name>
# 重命名分支
$ git branch -m <oldName> <newName>
git checkout
# 撤销文件的修改
$ git checkout <file>
# 清楚缓存区内容
$ git checkout .
# 分支切换
$ git checkout <branchName>
# 创建新分支,且版本信息同复制的远程分支
$ git checkout -b <new branchName> <需要复制的分支名,如origin/develop>
git revert
# 撤销 my_commit 中的更改。当用 revert 撤销改动时,它会产生新的提交。
$ git revert my_commit
git worktree
# 从原分支创建一个新分支,并创建一个新的工作目录,且切换为新分支。实现同时修改多个分支,不需要来回切换
# 注意:一般导出原有分支,不要创建多余分支
$ git worktree add <dir> branchName
$ git worktree add -b <new branchName> <dir> branchName
# 先删除工作空间的文件目录,然后执行prune,清空worktree
$ git worktree prune
# 罗列所有worktree
$ git worktree list
git merge
合并一个或者多个分支到当前分支。
# --abort 撤销合并
# --continue 处理完冲突后继续合并
$ git merge <branch>
$ git merge --abort
git log
查看提交历史
# -p 查看文件改动记录
# --stat 统计修改处
# -n 显示记录数
# --oneline 记录一行显示
# --graph 图形化展示(配合--oneline或者--pretty使用)
# --all 查看所有分支
$ git log -p --stat
git blame
# 了解谁在什么时候对 my_file 做了什么样的改动
$ git blame my_file
git relog
# 显示本地代码库 HEAD 的更改日志,这个命令很适合查找丢失的工作。
$ git reflog
git tag
为代码历史记录中的某一个点指定一个永久的书签
# 查看书签
$ git tag
# 添加书签
$ git tag -a <name>
五. 分享与更新
git fetch
与一个远程仓库交互,将远程仓库中有但当前仓库没有的所有信息拉取下来存储在本地。
git pull
基本上 git fetch
和 git merge
的组合。
git push
提交更新到远程仓库。
# -u:--set-upstream 将本地分支与远程分支建立关联跟踪
# -f:强制推送本地更新,慎用
# --tag: 推送标签
$ git push [-u|-f] <远程地址> <远程分支名> #不写明本地分支就是默认
$ git push [-u|-f] <远程地址> <本地分支名>:<远程分支名>
git remote
# 查看仓库
# -v 查看详细
$ git remote -v
# 添加仓库
$ git remote add <name> <url>
# 删除仓库
$ git remote remove <name>
# 删除远程分支
$ git push <remote> -d <remote_branc>
# 重命名
$ git remote -m <name0> <name1>
# 修改url
$ git remote set-url <remote> <url>
# 查看远程分支详细信息
$ git remote show 分支名
* remote origin
Fetch URL: git@gitlab.cheosgrid.org:gfwg/dis_zjnode_maven.git
Push URL: git@gitlab.cheosgrid.org:gfwg/dis_zjnode_maven.git
HEAD branch: master
Remote branches:
develop tracked
dpsOrder tracked
master tracked
Local branch configured for 'git pull':
dpsOrder merges with remote dpsOrder
Local refs configured for 'git push':
dpsOrder pushes to dpsOrder (up to date)
master pushes to master (up to date)
git stash
# 暂存所有未提交改动
$ git stash
# 查看所有暂存记录
$ git stash list
stash@{0}: WIP on develop: a52f951 1.持续集成设置为develop分支
# 启用暂存,将修改还原到当前
$ git stash apply [stashId]
# 删除指定暂存版本
$ git stash drop [stashId]
# 删除所有暂存
$ git stash clear
六. git服务器
# --bare 建立一个裸仓库
$ git init --bare repo_name
七. git hooks
git的钩子,在git仓库发生push,commit,receive等事件时触发的一系列脚本任务。在仓库下面有一个 hooks 文件夹,里面存放各个阶段之行的脚本文件。
[外链图片转存失败(img-mERPicEC-1565742599809)(img/image-20190405224802470.png)]