likes
comments
collection
share

Git命令手册

作者站长头像
站长
· 阅读数 43

Git 流程图

Git命令手册

  • Workspace:工作区

  • Index / Stage:暂存区

  • Repository:本地仓库

  • Remote:远程仓库

Git 常用命令汇总

1、完成git项目的关联提交

git init
git remote add origin http://mtgitlab.hnzycfc.com/perpetual/yxd-promo-regist.git
git add .
git commit -m "Init Commit"
git push -u origin master

2、写在前面(最常用)

# 查看工作区和暂存区的状态
git status 

# 根据对应的远程分支检出本地分支
git checkout branchName
# 基于某个远程分支新建本地分支并切换到当前分支
git checkout -b 本地分支名 origin/远程分支名 # 记得先获取一下远程分支的更新(git pull)

# 将工作区的文件提交到暂存区(所有)
git add . 
# 提交到本地分支
git commit -m "本次提交说明" 
# 暂存提交合并
git commit -am '本次提交说明'

# 拉取远程分支的代码
git pull
# 拉取指定远程分支的代码
git pull origin branchName 

# 将本地分支推送到远程
git push 
# 将本地分支推送到指定的远程分支
git push origin branchName
# 推送到远程分支,并设置本地分支跟踪的远程分支
git push -u origin branchName

Git 配置

# 配置全局用户
git config --global user.name "用户名"
git config --global user.email "git账号"
# 查看git全局配置
cat ~/.gitconfig
# 配置全局git别名
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
# 查看git远程分支地址
git remote -v

Git初始化

Git 命令详解

clone


# git clone <版本库的网址>
git clone http://github.com/jquery/jquery.git
# git clone <版本库的网址> <本地目录名>
git clone http://github.com/jquery/jquery.git jq

add

