git阶段性学习

本文详细介绍了Git的基本操作,包括安装、创建项目、添加/还原文件、推送/获取、解决冲突和日志查看。此外,重点讲解了Git的分支管理和工作区概念,包括创建、切换、合并分支及解决冲突的方法。内容涵盖从本地到远程仓库的协作流程,强调了多人协作中版本控制的重要性。
摘要由CSDN通过智能技术生成

一:初步学习git

  Git 是一种工具,用来解决团队协作、分支管理、多设备文件、开发者代码丢失及想还原代码但是没有做过备份等这些问题的。

1.1git简介

  Git是分布式版本控制系统,Git 理论上是没有中心的,每一个设备都有本地仓库,任何一个设备的本地仓库出问题对其他设备都没有影响。而且,每一个设备都可以创建分支,Git 是一种工具用来解决团队协作、分支管理、多设备文件、开发者代码丢失及想还原代码但是没有做过备份等这些问题的。
在这里插入图片描述
  上图,Git 在电脑上为每个项目建了个本地仓库(一个项目就是一个文件目录,里面的文件都可以交给 Git 管理),每当你的项目完成一小段任务后就可以提交给本地仓库。然后你在服务器上建一个远程仓库(这里的服务器只是为了多台设备交流方便而设立的,本质上 Git 系统不依赖它),你将本地仓库的文件推送给远程仓库,其他人(设备)从这个远程仓库获取文件到他们的本地仓库,这样就实现了多个设备的文件同步。

1.2git的基本操作

安装git

Git下载网址: link.
点击下载网址,进入官网下载安装包。在这里插入图片描述
右键上图下载链接,使用“迅雷”下载,下载完毕后运行安装包,无限下一步即可,安装完毕后进入cmd命令窗口,输入Git,检查是否安装成功。

安装TortoiseGit

TortoiseGit是为 Git 做的用户界面程序,安装链接:link.
在这里插入图片描述
下载完毕先运行语言安装包,在运行TortoiseGit安装包,打开上面的页面下载 TortoiseGit 安装程序并运行,安装完成默认会自动运行“First Start Wizard”,这里先取消运行向导程序,语言选择中文
在桌面空白的地方右键鼠标,弹出菜单应该有这些选项了:

在这里插入图片描述

1.2.1创建项目

    首先在 GitLab 页面顶栏点击“+”符号创建一个 Group,然后在创建好的 Group 里创建我的第一个项目,同时要勾选“Initialize repository with a README”。
在这里插入图片描述

  创建项目之后复制项目的 URL,将项目克隆到本地,在本地硬盘上找一块空地右键鼠标,选择 “Git 克隆(clone)”,在弹出的窗口内粘贴 URL ,这样GitLab 上创建的项目被复制下来了!打开目录可以看到之前自动创建的 README.md 文件。
在这里插入图片描述

gitlab两种连接方式----ssh和http
ssh是一种相对对安全的方式,需要设置密匙。而http这种方式要求project在创建的时候只能选择“Public”公开状态,Private和Internal私有模式下不能使用http方式进行连接。

1.2.2添加新文件

  在 本地README.md 旁边创建一个文本文档,打开文档输入内容保存并关闭。在目录下空白区域右键鼠标,选择“Git 提交(commit) -> master”,将本地的修改内容提交到本地仓库主分支,在这里,我们勾选窗口下方“显示未受版本控制的文件”,然后勾选需要添加的文件。最后添加本次提交的日志信息,就可以提交了。
  这个选项的含义是:将本地的修改内容提交到仓库主(分支类似时间线的含义,Git 仓库默认有一个主分支,你可以从某个时间节点开始分裂出另一条分支,不同分支之间是平行世界互不干涉,除非你企图合并它们)。
  Git 并不会自动将所有处于项目目录下的文件纳入管理,哪些文件需要被 Git 管理需要用户自己指定。在这里,我们勾选窗口下方“显示未受版本控制的文件”,然后勾选需要添加的文件。最后添加本次提交的日志信息,就可以提交了。
在这里插入图片描述

1.2.3还原文件

  打开刚才添加的文本文档,删除所有内容保存并关闭文档。鼠标右键空白处,选择“TortoiseGit ->还原(revert)”,在弹出的窗口中勾选文本文档,然后点“确定”。再次打开文档,发现被删除的文本回来了!

