介绍下工作中常用的git 命令
获得帮助
任意指令,通过下面的格式即可获得帮助信息
git [cmd] -h
常用指令
0x01 git config
git config 设置当前当前仓库或者全局的git 配置。通过 –local 和 –global 参数用于区分当前仓库还是全局设置;基本常用配置涉及 username 和 email,还可以设置仓库记住用户名和密码的时间;
使用示例
git config --add --local user.name=JerryZhou343
git config --add --local user.email=Jerry.Chau@qq.com
0x02 git init
git init 初始化一个目录为Git 仓库
使用示例
git init . #初始化当前目录为一个仓库
0x03 git clone
已经有远程仓库情况下可以通过git clone 克隆远程仓库到本地。可以指定克隆到目标目录,以及目标仓库的深度,目标分支等信息。
使用示例
mkdir cc
git clone https://github.com/JerryZhou343/cctool.git cc
0x04 git fetch
同步远程仓库信息,将远程仓库最新内容拉到本地
使用示例
# 1.同步分支信息
git fetch -p (小p)
# 2. 同步tag信息
git fetch -P (大p)
# 3. 演习
git fetch --dry-run
# 4. 指定远程分支
git fetch origin master
0x05 git pull
git pull 将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch +git merge,这样可能会产生冲突,需要手动解决。
使用示例
git pull origin master # 拉取远程master分支和当前分支合并
0x06 git push
推送本地仓库到远程仓库
#1.推送当前master分支到远程
git push origin master
#2. 推送当前master分支到远程,并关联两者
git push origin master -u # -u, --set-upstream 设置 git pull/status 上游
#3. 删除远程master 分支
git push origin :master
#4. 删除远程tag v1.10.0
git push origin :refs/tag/v1.10.0
#5. 推送tag
git push origin v1.10.0
0x07 git branch
Git 重要概念分支相关命令, -u 参数也能设置上游信息和git push 中的-u 一样
使用示例
# 1. 查看所有分支
git branch -al
# 2. 创建分支
git branch dev
# 3. 删除分支
git branch -d dev # dev 为分支名
git branch -D dev # 强制删除dev分支
# 4. 重命名分支
git branch -m dev develop # 将分支dev 重命名为develop
0x08 git checkout
从当前head检出(切换)分支
使用示例
# 1. 创建并切换到分支dev
git checkout -b dev
# 2. 切换到分支 dev
git checkout dev
0x09 git tag
tag 指令用于打标签
使用示例
# 1. 创建标签
git tag v1.0.0
# 2.查看标签列表
git tag -l
# 3.删除标签
git tag -d v1.0.0
0x10 git remote
设置远程主机信息
使用示例
# 1. 添加远程主机,并命名为origin
git remote add origin https://github.com/JerryZhou343/cctool.git
# 2. 删除远程主机origin
git remote remove origin
# 3. 重命名远程主机,由 origin 变更为upstream
git remote rename origin upstream
0x11 git reset
git 回滚指令之一;通过重置HEAD的位置达到回滚效果,该指令比较危险,慎重操作。
使用示例
# 1. 回滚到当前头
git reset --hard
# 2. 回滚到某次提交
git reset --hard 0ad288526634045b9d81377333bfb51975577ac4
0x10 git revert
git 回滚指令之一;通过撤销某次提交,并重新生成一次新的提交达到回滚的效果
使用示例
# 1. 回滚0ad288526634045b9d81377333bfb51975577ac4 这次提交并生成新的提交
git revert 0ad288526634045b9d81377333bfb51975577ac4
0x11 git merge
git 分支合并指令,合并过程可能会产生一次新的merge提交,并生成parent1, 和parent2; 假设我们在develop分支,需要将feature分支合并到develop分支,产生的merge提交的parent1 即是develop分支,parent2 为feature分支。在diff中可以看到,新的提交相对parent1和parent2的不同; 在手动处理合并突出的过程中,可以通过git merge –abort 和 git merge –continue 终止或者继续合并
使用示例
# feature 分支合并到develop分支
git checkout develop
git merge feature
0x12 git rebase
git rebase 称为变基,通常用于合并提交或者丢弃提交(不建议),不建议在merge场景下使用;建议交互方式挑选提交,通常用squash 或者fixup 选择某次提交。git rebase 建议作用于自己的本地仓库和未发布到公共仓库的提交,不然会导致公共仓库history产生变化,进而引起不必要的提交事故。
使用示例
# 1. 合并提交,从HEAD 往后数5次提交,将这5提交合并
git rebase -i HEAD~5
0x13 git cherry-pick
挑选提交到当前分支,当一个分支混杂了太多提交,想要丢弃分支,但是又想保留某些提交,就可以用这个命令在挑选想要的提交;
使用示例
# 1. 挑选 feature 分支上的提交到develop
git checkout develop
git cherry-pick commit-id
0x14 git patch
这个不是一个指令,而是从当前代码仓库生成git path, 然后传递git path文件,将git path 应用到其他仓库的方式;
使用示例
# 1. 生成补丁
git format-patch commit-id -x # commit-id 往前x提交生成 patch
# 2. 应用补丁
git apply xxx.path
0x15 git add
添加需要跟踪的文件和目录
使用示例:
git add . #当前目录下所有文件
0x16 git commit
提交暂存区文件
使用示例
git commit -m "feat:xxx"
git commit --amend "feat:xxx" # 修改最近一次提交的评论
0x17 git status
查看当前本地仓库状态,git status 会显示当前仓库文件状态,标不同颜色,并给出操作提示