# 添加指定文件到暂存区
git add [file1] [file2]
# 添加指定目录到暂存区,包括子目录
git add [dir]
# 添加pages目录及其子目录下所有*.ts文件
git add pages/*.ts
# 添加当前目录下的所有文件到暂存区
git add .
# 删除工作区/暂存区的文件
git rm [file1] [file2]
# 停止追踪指定文件,但该文件会保留在工作区
git rm --cached [file]

status


commit

git commit --no-verify

pull & push

git pull -p

// 推送到远程分支,并设置本地分支跟踪的远程分支
git push --set-upstream origin branchName
# 简写
git push -u origin branchName

branch

// 查看
git branch // 查看本地分支
git branch -r // 查看远程分支
git branch -a // 查看所有分支
git branch -vv // 查看本地分支及追踪的分支

// 删除
 git branch -d branchName // 删除本地分支
 git push origin --delete branchName // 删除远程分支

diff

个人觉得 git diff 不怎么好用,现在的图形界面化工具都很成熟,推荐2个我平常经常用的git分支图形化工具(图一:Git Graph、图二:gitlab分支图)

Git命令手册

Git命令手册

remote

tag

# 列出所有标签
git tag
# 默认在 HEAD 上创建一个标签 
git tag v1.0.0
# 指定一个 commit id 创建一个标签 
git tag v1.0.0 78aa36c7
# 创建带有说明的标签,用 -a 指定标签名,-m 指定说明文字
git tag -a v1.0.0 -m "version 1.0.0 released" 
# 查看单个标签具体信息
git show <tagname>

# 推送指定的本地标签
git push origin <tagname>
# 推送本地未推送的所有标签
$ git push origin --tags

# 删除本地标签
$ git tag -d v1.0.0
# 删除一个远程标签(先删除本地 tag ,然后再删除远程 tag)
$ git push origin :refs/tags/<tagname>

checkout

git checkout -b 本地分支名 origin/远程分支名 // 基于某个远程分支新建分支并切换到指定分支

Git钩子


Git 日志

git 中 D 向下翻一行 F 向下翻页 B 向上翻页  Q 退出

查看提交历史

git log 
git log --all  # 查看所有git提交记录
git log --oneline  # 将日志记录一行一行的显示
git log --graph  # git记录图形化显示
git log --oneline --graph  # git短记录图形化显示
git log --reverse  # 查看git提交记录(顺序反转)
git log --stat  # 显示每次更新的文件修改统计信息,会列出具体文件列表
git log --abbrev-commit  # 显示commit缩写(仅显示 SHA-1 的前几个字符)
git log -p  # 显示每次提交所引入的差异(按 补丁 的格式输出)

日志过滤

常用

git log --no-merges  # 过滤掉merge提交记录
git log --grep='关键字'  # 过滤出日志记录中(commit提交时的注释)与关键字有关的记录
git log -10  # 显示最近10条提交记录
git log --author='鲍广伟'  # 查找这个作者的提交记录

git log global.d.ts src/  #通过文件或者文件夹过滤提交记录
git shortlog -20  # 按作者分类,过滤出最近的20条短提交日志

by merge

by time

# --since(--after) 
git log --since=2.weeks
git log --since='2 years ago'
git log --after=day/1 week/1 '2020-01-01'  # 查找最近 一天、一周、或者2020-01-01后的提交记录
# --until(--before)
git log --until='2018-12-31 17:30:00'
git log --before=day/1 week/1 '2020-01-01'  # 查找一天、一周、或者2020-01-01前的提交记录

format

git log --pretty=format:''  # ???
git log --format='%h - %an - %ar - %s' --no-merges

git log --oneline --no-merges --pretty=%an | sort | uniq -c | sort -r
git log --all --pretty=%ae | sort | uniq -c | sort -r

git 点线图

*	表示一个 commit
|	表示分支前进
/	表示分叉
\	表示合入
|/	表示新分支

Git更改已提交commit信息

修改最近一次提交

# 单纯的更改commit信息
git commit --amend  # insert进入编辑后,esc退出界面,:wq保存退出

# 提交后发现有的代码没暂存,想合并提交
git add . 
git commit --amend  # 进入 commit 编辑,但只需:wq

修改之前的提交

???

代码回滚

# 回退命令
# git reset --hard 版本号
git reset --hard HEAD^ 回退到上个版本
git reset --hard commit_id 回退到指定的提交版本
# 强推到远程
git push origin HEAD --force

常用Git代码统计命令

#参考贡献者统计
git log --pretty='%aN' | sort -u | wc -l
# 查看仓库提交者排名前 5
git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 5
# 查看个人的增删行数
git log --author="username" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -
# 统计每个人的增删行数
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done
# 查看某个工程的代码总行数
cd src/
find . "(" -name "*.js" -or -name "*.jsx" -or -name "*.ts" -or -name "*.tsx" -or -name "*.less" -or -name "*.html" ")" -print | xargs wc -l

常见小问题

1、git远程删除分支后,本地git branch -a 依然能看到,如何解决?

git branch -r // 查看远程分支
git remote show origin // 查看分支对应关系
git remote prune origin // 删除不存在分支

使用命令 git remote show origin,可以查看remote地址,远程分支,还有本地分支与之相对应关系等信息。

2、git 提交代码如何避开git钩子(pre-commit)检测?

git commit -m '提交信息' --no-verify
# 简写
git commit -m '提交信息' -n

3、git 如何放弃本地修改?

# 注意:暂存文件无效
git checkout . && git clean -df
# 暂存文件也可还原
git stash

3、如何让工作目录变干净?

# 保存当前未commit的代码
git stash

# 保存当前未commit的代码并添加备注
git stash save "备注的内容"

# 列出stash的所有记录
git stash list

# 删除stash的所有记录
git stash clear

# 应用最近一次的stash
git stash apply

# 应用最近一次的stash,随后删除该记录
git stash pop

# 删除最近的一次stash
git stash drop

参考链接

转载自:https://juejin.cn/post/7203563038300127293
评论
请登录