Git 常用命令整理

status
Published
type
Post
slug
git-commands
date
Aug 25, 2022
tags
DevOps
Git
Shell
summary
Git 是一款代码版本控制工具,常用于团队协作开发。本文主要是整理的一些常见的 Git 命令,这些命令覆盖了 Git 常用的操作场景,可以帮助开发者更好地使用 Git 进行版本控制和协作开发。
Git 作为代码版本控制工具,也是要经常打交道的存在。虽然在各类 IDE 中已经将其大部分操作实现了很好的图形化用户交互,但命令行作为与 Git 打交道的基础,还是不可或缺。在此将常用的一些场景命令整理一下。
notion image

Local repository

# 初始化本地仓库 git init # 添加当前路径下所有文件到暂存区 git add . # 提交修改到本地仓库 git commit -m "Add Readme.md"

Remote repository

# 添加远程仓库地址,地址形如:https://github.com/example/project.git git remote add origin <远端仓库地址> # 推送本地 master 分支到远程仓库 git push -u origin master

.gitignore

# 于 git 项目根目录下创建 .gitignore 文件,在其中写入需要忽略的文件 *.log node_modules/

Branch

# 从远程仓库拉取(clone)项目至本地 git clone <远端仓库地址> # 进入项目目录,创建并切换至新分支 develop git checkout -b develop # 删除本地分支 git branch -d develop # 删除远程仓库 develop 分支 git push origin --delete develop

Merge

  • 无冲突
# 切换回 master 分支 git checkout master # 将 develop 分支合并到 master git merge develop # 推送 master 分支到远程仓库 git push origin master
  • 有冲突
# 拉取远程 master 分支,更新至最新代码 git pull origin master # 将 master 分支合并至 develop 分支 git merge master # 此时会提示冲突,逐个文件解决,编辑保存 # 添加文件至暂存区 git add . # 提交冲突修改 commit git commit -m "Fix conflict" # 推送 develop 分支至远程仓库 git push origin develop

Rebase

# 假定在 develop 分支 git checkout develop # 将此分支 rebase 到 master 分支 git rebase master # 强制推送至远程仓库 git push -f origin develop # 切回 master 分支 git checkout master # 合并 develop 至 master git merge develop # 推送 master 至远程仓库 git push origin master
比较项
rebase
merge
定义
把自己的分支变基到目标分支上,提交历史放在目标分支最后
把目标分支合并到自己分支上,提交历史合并成一个新的提交
原理
1. 检出当前分支 2. 临时保存当前分支的提交历史 3. 检出base分支 4. 将当前分支的提交逐个添加到base分支上 5. 检出当前分支 6. 将临时保存的提交历史删除,改为指向rebase后的提交
1. 检出当前分支 2. 合并base分支到当前分支,生成一个merge提交
提交历史
简洁线性,所有提交按时间排列
保留完整分支历史,存在merge提交
优点
清晰可读的历史,方便代码审查
保留完整提交历史,易追溯变更
缺点
改写提交历史,可能导致冲突
多merge提交,历史复杂难读
使用场景
私有分支开发和维护
公共分支开发和合作

Tag

# 基于当前分支代码打上一个标签,名为 v0.1 git tag v0.1 # 推送标签至远程仓库 git push origin v0.1

Reset

# 回退到3个版本前的代码, 有多种 reset 模式,视情况而定 git reset HEAD~3 # 查看当前仓库修改状态 git status git add . git commit -m "fix something" # 强制推送至远端仓库 git push -f origin master

Reflog

# 查看所有提交记录 git reflog # 强制回退当前代码至相应版本 git reset --hard <commit ID> # 基于指定的版本创建新分支 git checkout -b new_develop <commit ID> git push origin new_develop

Revert

# 查看提交历史 git log # 回滚到指定的提交 git revert <commit ID> # 推送至远程 git push origin master

Stash

# 暂存当前分支的修改 git stash # 切到 master git checkout master # 拉取更新 git pull origin master # 创建热修复分支 git checkout -b hotfix # 修复bug,提交,切回 master git checkout master # 将 hotfix 分支合并进 master git merge hotfix git push origin master git branch -d hotfix # 切回 develop 分支 git checkout develop # 恢复暂存的修改内容 git stash pop # 查看暂存修改列表 git stash list # 恢复指定的修改 git stash apply stash@{1}

Commit

# 在刚刚提交的提交中发现问题并修改,不想产生新的提交 git add . # 修改最近的提交 git commit --amend # 强制推送 git push -f origin master

Chery-pick

# 查看提交历史 git log # 切到 master git checkout master # 将指定提交捡(复制)来当前分支 git cherry-pick <commit ID> # 推送到远程 git push origin master
 
 

更多参考

notion image