git基础(待完善)

概念

软件控制管理SCM

版本控制

分为软件版本和文件版本。

软件版本 很好理解,比如 JDK1.8,17,20,又比如IDEA2021,IDEA2022等。

文件版本 指的是文件的历史副本,例如有一个文件叫 info.txt , 当我们修改了这个文件夹的内容,先生成一个副本info_v1.txt 再进行修改,目的是为了能够在发生错误的时候进行恢复数据。版本控制软件会帮我们自动完成文件版本号的升级。

集中式、分布式管理

VSS,CVS, SVN 属于集中式管理。中央服务器宕机后就不能用了

分布式管理 git

就是在本地也搭建一个仓库,即使中央仓库挂了,本地仓库还在,开发者仍然可以修改和提交代码,只不过提交到的是本地仓库,也就是commit, 那么如果要同步到中央仓库,就需要push操作。通常 一个项目就是一个仓库

安装git

1、git软件

2、git客户端:github desktop 可视化工具

desktop使用

desktop选项

本地仓库

1、克隆一个远程仓库到本地,即在本地搭建一个仓库

2、本地没有仓库,直接在本地创建一个新的仓库

3、本地有仓库,直接把本地的仓库导入到 desktop 工具中

1、创建一个本地仓库

点击首界面中的 create a new repositry on your local dirve

2、文件操作

提交文件

在仓库路径下,新建一个txt文件,并commit 到本地仓库中

删除本地文件

当我们删除本地仓库路径中的文件,git仓库发现文件对应不上,我们也需要提交一次。即删除文件也是一个文件版本

3、分支管理

不同的开发者开发同一个项目中的不同功能 , 项目中有一个 统一的版本库(通常是master) 来管理项目中的所有文档和代码。

假设1: 为了防止文件损坏和丢失,我们把每次的修改提交到统一版本库中,这样提交记录会非常混乱,一会A提交一会B提交,不利于定位提交记录。

假设2:不同的开发人员可能会用到同一份文件,每次都提交到统一版本库,就会容易出现冲突,频繁的冲突影响效率。且频繁的修改会导致统一版本库产生大量的版本信息,仓库的容量也就越来越小。有什么办法解决呢?答案是分支管理

分支管理模型下,只需要在最后进行一次合并即可

案例:

1、从master中创建两个分支,并在各个分支建一个common.txt文件,然后提交到各自的分支

2、合并。选择master分支,点击下方的 merge 操作 ,先合并 order

3、再合并user,这时候因为有都是对相同的文件操作,出现了冲突 conflict

4、点击merge,然后查看冲突的文件内容比对

5、去掉多余的提示内容,此时就不再提示冲突了

继续合并即可。 Abort merge 表示中止合并

4、标签

commit的操作可以添加提示信息,但是合并操作是由系统自动完成的,并不能修改提示信息

 为一次操作创建标签tag

选择任意一次操作记录,可以是merge,可以是commit,delete。这里选择merge操作,右键create a tag

这样就能清晰看到每一次操作都做了什么

5、远程仓库 github

1、登录git

2、创建仓库后,直接在git上创建文件,并写入内容,也可以修改内容

3、创建分支

4、本地关联远程仓库

打开desktop, file-->option-->sign in github

然后我们需要把远程仓库的代码拉下来,点击 file-->clone a repositry, 选中github上的仓库,也可以用url方式

在本地仓库新增文件后,commit到本地仓库,还需要一次push操作才能同步到远程仓库

6、远程仓库gitee

gitee俗称码云。与github类似

git-版本号

git的版本号由40位 16进制数组成,前两位定位文件夹,后38位定位文件名。

例如下面这个 1b9bfb4 。前两位是 1b ,也就是文件夹位置

找到1b开头的文件夹

1b 文件夹中,找到了我们提交的文件版本号9bfb4....

文件操作

前面找到了对应版本号的文件,直接打开是乱码, 我们需要使用git自带的工具 git bash来查看这个文件

1)回到仓库的根路径,右键 git bash here

2)输入命令 git cat-file -p 完整的版本号

解释:

  • cat-file 表示查看文件命令

  • -p 表示友好的查看文件

  • 40位长度的版本号

结果解释:

tree 后面的版本号:表示文件的状态版本号

parent: 表示仓库的上一次提交版本号

3)上一步得到的是文件的完整提交信息, tree后面跟着一串也是版本号 ,继续查看这个新的版本号信息

git cat-file -p 新的40位版本号

解释:

100644: 100表示普通文件,644表示文件权限,

blob: 当前文件是普通文件块对象

后面跟着的字符串:表示版本号

README.md、local-test.txt、test.txt 表示对应的文件,即每个提交的文件都有一个最新的版本号

4)继续用git cat-file -p查看第三步得到的版本号信息,得到文件的内容

git删除操作并没有删除文件,只是文件状态不再指向那个被删除的文件

分支操作

HEAD是工作目录,里面记录当前使用的是哪一个分支。通过git checkout命令可以改变指向,也可以直接打开HEAD文件进行修改

publish是第三方图形客户端提供的便捷命令 ,仅限首次推送一个新分支 ,等同于命令

git push -u origin <你的新分支名>

命令

仓库操作

初始化仓库

git init

此时 HEAD文件的内容指向master分支,但是我们并没有master这个文件,因为此时没有任何提交记录。

拉取远程仓库代码

git clone 仓库url

配置操作人信息,在仓库目录下的config文件中可以看到信息

git config user.name hhy
git config user.email 1095956904@qq.com
​
git config  global user.name hhy

这种操作只会对当前仓库生效,如果要让所有仓库都用同一个操作人 ,增加 -- global参数 ,并且在C盘users用户下的.gitconfig文件可以看到

文件操作

将工作区文件放到暂存区

git add 文件名

将文件从暂存区撤回工作区, 并非磁盘上的移动,只是逻辑上的移动(类似于指针指向)

git rm --cached a.txt

提交暂存区中的文件

git commit -m 描述    //-m表示comment描述提交信息

查看暂存区状态

git status

查看提交的记录

git log
git log --oneline //每次提交的记录只显示一行
git log 标签

误删操作

本地误删文件,远程仓库还保存有这个文件的情况下:

git restore 文件名

git revert 版本号    //表示想要回滚到的版本号的上一个版本号

分支操作

删除

git branch -d 分支名

标签

给某个版本号增加标签

git tab 标签内容 版本号

查看所有标签

git tag

删除标签

git tag -d 标签名

创建某个标签的分支

git checkout -b 标签名

日志

git log
git log --oneline //每条记录只显示一行
git log 标签  

远程仓库

git push origin  //推送到远程仓库, "origin"名称可以修改,他表示某个远程仓库url的指代,在config文件中查看
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值