Git命令大全


Git中文文档

帮助

git help 命令 查看帮助文档
git verb --help #浏览器打开帮助文档
git verb -h #命令窗口打开帮助文档,git remote -h 

配置

配置作用域

git config --local #只对某个仓库起作用
git config --global #对当前用户所有仓库有效
git config --system #对系统登录的用户有效

查看配置

git config --list --local 
git config --list --global 
git config --list --system

最小配置

声明具体是谁在操作仓库内容,必须项

git config --global user.name 'username'
git config --global user.email 'user@email.com'

项目初始化

git init [项目名] #在当前目录下新建一个[项目名]目录,并在此目录下新建.git文件夹
git init #在当前目录下新建.git文件夹

概念

add以后就到暂存区
commit以后就到本地仓库(HEAD指针指向本地仓库)

拉取到本地

git fetch # 将远端的拉到本地,但不会将新内容更新到本地
git diff master origin/master #查看fetch的远程仓库和本地的对比
git merge #使用该命令合并远程和本地
# 先fetch把远端的分支拉下来,然后在和本地的同名分支merge(合并)到一起
git pull # 相当于上面git fetch + git merge的组合命令

跟踪项目

将修改提交到暂存区

git add 文件|文件夹 # 将文件添加到暂存区
git add -u # 所有工作区中已经被git管理的文件一起提交到暂存区

提交到本地仓库历史

git commit -m 'what you did' #将暂存区内容提交到本地仓库
git commit -a '' #跳过add直接提交更改内容

提交到远程仓库

# orgin
git push
# use git remote name add https:....git
git push name branch-name
# all branches
git push name --all

更改commit message

git commit --amend #将最近一次提交的commit message改变一下
git rebase -i commit的父commit的hash # 等待编辑器,然后将pick改为r保存关闭,等待下一次编辑器编辑信息保存

committer&author

在这里插入图片描述
为了尊重版权问题,提交的内容可能是别的分支上面的,所以author和committer是分开的。
author就是原始committer。

修改文件/文件名

### 普通操作
mv readme readme.md #改名
git add readme.md #添加
git rm readme #删除原本的
### 进阶操作
# 修改后自动add
git mv readme readme.md

还原操作

暂存区:add以后

#操作危险,使用谨慎
git reset --hard #清空暂存区和工作区的修改
git reset --hard commitHash #回滚到hash对应的commit版本

# 变更工作区使用checkout,变更暂存区使用reset

# 暂存区
git reset HEAD # 将暂存区的内容取消undo,恢复到unadded状态
git reset HEAD -- <filename,filename,.....>
# 工作区
# 将工作区中的内容恢复到暂存区中的样子,如果暂存区没有就恢复到HEAD中的样子
git checkout -- <filename> 
git checkout -- * #支持通配符

版本历史

git log # 查看所有详细记录
git log --oneline #简洁方式查看 #格式:哈希值 操作 受影响的文件/文件夹
git log -nX #查看X条,X为一个数字,多个分支是所有分支的总的前X个
git log --all #所有分支的记录
git log --graph #图形化演进显示
git log --oneline --all -n7 -graph 分支名 #命令都可以组合

tag

标签官方文档

# 查看本地tag
git tag 
# 切换到某tag
git checkout tagName 
# 创建标签(轻量标签,引用。)
git tag tagName
# 附注标签(完整的标签)
git tag -a tagName -m "注释信息"
# 推送标签到远程仓库
git push origin tagName
# 将所有标签全部推送到远程仓库
git push origin --tags
# 搜索标签(支持regx)
git tag -l 'v1.8.5*'
# 查看tag信息,
# 附注标签:可以看到信息与对应的提交信息
# 轻量标签:只可以看到提交信息
git show tagName

对比不同

暂存区:added

git diff commit1hash commit2hash #对比两次commit的异同
git diff HEAD HEAD^ #同上,^代表父commit, HEAD^1^1代表commit的父的父,也可用~代替^
#查看工作区与HEAD以及暂存区的区别
git diff
# 查看暂存区和HEAD的变化
git diff --cached 
# 查看两次提交之间的不同
git diff hash1 hash2 -- <filename,....>

git diff --stage, 同上git 1.6.1及以上版本
# Git Diff 的插件版本
# 使用 git difftool --tool-help 命令来看你的系统支持哪些 Git Diff 插件。

分支

# 查看分支
git branch -v #查看本地有几个分支 -av所有的包括已删除
git checkout branchname #切换分支
# 创建分支
git branch new-branch-name # 创建分支
git checkout -b new-branch-name #创建分支并切换过去
git branch new-branch-name <基于某分支创建>
git branch new-branch-name origin/master #基于master分支创建新的分支
# 删除分支
# 删除本地分支
git branch -d branch-name 
git branch -D branch-name #强行删除分支
# 删除远程分支
git push origin --delete serverfix
# 将本地分支上传到远程分支
git push -u origin <branch-name> # -u 是--set-upstream的缩写

变基

总原则:只对尚未推送或分享给别人的本地修改执行变基操作清理历史,从不对已推送至别处的提交执行变基操作,这样,你才能享受到两种方式带来的便利。变基

# 切换分支到实验分支
git checkout experiment
# 变基到主分支
git rebase master

变基的风险

奇妙的变基也并非完美无缺,要用它得遵守一条准则: 不要对在你的仓库外有副本的分支执行变基。 如果你遵循这条金科玉律,就不会出差错。
否则,人民群众会仇恨你,你的朋友和家人也会嘲笑你,唾弃你。变基

紧急任务

git stash # 将当前工作区的内容放到某栈中保存,然后将工作区恢复到未更改的样子。
git stash apply # 将某栈中的stash栈顶恢复到工作区,并且保存某栈中的内容。
git stash pop # 同上,但是删除某栈中的信息
git stash list # 查看某栈中的内容

远程控制

版本:Git v1.7.0+

# 查看远程仓库的信息
git remote show origin
# 创建远程分支(先创建一个本地分支,然后推送到远程)
git push origin new:new
# 删除远程分支
git push origin --delete <branchName>
# 1.7.0- 推送一个空分支,相当于删除掉了
git push origin :<branchName>
# 删除远程tag
git push origin --delete tag <tagname>
# 1.7.0- 同样地推送空tag
git tag -d <tagname>
git push origin :refs/tags/<tagname>
# 删除没有远程分支对应的本地分支
git fetch -p

图形化界面

gitk --all

查看git文件

git cat-file -t 哈希值 #类型
git cat-file -p #内容

分离头指针(Detached HEAD)

git checkout commit的hash值
# 在分离头指针情况下的commit,不和任何分支或者tag绑定,会被git当垃圾忽略掉
# 一定要跟某个分支绑定在一起
git branch new-branch-name commit分离头指针改动产生的hash值 #创建一个新的分支,保存这个commit
# 更改commit message 就是一次完整的分离头指针行为,是有益的
git rebase -i commit的父commit的hash # 等待编辑器,然后将pick改为r保存关闭,等待下一次编辑器编 -i代表交互式

win下cmd乱码问题

增加环境变量即可 LESSCHARSET:UTF-8
在这里插入图片描述

mac下解决utf8显示问题

git config --global core.quotepath false
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值