Git仓库简介

1、工作区、暂存区、仓库

在这里插入图片描述

工作区:电脑里能看到的目录。

暂存区:工作区有一个隐藏目录.git,是Git的版本库,Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

仓库:远程服务器中的项目。

2、git版本控制

git版本控制一般有两个命令 reset 和 revert。reset 代表将当前节点“销毁”(回退,节点还存在),就像不存在一样;revert 代表创建一个新的节点,其中记录我要删除当前节点。其中reset 中有 三个参数需要注意:

--mixed 默认参数,重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。

--soft 回退到某个版本。

--hard 撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交。

执行 git reset HEAD
在这里插入图片描述

执行 git revert HEAD
在这里插入图片描述

撤销修改:

对文件做了修改,现在需要撤销修改:

git restore <文件名>

或者

git checkout -- 文件名

如果文件已经add,但还没commit,可以使用以下命令,撤销add,恢复到上一步状态:

"git restore --staged <file>

或者

git reset HEAD 文件名

如果已经commit,需要删除文件,

1、被提交到仓库的某个文件需要删除,可以使用 git rm 命令:
git rm <file>
git commit -m ""

2、如果只想从暂存区删除文件,本地工作区不做出改变,可以:
git rm --cached <file>

3、分支管理

3.1 创建/删除分支

一般 master 分支用于发布版本,开发都是其他他分支上进行,也会存在一些 bugFix 分支,feature 分支用于开发未来的功能。创建分支有以下三种命令:

git branch 分支名

git checkout -b 分支名

git switch -c 分支名

删除分支

git branch -d 分支名

3.2 分支管理策略

分支管理一般基于三个命令进行,分别未 merge、rebase、cherry-pick

3.2.1 merge

merge的合并方式默认是 fast-forward,即将master 指针直接指向当前节点。例如我们创建 readme.txt 文件,并且add 和 commit,此时创建分支 dev , 此时git 的 graph 如下;

git switch -c dev

在这里插入图片描述
我们对readme.txt 文件做修改,并切换到 master 分支,使用 git merge dev 命令,git 的graph 如下:
在这里插入图片描述

可以看到 git 并没有创建新的节点,而是将 master 指针快速移动到了dev分支,如果要保存开发记录,我们可以显示禁用掉 fas-forward 模式 ,即在merge 后加上参数 --no-ff

git merge --no-ff -m "说明文字" 分支名

此时,git的graph如下,可以看到,git创建了一个新的节点,继承了dev分支。
在这里插入图片描述

3.2.2 rebase

rebase比较有意思,翻译成中文名叫”变基“,我个人把他理解成剪切,就像 ctrl + x 一样,将当前分支黏贴到目标分支。这是原始的 graph。
在这里插入图片描述

我们使用以下命令:

git switch Feature

git rebase master

此时,git 的 graph 变为下面模样
在这里插入图片描述

可以,看到feature分支接到了master后面。需要注意的是,rebase 提供了 -i 参数,是”剪切”变得更加灵活,可以自己尝试一下。那么 rebase 和 merge 的区别在哪里?

假如master和feature开发了不同的功能,即两个分支没有文件冲突,和3.2.1的情况不一样(dev分支继承在master分支),此时我们执行命令:

git switch master

git merge feature

此时,git的 graph 如下所示:
在这里插入图片描述

3.2.3 cherry-pick

这个命令就比较简单了,他就相当于复制节点到当前分支。

需要注意的是我们在合并前都需要git commit 将暂存区的内容提交到分支中。

4、标签

分支可以移动,当一个节点打上标签后这个标签就在这个节点上,不会移动。那么我们只需要记住一些命令就好了:

#创建标签
git tag 标签名 commit_id

#指定标签信息
git tag -a <tagname> -m "blablabla..."

#删除标签
git tag -d 标签名

#推送某个标签到远程
git push origin xxxx

#删除远程标签,需要首先删除本地标签
git tag -d 标签名
git push origin :refs/tags/标签名

5、push、pull、fetch

如果要与远程仓库交互,就需要用到这三个命令,其中 pull 是 fetch 和 merge 的结合。

5.1 fetch

fetch 是从远程仓库抓取 origin/master 节点,

git fetch origin/[branch]

5.2 pull

git pull <远程主机名> <远程分支名>:<本地分支名>

5.3 push

将本地仓库推送到远程仓库,

git push <远程主机名> <本地分支名>:<远程分支名>

如果本地分支名与远程分支名相同,则可以省略冒号:

git push <远程主机名> <本地分支名>

删除远程仓库分支

git push origin --delete master

git push origin :分支名

自动创建远程分支并映射

git push --set-upstream  origin 分支名

强行覆盖远程分支

在git中,“push -f”的意思是“强制更新”,是“push -force”的缩写,该命令的作用是将自己本地仓库的代码直接推送至仓库,完全以该命令提交为准,之前提交都会被覆盖。

git push origin master -f

6、其他命令

  • git status 查看状态
  • git diff 查看文件改动
  • git log
  • git stash(暂存当前工作区)
  • 相对引用,git checkout master^2(切换父节点)

追踪远程分支:

git checkout -b 本地分支 远程分支

git branch -u 远程分支  本地分支

7、git log

显示分支图

git log --graph --pretty=oneline --abbrev-commit

8、关闭远程链接

git remote remove origin

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值