关于最常用的Git命令和操作的记录

本文介绍了Git的基础命令和分支操作,包括gitinit、gitclone、gitadd、gitcommit、gitbranch、gitcheckout等。同时讲解了如何处理分支冲突、合并、rebase和cherry-pick等进阶操作。此外,还涵盖了与远程仓库交互的fetch、push、pull等命令,帮助开发者更好地理解和使用Git。
摘要由CSDN通过智能技术生成

前言

git是一个版本控制工具,是我们在日常开发中常常会使用到的工具。一些和git相关的基础知识在这里就不再赘述了。这里主要介绍一些基础的命令,掌握这些基本命令后,基本就可以解决绝大部分开发场景下遇到的问题。

git的分支本质上是个指向commit对象的指针,和每个commit对象都有唯一的版本号。那么我们要对代码分支的操作,其实就可以想象成对一个链表的操作,无非就是对链表中的结点进行增删改查操作,或者把这个链表的结点加入到另一个链表中。

因此理论上,只要掌握了一些基本的操作命令,经过这些命令的排列组合,就能很好的解决各种问题了。

基本操作

​ 这里首先记录的是一些最最基本的git命令,要使用git基本就离不开这些命令。这里我只做了简单的说明,如果有不懂的,还需要自己去查找了解。

  • git init 创建一个本地仓库
  • git clone <仓库名> 克隆一个仓库,一般是把远程仓库克隆到本地。并会把远程仓库自动命名为默认的origin
  • git clone <仓库名> <目录名> 和上面一样。不同的是指定了仓库克隆下来之后,在本地的目录名(不指定默认为origin)
  • git add . 将当前目录下的所有文件加入暂存区(注意后面的.) 当然我们也可以指定文件加入暂存区,把 . 换成文件名就行了
  • git commit -m <注释> 提交你的代码,注释一般就用来描述这次提交干了什么

分支操作

​ git通过指针来保存分支,并通过Head指针来区别当前处于哪个分支。正如前言中所说,我们可以把分支看成链表,多个分支就是多个链表,用这种思路去思考,各种场景我们都能够用基础的几个命令去解决。遇到较为复杂的场景时,才需要去查找资料,这样能更好的提高效率。

下面先介绍查看分支的一些命令:

  • git branch -a 查看所在目录下的分支
  • git branch <分支名> 根据目录下当前分支,新建新分支
  • git log 查看提交的版本记录,可以通过该命令查找到某次提交的版本号(按q退出)
  • git log --oneline 更简洁的查看历史记录
  • git log --graph --oneline --decorate 可以理解为一个可以显示结构的版本提交记录

在分支切换的时候,最常见的问题是出现合并冲突。这部分知识这里也不做记录了,出现冲突,那么我们必须解冲突,这里建议使用一些idea去解,没必要折磨自己。

下面是分支切换相关操作:

  • git checkout <分支名> 根据分支名切换到指定分支
  • git checkout -b <分支名> 根据分支名,先创建新分支,再切换到新分支
  • git checkout -b <分支名> <版本号> 根据版本号,新建并切换到新的分支(版本号通过git log 查看)
  • git merge <分支名> 根据分支名合并。补充一下,如果要合并的分支B的提交,是当前分支A提交的直接后继,那么这种merge就会被称为快进(Fast-forward)
  • git status 查看因为冲突而未合并成功的文件
  • git branch -d <分支名> 根据分支名删除分支
  • git branch -D <分支名> 根据分支名强制删除某分支

下面是一些较为常用的进阶操作:

  • git rebase <分支名> 在a分支上执行rebase b,结果是将自己的提交变基提交到b上。当然,这并不会改变b的指针。关于rebase和merge的不同,可以自行了解,一般来说,使用rebase会使得提交记录看上去更简洁
  • git cherry-pick <版本号> 将其他分支的某一次提交挑拣加入当前分支上
  • git cherry-pick -n <版本号> 同样是将其他分支的某次提交加入到当前分支上,但区别是不会自动提交,还需要手动commit
  • git commit --amend 修改最近一次提交的注释和代码(如果要修改非最近一次提交的注释,就需要使用rebase)

这里额外说明一下,利用commit --amend的命令和cherry-pick的相关操作,可以解决很多问题。这部分可以深入了解一下。

远程仓库操作

​ git有远程追踪分支的功能。当我们和远程分支进行通信(例如pull 或者 push代码。就算作通信)时,git会保存一份存有远程仓库状态的本地分支。

例如远程仓库和本地仓库中都有一个master分支,那么在本地后就会有一个origin/master分支,作为远程分支的副本。

  • git fetch <远程仓库名> 更新关联的远程仓库的数据(不影响本地的其他分支,例如上面举的例子,使用该命令,就会更新origin/master分支)
  • git remote -v 查看目前存在的远程库库名
  • git remote add <远程仓库名> <远程仓库地址> 添加或者说新增远程仓库

下面是我们较为常用的push 和 pull命令

  • git push <远程仓库名> <本地分支名>:<远程分支名> 将本地分支推送到远程分支上
  • git push <远程仓库名> <分支名> 当本地分支和远程分支同名时,push命令就能简化成这个样子
  • git push --force <远程仓库名> <分支名> 将本地分支强行push到远程分支,不管有无冲突
  • git pull <远程仓库名> <远程分支名>:<本地分支名> 将远程分支拉取下来,该操作会自动进行merge操作,如果有合并冲突的话,pull操作会失败
  • git pull <远程仓库名> <远程分支名> 直接将远程分支拉取到当前分支

参考链接

菜鸟Git教程

Git - Book (git-scm.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值