Git简介

Git是分布式代码管理工具
在这里插入图片描述
我的理解呢,就是一个给代码做备份的,更新迭代项目的时候可以随时回退找到以前的版本。

Git中分为三种状态:已修改、已暂存、已提交

关键词解释

1、commit节点
在Git中每次提交都会生成一个节点,多次提交就会生成一个线性节点(不考虑merge的情况)

在这里插入图片描述
C2节点包含C1提交内容,C3节点包含C1、C2提交的内容

2、HEAD
HEAD可以看做是指针,指针指向的节点始终是当前工作目录。
(HEAD指向C2,那当前的工作目录对应的就是C2节点)

3、远程仓库
github,gitee等就是远程仓库,可以作为中介。你可以在本地上开发,把项目提交到远程仓库上,然后在服务器上拉取。也可以直接提交到服务器上的远程仓库。

4、分支
分支的概念和HEAD类似,可以视为指针或引用,不同的是分支可以存在多个,HEAD只有一个。通常会根据功能或版本建立不同的分支。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Git命令

0、创建仓库
使用当前目录作为Git仓库,我们只需使它初始化

git init

使用我们指定目录作为Git仓库:

git init 目录

1、提交相关

添加文件到暂存区:

git add 文件路径

添加所有文件到暂存区:

git add .

撤销工作区改动:

git checkout -- 文件名

清空暂存区:

git reset HEAD 文件名

提交

git commit -m "该节点的描述信息"

2、分支相关

创建分支:
创建一个分支后该分支会与HEAD指向同一节点,

git branch 分支名

切换分支:

git checkout 分支名

创建一个分支后立即切换:

git checkout -b 分支名

删除分支:

git branch -d 分支名

3、合并相关
常用的合并命令大概有三个merge、rebase、cherry-pick

  • merge
    将某个分支或者某个节点的代码合并至当前分支
git merge 分支名/节点哈希值

在这里插入图片描述
(如果C3、C4同时修改了同一个文件中的同一句代码,这个时候合并会出错,因为Git不知道该以哪个节点为标准,所以这个时候需要我们自己手动合并代码)

  • rebase
git rebase 分支名/节点哈希值

与merge不同的是rebase合并看起来不会产生新的节点(实际上是会产生的,只是做了一次复制),而是将需要合并的节点直接累加

在这里插入图片描述

  • cherry-pick
git cherry-pick 节点哈希值

在这里插入图片描述
4、回退相关

  • 分离HEAD
    默认情况下HEAD是指向分支的,但也可以将HEAD从分支上取下来直接指向某个节点
git checkout 节点哈希值
//也可以直接脱离分支指向当前节点
git checkout --detach

相对引用:

//HEAD分离并指向前一个节点
git checkout 分支名/HEAD^

//HEAD分离并指向前N个节点
git checkout 分支名~N

如果开发过程发现之前的提交有问题,此时可以将HEAD指向对应的节点,修改完毕后再提交,此时你肯定不希望再生成一个新的节点,而你只需在提交时加上--amend即可,具体命令如下:

git commit --amend
  • 回退

将代码回到前一个提交

//回退N个提交
git reset HEAD~N

reset会使分支和HEAD一并回退

5、远程相关

  • clone
    远程仓库上拉取项目:
git clone 仓库地址
  • fetch
    fetch命令就是一次下载操作,它会将远程新增加的节点以及引用(分支/HEAD)的状态下载到本地
git fetch 远程仓库地址/分支名
  • pull
    pull命令可以从远程仓库的某个引用拉取代码,pull的本质就是fetch+merge
git pull 远程分支名

pull命令也可以通过rebase进行合并:

git pull --rebase 远程分支名
  • push

push命令可以将本地提交推送至远程

git push 远程分支名

push到github仓库的main上(github是自己指定的名字)

git push github main

6、配置远程仓库

显示所有远程仓库:

git remote -v

查看某个仓库信息:

git remote show 仓库名称

添加远程版本库:

git remote add 【自定义名称】【库的url】

删除修改远程版本库:

git remote rm name  # 删除远程仓库
git remote rename old_name new_name  # 修改仓库名

学习的链接:
https://mp.weixin.qq.com/s/AlV50I6FLxUwKi-F6802Aw
https://www.runoob.com/git/git-remote.html

最后编辑:2023年02月15日 ©著作权归作者所有