Git基础

88 阅读4分钟

基本概念

在实际开发中,会使用 git 作为版本控制工具来完成团队协作。因此,对基本的 git 操作指令进行总结是十分有必要的。

git 的通用操作流程如下图:

git

主要涉及到四个关键点:

1.工作区:本地电脑存放项目文件的地方,比如 learnGitProject 文件夹;

2.暂存区(Index/Stage):在使用 git 管理项目文件的时候,其本地的项目文件会多出一个.git 的文件夹,将这个.git 文件夹称之为版本库。其中.git 文件夹中包含了两个部分,一个是暂存区(Index 或者 Stage),顾名思义就是暂时存放文件的地方,通常使用 add 命令将工作区的文件添加到暂存区里;

3.本地仓库:.git 文件夹里还包括 git 自动创建的 master 分支,并且将 HEAD 指针指向 master 分支。使用 commit 命令可以将暂存区中的文件添加到本地仓库中;

4.远程仓库:不是在本地仓库中,项目代码在远程 git 服务器上,比如项目放在 github 上,就是一个远程仓库,通常使用 clone 命令将远程仓库拷贝到本地仓库中,开发后推送到远程仓库中即可;

git

因此,经过这样的分析,git 命令可以分为这样的逻辑进行理解和记忆:

1.git 管理配置的命令;

2.几个核心存储区的交互命令:

3.工作区与暂存区的交互;

4.暂存区与本地仓库(分支)上的交互;

5.本地仓库与远程仓库的交互。

本地基本操作

初始化本地库 ​

git init

查看状态 ​

git status

添加暂存区 git add

  • 将当前目录及其子目录下所有变更添加到暂存区
git add .
  • 将本地库所有变更添加到暂存区
git add -A
  • 指定文件添加暂存区
git add file1 file2 ...

提交本地库 git commit

  • 提交所有变更
git commit
# or
git commit -m '日志信息' -a
  • 提交当前目录及其子目录的变更
git commit -m '日志信息' .
  • 提交指定文件
git commit -m '日志信息' fileName

分支命令 ​

创建分支 ​

  • 基于当前分支创建分支
git branch 新分支
  • 基于指定分支创建分支
git branch 新分支 已有分支
  • 基于某个 commit 创建分支
git branch 新分支 commitID
  • 基于当前分支创建分支并切换到新分支
git checkout -b 新分支
  • 基于远程分支创建新分支
git checkout -b 新分支 别名/远程分支名
git checkout -b test_2023 origin/test_2023

查看本地分支 ​

git branch -v

删除分支 ​

  • 安全删除本地分支
git branch -d 分支
  • 强制删除本地分支
git branch -D 分支

切换分支 ​

git checkout 分支名

合并分支 ​

合并本地分支 ​

  • 将 A 分支合并到当前分支,且为 merge 创建 commit
git merge A
  • 将 A 分支合并到 B 分支,且为 merge 创建 commit
git merge A B
  • 把当前分⽀基于 B 分⽀做 rebase,以便把 B 分⽀合⼊到当前分⽀
git rebase B
  • 把 A 分⽀基于 B 分⽀做 rebase,以便把 B 分⽀合⼊到 A 分⽀
git rebase B A

合并远程仓库分支 ​

  • 将远程指定分支与本地当前分支合并。可用于在合并到团队公共分支之前解决冲突问题,在本地合并公共分支先解决掉冲突。
git merge --no-ff origin/develop_2023-03-12

远程仓库交互 ​

git remote ​

  • 查看所有远程仓库地址别名
git remote -v
  • 为远程仓库起别名
git remote add 别名 地址
  • 删除远程仓库别名
git remote remove 别名
  • 修改别名
git remote rename 旧名 新名

git clone ​

  • 克隆远程仓库到本地
git clone 地址
  • 克隆远程仓库指定分支到本地
git clone -b 远程仓库分支名 地址

git pull ​

  • 拉取远程分支,并与本地分支合并
git pull 别名 分支名

git push ​

  • 推送本地指定分支到仓库指定分支
git push 别名 本地分支:远程分支
  • 如果远程分支被省略,表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建
git push origin master
  • 如果省略本地分支名,等同于推送一个空的本地分支到远程分支,表示删除指定的远程分支,等同于
git push origin :master
# 等同于
git push origin --delete master
  • 强制推送
git push --force origin master
  • 直接使用仓库地址推送,无需起别名
git push git@github.com:<USERNAME>/<REPO>.git master:main