1.2.4推送到远程仓库

  在 GitLab 页面,我们发现刚才添加的文件不在列表里,这是因为 Git 提交只是提交到本地仓库,如果希望同步给远程仓库然后再同步给其他设备,就需要执行推送命令。右键 “TortoiseGit->推送(push)”。
在这里插入图片描述
远端“origin”指的就是 GitLab 仓库,这是默认名称。直接点击“确定”即可推送。等操作成功后刷新 GitLab 页面,会看到添加的文本文档。

1.2.5获取与合并(☆)

  假设其他设备也连接了 GitLab,将文本文档删除并推送到远程仓库(你可以直接在 GitLab 页面删除文本文档)。现在我们在当前使用的设备上将这个删除行为同步下来。右键“TortoiseGit->获取(fetch)”(注意不是拉取):
在这里插入图片描述
  直接点击确定。然后你会发现……本地文件没有被删除?别急,右键“TortoiseGit->版本分支图”:
在这里插入图片描述

  origin 就是远程仓库的意思,你可以看到本地主分支落后于远程主分支了。刚才获取操作只是修改了远程分支,没有修改本地分支。现在需要执行一次“合并”将远程分支与本地分支合并。右键“TortoiseGit->合并(merge)”:
在这里插入图片描述
  直接点击“确定”。执行后可以看到文本文件成功删除了。再打开版本分支图,可以看到本地分支和远程分支合并了。

1.2.6解决冲突(☆)

  直接通过 GitLab 页面编辑器修改 README.md 内容,输入“remote”;在本地通过记事本修改 README.md 内容输入“local”。现在再执行 “获取”;然后再执行“提交”;现在打开版本分支图:
在这里插入图片描述
可以看到远程分支和本地分支分道扬镳了!现在我们再执行“合并”,会看到合并失败:
在这里插入图片描述
并弹出一个弹窗,提示我们解决冲突后再提交。关闭这些窗口,然后右键 “TortoiseGit->解决冲突(resolved)”:在这里插入图片描述
关闭这些窗口,然后右键 “TortoiseGit->解决冲突(resolved)”:
在这里插入图片描述
选中冲突文件,右键选择“编辑冲突”:
在这里插入图片描述
  在这个编辑冲突的窗口中,左上角是远程分支的文件内容,右上角是本地分支的文件内容,下方是合并后的内容。在每一块内容中,红色部分是冲突内容。右键红色区域,选择你要保留的版本,然后保存、标记已解决冲突、退出。
  现在还需要执行一次提交,注意删除自动添加的日志中 # 开头的行。提交完成后执行推送,将修改推送到远程仓库。现在再查看版本分支图,可以看到本地分支和远程分支合并了。

1.2.7log日志功能

在空白处右键tortoiseGit->show log,即可打开日志页面,日志可以显示远程库中所有被更改的具体内容,以及更改的人的ID,根据这些信息可以对各个版本所更改的内容进行对比,并可以右键选择还原到任何一个版本。
在这里插入图片描述

1.3git的简单应用

  学完以上这些基础操作流程后,我做了几个Git练习,发现了在实际操作中远没有按照想象的那么简单,需要请教前辈继续学习。
  在实际操作中,我做了1:日志功能的应用,做了5次提交每次都有修改,当第五次修改之后,与第二次修改进行对比,最终使用第二次的结果。在操作的过程中,我刚开始不清楚怎么比较,后来在操作中明白了,打开日志进行查看比较。
  2:解决冲突的应用,克隆出两份本地仓库,里面只包含一个文件,每个文件里各写一首唐诗,最终合并成一个文件。这个操作是对于我来说比较难掌握的,刚开始做上传,获取都成功了,当我重新演示了几遍后在上传获取都会失败,经过请教后我明白了:如果有两个本地仓库,这两个本地仓库都和远程仓库一样,当本地仓库1修改内容后传给远程仓库,然后本地仓库2修改文件后,本地仓库拉取远程仓库会出现冲突。这时需要这时候我们解决冲突,选择让两个修改的同时存在,然后再提交,推送,这时候远程库就有在一起的文件了。

