Git 常用命令使用技巧

123 阅读5分钟

前言

“知识就是力量 —— 安琪拉”

Git 是现在最流行的版本控制工具,也是每一位软件开发者的标配,本文只介绍在日常工作中会涉及到使用技巧,不谈Git的内部实现。

旨在让刚入行或Git使用不熟练的开发同学能在未来的工作中避坑。下面会涉及到一些命名使用,建议读者在本地使用Git命令行实践一下,加深印象。

基本概念

图片

workspace:工作区,比如修改后的代码就会保存在工作区。

staging area:暂存区,执行add后代码就会保存在暂存区。

local repository:本地仓库,执行commit后代码会被保存在本地仓库。

remote repository:远程仓库,比如 github 仓库,执行push后代码就会将代码同步到远端仓库。

常用命令

下面介绍一些在实际开发过程中会接触使用到的Git命令,标识“常用”的命令建议重点了解。

安装 & 配置

  • git config: 获取和设置git配置。

获取 & 初始化

  • git init: 初始化本地git仓库。
  • git clone: 克隆项目到本地。

快照操作

  • git add: 提交内容到暂存区。【常用】
  • git status: 查看git工作区状态。【常用】
  • git commit: 提交暂存区内容至本地仓库。【常用】
  • git reset: 回滚代码,并且不会产生一次新的commit,但会将回滚前代码贮藏在工作区。
  • git revert: 回滚代码,并且会产生一次新的commit。

分支与合并

  • git branch: 输出本地分支信息,-a 输出所有分支(本地和远程仓库)信息。
  • git checkout: 从检出指定分支,-b 检出并新创建一个本地分支。【常用】
  • git merge: 合并指定分支。【常用】
  • git log: 输出分支commit记录信息。
  • git stash: 贮藏暂存区内容。
  • git tag: 获取和创建tag。

更新

  • git fetch: 拉取远程仓库分支代码至本地。【常用】
  • git pull: 拉取远程仓库分支代码至本地,并自动合并到工作目录,可理解为git fetch + git merge。【常用】
  • git push: 推送本地分支至远程仓库。【常用】
  • git remote: 获取仓库源和设置仓库源  。

patching

  • git cherry-pick: 将某一个commit提交内容应用到指定分支。
  • git rebase: 变基,比如在master执行git pull --rebase,那么远端合并的commit就会在一条基线上,如下图:

图片

常见问题处理

合并请求发生冲突

使用情况:在远端提交合并请求出现冲突无法自动合并,需要手动解决冲突。

/* 以 develop 合并 master 为例 */
git checkout develop    // 第一步切换到develop请求合并分支
git pull                // 第二步拉取develop远程分支代码
git merge origin/master // 第三步本地合并远程master分支
code .                  // 第四步使用vs code解决从图
git push                // 第五步推动本地develop至远程develop

经过以上本地代码解决冲突处理后,合并请求即可自动合并。

本地合并发生冲突

使用vscode直接在工作区处理,注意在解决冲突过程中需要原开发者和现开发者一起处理。

撤销commit

使用情况:commit信息书写错误,或者提交的代码不正确(注意,需要满足commit未推送至远程仓库条件,如果不满足需要考虑使用代码回滚)

// 第一步回退到上一个版本
git reset HEAD                     
// 第二步重新提交正确的commit
git add -A && git commit -m 'xxxxx'
  • HEAD 表示当前版本
  • HEAD^ 表示上一版本

代码回滚

使用情况:提交了错误代码,并且需要紧急回退代码,你可以通过git reset做回滚处理。

git log                  // 第一步找到要回滚的commit hash
git reset --hard [hash]  // 第二步执行回滚到指定hash
git push --force         // 第三步将回滚后内容推送到远程仓库

注意:使用--hard时会丢弃回退前提交

挑出需要的代码

使用情况:如果你犯了一个错误,就是将某个改动提交到了错误分支,你可以通过git cherry-pick将该提交应用到其他另一个分支。

git checkout master          // 第一步切换到正确分支
git checkout -b feature-xxxx // 第二步切换一个自己的feature分支,准备应用commit
git cherry-pick [hash]       // 第三步copy commit hash,替换命令行内[hash]
git push

代码暂存

使用情况:当自己本地代码开发到一半,需要切换其他分支处理事情,且不希望将未开发完内容提交一个commit,你可以通过git stash命令暂存内容。

git add -A                   // 第一步将工作区代码提交至暂存区
git stash save '暂存xxxx代码' // 第二步将暂存区代码贮藏
git checkout master          // 第三步处理完切换到提交stash的分支
git stash pop                // 第四步弹出贮藏区内容
git stash clean              // 第五步清空贮藏区内容

创建TAG

git tag -a 'v1.1.0' -m '1.1.0版本' // 第一步创建tag
git tag --push                    // 第二步推送tag至远程仓库

删除本地tag

git tag -d 'v1.1.0'

获取tag列表

git tag --list

第三方Git工具

tig:命令行工具

sourcetree:GUI Git 工具(推荐)。这一款软件也是目前作者在用的git工具,推荐的目的“优秀工程师都有良好的习惯”。

最后

图片

“ 欣赏一下成都难得的夕阳美景”