# 常用操作
# 状态管理
- git status
- Changes not staged for commit
- 表示得大概就是工作区有该内容,但是缓存区没有,需要我们git add
- Changes to be committed
- 一般而言,这个时候,文件放在缓存区了,我们需要git commit
- nothing to commit, working tree clean
- 这个时候,我们将本地的代码推送到远端即可
- git reflog, 查看历史操作记录,包括已删除的commit
- git log, 查看日志
- git log --oneline ,不包含已删除的commit
- Changes not staged for commit
# 配置管理
- git config --list
- 列出当前配置
- git config --local --list
- 列出Repository配置
- git config --global --list
- 列出全局配置
- git config --system --list
- 列出系统配置
- 配置用户名
- git config --global user.name "your name"
- 配置用户邮箱
- git config --global user.email "youremail@github.com"
# 分支管理
git branch --merged
- 查看哪些分支已经合并到当前分支
git branch --no-merged
- 查看哪些分支没有合并到当前分支
git branch -v
- 查看各个分支最后一个提交对象的信息
git push origin -d <\branch-name>
- 删除远程分支
git branch -m <\oldbranch-name> <\newbranch-name>
- 重命名分支
git checkout -b dev origin/master
- 拉取远程分支master并创建本地分支dev
git fetch origin <\branch-name>:<\local-branch-name>
- 一般而言,这个origin是远程主机名,一般默认就是origin。
- branch-name 你要拉取的分支
- local-branch-name 通常而言,就是你本地新建一个新分支,将origin下的某个分支代码下载到本地分支。
示例
git fetch origin master:develop 从远处master分支拉取,并在本地新建 develop分支。同时切换到develop
1
2git fetch origin
- 将某个远程主机的所有更新,全部取回本地。
git fetch origin master
- 取回master分支的更新
查看远程分支和本地分支的对应关系
- git remote show origin
远程删除分支,本地也想删除
- git remote prune origin
查看远程的分支并列车信息
--format='%(align:50,left)%(color:reset)%(refname:strip=3)%(end)%(align:30,left)%(color:yellow)%(authorname)%(end)%(align:50,left)%(color:cyan)%(authordate:format:%Y/%m/%d/ %I:%M %p)%(end)'
refs/remotes20. 查看并列出远程未合并的分支,并按名字排序 1.
git br -r --sort=authorname --format='%(align:50,left)%(color:reset)%(refname:strip=3)%(end)%(align:30,left)%(color:yellow)%(authorname)%(end)%(align:50,left)%(color:cyan)%(authordate:format:%Y/%m/%d)%(end)' --no-merged |pbcopy```
2. find /sbin -perm +700 |xargs ls -l
- 多分分支删除
- cat 1.txt|xargs git push origin --delete
# 撤销操作
git checkout .
- 撤销工作区修改
git reset HEAD
- 暂存区文件撤销 (不覆盖工作区)
git reset --(soft | mixed | hard ) < HEAD ~(num) > |
- 版本回退
- --hard: 回退全部,包括HEAD,index,working tree
- --mixed: 回退部分,包括HEAD,index
- --soft: 只回退HEAD
git restore --staged <文件> 以取消暂存
# 文档暂存
暂存是倒序,最新的在最开始。最近保存的stash 是 stash{0}
- git stash save -a “message”
- 添加改动到stash
- git stash drop stash@{ID}
- 删除暂存
- git stash list
- 查看stash列表
- git stash clear
- 删除全部缓存
- git stash pop stash@{ID}
- 恢复改动
# 差异比较
- git diff
- 比较工作区与缓存区
- git diff -- cached -比较缓存区与本地库最近一次commit内容
- git diff HEAD -比较工作区与本地最近一次commit内容
- git diff 《commit id》《commit id》 -比较两个commit之间差异
# 分支名 (opens new window)
- master 分支
- 主分支,用于部署生产环境的分支,确保稳定性。由release分支合入
- develop 分支 -develop为开发分支,通常情况下,保存最新完成以及bug修复后的代码。
- feature分支
- 由develop分支开出,feature/新功能 命名
- release分支
- release 为预上线分支,发布提测阶段,会release分支代码为基准提测
- hotfix分支e
- 分支命名:hotfix/ 开头的为修复分支,它的命名规则与 feature 分支类似。
- 线上出现紧急问题时,需要及时修复,以master分支为基线,创建hotfix分支,修复完成后,需要合并到master分支和develop分支。
# tag
- git tag -a v1.0.0 -m 测试包
- 新增版本号为v1.0.0,信息为测试包 的tag
- git tag -l 或者git tag
- 列出当前的tag
- git tag -d v1.0.0
- 删除v1.0.0这个tag
- git push origin v1.0.0
- 将v1.0.0这个tag推送到远程仓库
- git push origin --tags
- 将所有的tag推送到远程仓库
- git push origin :refs/tags/v1.0.2 或者 git push origin --delete v1.0.2
- 删除远程仓库的 v1.0.2 这个tag
- git show-ref --tag 查看远程分支
- git tag -l |awk '/v/' | xargs git tag -d 删除所有tag
# git 帮助
- git help (--help)
- 展示Git命令大纲
- git help -a
- 展示Git命令大纲全部列表
- git help
- 展示具体命令说明手册
# 补充
- git stash save 'xxxx'
- 保存未提交的修改,同时自定义 stash 栈中的信息名称:
- git stash list
- 查看现有 stash
git stash apply 等价于 git stash apply stash@{0}
- 恢复最近的一个缓存。释放之后,刚才的记录还存在 list 中
git stash pop
- 恢复最近的一个缓存。释放之后,刚才的记录不存在 list 中
git config
git config --get-regexp "branch.*.description" | gsed "s/description//" | awk -F. '{print $2,$3}'
← Git 工具 - 子模块 Git 概念 →