前端程序员 必须掌握的Git命令

91 阅读2分钟

大家好,我是右子。

git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。

我们在项目的开发中都会用到,一起来看看这些命令吧。

git clone

作用
  • git clone 克隆并下载远程分支的命令。
用法
  • git clone 远程地址
  • git clone 远程地址 -b 分支名
解释
  • git clone 时想要拉取执行分支,需要加上 -b 分支名
代码执行
# 拉取release分支代码
$ git clone https://xxx/p.git -b release

git fetch

作用
  • git fetch 是拉取远程的命令。
用法
  • git fetch 远程主机名
  • git fetch 远程主机名 分支名
解释
  • 将远程主机的更新,全部拉取到本地。
  • 输入的时候可以省略[远程主机名],因为会默认拉取克隆(git clone)的远程仓库
经验总结

git fetch 只更新了本地远程分支,不会更新本地分支。

但是我们的目的一般是把远程分支的代码拿下来开发,所以在执行了git fetch的时候,还需要执行git merge origin master。

git fetch之后,本地会存在一个FETCH_HEAD,它记录了远程仓库的最新状态。

代码执行
# 拉取远程分支
$ git fetch origin
# 查看本地分支信息
$ cat .git/refs/heads/master
# 查看本地远程分支信息
$ cat .git/refs/remotes/origin/master

git pull

作用
  • 拉取并且合并代码到本地开发。
用法
  • git pull
  • git pull 远程主机名 远程分支名:本地分支名
解释
  • git pull 将远程更新拉取到本地并合并,也可以理解为执行了git fetch和git merge两部操作。
代码执行
# 拉取全部更新 并且 合并
$ git pull
# 拉取远程分支 并且 合并到 指定的本地分支
$ git pull origin release:dev

git pull 可能会存在弊端,容易将本地的修改覆盖掉,因为更新了本地的远端和本地分支的代码。
建议大家视情况,谨慎选择你的命令操作。

git rebase

作用
用法
解释
  • git rebash 会去找到两个分支的公共的“祖先”,把之后的分支全部截取下来,嫁接到目标分支最新的提交后面。
  • 特点是他们修改的内容是一样的,但是commit号是不同的。因为在 rebase 的过程中,git会把两个桥接的节点进行一个新的commit的创建。
代码执行
$ git rebash origin master

git merge

作用
用法
解释
  • 比如说,我们将dev合并到master分支。这样就会保留原有分支的提交树结构。
  • 所以如果说用merge的有弊端的话,那就是当分支之间进行了大量的merge的时候,分支结构在看上去会显得很乱,很庞大。你如果追求这个,可以使用git rebase命令。
代码执行
git merge origin master

git blame

作用
  • 如果你想知道某行代码是哪个账号提交的,可以使用 Git 的 "blame" 命令。
  • "blame" 命令会显示每一行代码的修改历史,包括最后一次修改的时间、账号和提交信息。
用法
解释
  • "blame" 命令只能查看已经提交到版本库中的代码的修改历史,如果还没有提交,则无法查看。
代码执行
git blame index.js -L 10,10
解释

其中,"fce889fa" 是提交的哈希值,"John Doe" 是提交者的名字,"2021-01-01 12:34:56 +0800" 是提交的时间,"10" 表示是第 10 行代码。

fce889fa (John Doe 2021-01-01 12:34:56 +0800 10) int main() {