3

GitInWork

 2 years ago
source link: https://jerryzhou343.github.io/post/gitinwork/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

介绍下工作中常用的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 [email protected]

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 会显示当前仓库文件状态,标不同颜色,并给出操作提示

git book


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK