Git 常用命令整理

✨ Git 是一款代码版本控制工具,常用于团队协作开发。本文主要是整理的一些常见的 Git 命令,这些命令覆盖了 Git 常用的操作场景,可以帮助开发者更好地使用 Git 进行版本控制和协作开发。

Git 作为代码版本控制工具,也是要经常打交道的存在。虽然在各类 IDE 中已经将其大部分操作实现了很好的图形化用户交互,但命令行作为与 Git 打交道的基础,还是不可或缺。在此将常用的一些场景命令整理一下。

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
比较项rebasemerge
定义把自己的分支变基到目标分支上,提交历史放在目标分支最后把目标分支合并到自己分支上,提交历史合并成一个新的提交
原理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


更多参考