Git命令集

##一. 项目创建

###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:一个封装了几个命令的一个命令。

  1. 创建一个新目录并切换到新的目录,
  2. git init 初始化一个空的 Git 仓库,
  3. git remote add <URL> 为指定的 URL 添加(默认名为 origin)远程仓库,
  4. 对远程仓库执行 git fetch
  5. 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 fetchgit 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仓库发生pushcommitreceive等事件时触发的一系列脚本任务。在仓库下面有一个 hooks 文件夹,里面存放各个阶段之行的脚本文件。

[外链图片转存失败(img-mERPicEC-1565742599809)(img/image-20190405224802470.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值