二:git分支管理(☆☆)

  git分支管理主要学习的是:1:Git分支管理相关概念及操作流程2:在Git仓库中新建自己的分支,并进行分支合并,解决冲突。
  主要需要掌握:明确在哪个分支,要往哪个分支推;分支是怎么回事,远端分支和本地分支如何联系,什么是远端分支和本地分支;看一眼自己提交的东西到哪个分支了;为何会出现HEAD标识处于分离状态的现象,此种分离状态有何意义?

2.1相关概念

  git所有分支之间彼此互不干扰,各自完成各自的工作和内容。可以在分支使用完后合并到总分支(原分支) 上,安全、便捷、不影响其他分支工作。

2.2操作流程

  工作流程 :在工作区添加、修改文件;将修改后的文件放入暂存区域 add;将暂存区域的文件提交到本地仓库;将本地仓库的修改推送到远程仓库。
  添加新文件后,使用git指令需要将其记录在index中才能commit,即第一步就是通过git add先提交到暂存区。使用TortoiseGit时,对未在Index中的文件TortoiseGit依然可以commit。
在这里插入图片描述

2.3新建自己的分支、合并并解决冲突

在这里插入图片描述
  先获取在pull,出现分支,合并,解决冲突…
origin 就是远程仓库的意思,你可以看到本地主分支落后于远程主分支了。刚才获取操作只是修改了远程分支,没有修改本地分支。现在需要执行一次“合并”将远程分支与本地分支合并。右键“TortoiseGit->合并(merge)”。
本地分支1和本地分支2合并,12分别修改不同的内容
1:创建分支切换到所创建的分支:
$ git branch iss53
$ git checkout iss53

  • git checkout dev #切换到dev开发分支
    git pull
    git checkout master
    git merge dev #合并dev分支到master上
    git push origin master #将代码推到master上
    在这里插入图片描述
    在这里插入图片描述
    本地合并
    先tortoisegit-checkout(切换的意思),然后branch选择要合并的本地分支,然后在tortoisegit-merge(合并的意思),这里的branch选择要合并的分支。
    在这里插入图片描述
    在这里插入图片描述
    远程分支和本地某一个分支合并
    值得注意的是远程分支和本地分支必须对应,就是本地仓库abc
    ,远程仓库有相对应的abc。本地仓库a必须将本地仓库合并到远程仓库a,不能提交到远程仓库b。
    所谓的提交就是push上去了,严格说并不是叫合并。

远程分支和远程分支合并
远程分支a和远程分支b如果想合并,就先把远程a克隆到本地,再把远程分支b克隆到本地,然后相当于本地合并了再上传,也就是远程分支和本地分支的合并。

2.4所在分支及HEAD标识

本部分所介绍的是:HEAD、master 以及 Git 中非常重要的一个概念: branch。

  • HEAD 指向的 branch 不能删除。如果要删除 HEAD 指向的 branch,需要先用 checkout 把 HEAD 指向其他地方。
  • 每次删除都要git add.一下:
    在这里插入图片描述

2.4.1HEAD:当前 commit 的引用

右键‘git bash here’:
在这里插入图片描述
  第一行的 commit 后面括号里的 HEAD -> master, origin/master, origin/HEAD ,是几个指向这个 commit 的引用。其中这个括号里的 HEAD 是引用中最特殊的一个:它是指向当前 commit 的引用。所谓当前 commit这个概念很简单,它指的就是当前工作目录所对应的 commit。
  当前 commit 就是第一行中的那个最新的 commit。每次当有新的 commit 的时候,工作目录自动与最新的 commit 对应;而与此同时,HEAD 也会转而指向最新的 commit。当前 commit 在哪里,HEAD 就在哪里,这是一个永远自动指向当前 commit 的引用,所以你永远可以用 HEAD 来操作当前 commit。

2.4.2branch

  HEAD 是 Git 中一个独特的引用,它是唯一的。而除了 HEAD 之外,Git 还有一种引用,叫做 branch(分支)。HEAD 除了可以指向 commit,还可以指向一个 branch,当它指向某个 branch的时候,会通过这个 branch 来间接地指向某个 commit;另外,当 HEAD 在提交时自动向前移动的时候,它会像一个拖钩一样带着它所指向的 branch 一起移动。
  如果我们创建一个新的commit,最新的 commit (提交信息)被创建后,HEAD 和 master 这两个引用都指向了它,两个引用 origin/master 和 origin/HEAD 则依然停留在原先的位置。
branch 的创建、切换和删除:

  • 创建 branch 的方式是 git branch 名称 或 git checkout -b 名称(创建后自动切换);
  • 切换的方式是 git checkout 名称;
  • 删除的方式是 git branch -d 名称。

三:git的四个工作区

  本模块主要掌握:git的四个工作区workscape,index,repository,remote4个概念及基本流程。

3.1四个工作区的概念

  git的四个工作区分别是:Remote(远程仓库),Repository(本地仓库),Index(暂存区),Workspace(工作区)。
Remote(远程仓库):远程仓库是多个Git用户从各自本地仓库向上同步变更的地方。远程仓库的内容能够被分布在多个地点的处于协作关系的本地仓库修改。比起本地仓库,远程仓库通常旧一些,因此本地仓库修改完之后需要同步到远程仓库。
  远程仓库是唯一的。同一个项目通常我们会用同一个远程仓库。可以根据需要,多次将远程仓库克隆到不同的本地仓库。远程仓库不会对内容进行面向用户的更改,比如解决冲突。如果内容向远程推送时需要解决冲突,就必须要拉回到本地来进行冲突解决。
Repository(本地仓库):位于自己的机器,本地仓库保存了被提交过的各个版本,比起工作区和暂存区的内容,它更旧一些。首先是 git commit 同步 index 的目录树到本地仓库,然后通过 git push 同步本地仓库到远程仓库。
  内容一旦被创建或更新并且之后被暂存,他就准备好被提交到本地仓库中。本地仓库好的一面是他当前用户独占使用的一个源仓库,在用户对内容感到满意之前还能进行修改。之后会将内容发送到远程仓库,并在远程仓库可以给别的用户使用。在断网的情况下,也是可以提交到本地仓库的。但是如果本地没同步到远程仓库,如果本地仓库不小心被删除,就有可能导致数据丢失。
Index(暂存区):位于.git目录下的index文件,暂存区会记录 git add 添加文件的相关信息(文件名、大小),不保存文件实体,通过 id 指向每个文件的实体。使用 git status 可以查看暂存区的状态,暂存区标记了当前工作区中那些内容是被 git 管理的,当完成某个需求或者功能后需要提交代码,第一步就是通过 git add 先提交到暂存区。
  在这个场景中,用户将其在工作区中完成的变更放到暂存区。如果要对很多文件进行变更以便于修复一个bug,只改了一个小文件就上传了,将会导致仓库中造成混乱。而如果有了一个暂存区,当改了一个小文件,先放到暂存区,一直等到我们将所有要改的文件都放到暂存区再一起推送,这就不会导致仓库混乱。
Workspace(工作区) 即进行开发改动的地方,是当前看到的,内容也是最新的,平常开发就是拷贝远程仓库中的分支,基于该分支进行开发,在开发的过程就是在工作区的操作。

3.2基本流程

  • 在工作区添加、修改文件;
  • 将修改后的文件放入暂存区域 add;
  • 将暂存区域的文件提交到本地仓库 commit;
  • 将本地仓库的修改推送到远程仓库 push。
    在这里插入图片描述

四:通过Git对比之前版本文档修改内容

  两个版本的对比就是已经操作过了,想回到以前的版本。点击tortoise-show log点击想要回去的版本右键reset“”master“”to this…如果想看两个版本的对比就先红在绿。
在这里插入图片描述

五:多人协作共同维护同一个Git仓库

多人维护gitee:
  进入gitee中首先创建了新的分支,然后把仓库克隆到本地,克隆到本地以后进行下一步的操作。其实和git库一样。
1:从这里可以看到回答过的问题,红色框中就是。
在这里插入图片描述2:近期状态可以从这里看到,红色框中就是:
:

3:选择想要克隆的仓库,clone就可以。
在这里插入图片描述
然后再自己的仓库进行一些操作!上传到自己的仓库,上传到自己的分支即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值