前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最详细GIT学习笔记

最详细GIT学习笔记

作者头像
楠羽
发布2024-01-02 09:19:37
1820
发布2024-01-02 09:19:37
举报
文章被收录于专栏:后端开发笔记后端开发笔记

1. Git简介

1.1. Git介绍

Git(读音为/gɪt/) 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

1.2. 主流的版本控制器

  • Git(分布式版本控制,没有中央服务器,可以离线提交)
  • SVN(集中式版本控制,有中央服务器,不可以离线提交)
  • CVS
  • VSS
  • TFS
  • Visual Studio Online

版本控制产品非常多,现在影响力最大且使用最广泛的Git.

1.3. Git和CVS、SVN的区别

Git是分布式版本控制系统,代码提交是在本地的(如此速度就快),当然生成补丁(patch)然后push到远程服务器上是需要联网的。 CVS、SVN是集中式版本控制系统,代码提交都是提交到远程服务器上,是需要一直联网的(如此速度就慢)(这里的一直联网不是说你写代码的时候要联网,而是说你提交代码的时候必须联网;但是git不同,git提交代码是本地的不需要联网,生成patch后push patch才需要联网,相当于svn的远程的集中服务器对于git来说,这个集中的远程服务器就在本地)

CVS、SVN这样的集中式版本控制系统,它的完整代码仓库(代码仓库不仅仅只包含了代码,还包含各个历史版本的信息等)在中心服务器上,一旦这个中心服务器挂了,也就是完整的代码仓库挂了,虽然你本地可能之前有从中心服务器上取得过代码,但是那些历史版本信息都没有了,而且你也无法再提交代码。 Git不同,Git没有中心服务器的概念,每一个git客户端(git节点)都含有一个完整的代码仓库(前提是你之前从远程git仓库fetch过代码),所以那些历史版本信息都在你本机上,假如哪一个git节点挂掉了,随意从其他git节点clone一个代码仓库过来就ok了, 那些原来的代码、版本信息之类的都还是完整的(当然如果你在这个挂掉的git节点上新增的代码是没有掉了的)

综上,Git的每一个节点(第一次从远程git仓库取得代码后,该git节点就是一个完整的代码仓库)相当于SVN的中心服务器,都包含完整的代码仓库。

1.4. Git的优点

  1. 适合分布式开发,强调个体。
  2. 远程服务器(公共的)压力和数据量都不会太大。
  3. 速度快、灵活。
  4. 任意两个开发者之间可以很容易的解决冲突。
  5. 离线工作,近乎所有操作都是本地执行。(当然提交远程服务器或者从远程服务器fetch代码是要联网的)。

2. Git下载与安装

可以从官方网站上找到对应自己的操作系统的GIT版本进行下载,下载网址:https://git-scm.com/downloads

下载之后开始安装:

1.下一步

2.选择安装路径,next

3.选择需要安装的组件,这里默认即可,next

4.选择菜单文件夹,这里默认即可,next

5.选择默认编辑器,默认推荐的即可,next

6.设置“新存储库中初始分支的名称”,默认推荐即可,next

  1. 设置path环境:

Use Git from Git Bash only:只通过GitBash使用Git

Git from the command line and also from 3rd-party software:使用windows系统的命令行工具(默认这项即可)

UseGit and optional Unix tools from the Command Prompt:二者都有,但是会罩层工具覆盖警告

  1. 选择安全密钥,默认推荐即可,next

9.选择HTTP传输后端,使用默认推荐OpenSSL库即可,next

  1. 配置结束转换行,默认windows即可,next

第一项:(windows系统选择)检查换行格式将windows格式的换行转换为unix格式的进行提交

第二项:(Unix系统安装选择)检查换行格式将原来不管什么格式的换行一律转换为unix格式的换行在进行提交

第三项:(非跨平台项目安装选择)不进行格式转换,检查出什么格式就提交什么格式

11.配置终端模拟器以使用Git Bash ,选择默认即可,next

  1. 选择git pull的默认行为,默认即可,next

13.选择git辅助工具,默认即可,next

  1. 配置附加选项,默认即可,next

15.执行安装

16.安装成功

17右键菜单,选择

  1. 进入编辑页面,即可进行GIT操作

3. 使用Git进行版本控制

3.1. 仓库分区

Git本地有三个工作区域:工作目录(Working Directory),暂存区(Stage/Index),资源库(Repository或Git Directory)。如果再加上远程的git仓库(Remove Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:

Workspace:工作区,就是平时存放项目代码的地方

Index/Stage:暂存区,用于临时存放你的改动,事实上它是一个文件,保存即将提交的列表信息

local Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里有你提交到所有版本的数据,其中HEAD指向最新放入仓库的版本

Remote Repository:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

以上四个工作区其实跟我们挂钩的只有工作区和远程仓库,暂存区和仓库区我们只需要通过命令操作即可

3.2. 初始配置

首次使用git先需要配置以下内容:

代码语言:javascript
复制
git config --global user.name "Your Name"  
git config --global user.email "email@example.com"

因为git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。注意git config命令的–global参数,用了这个参数,表示你这台机器上所有的git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。然后在本机会生成一个.gitconfig文件,里面包含了user.name和user.email的信息。

如果不加–global参数就只对当前项目有效。但通常都使用–global,避免每次都要重新配置。

3.3. 常用指令

3.3.1. 新建代码库
代码语言:javascript
复制
# 在当前目录新建一个Git代码库
$ git init # 新建一个目录,将其初始化为Git代码库

进入项目目录(注意这个前提)并输入:git init 该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。但是,在这个时候,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪。

3.3.2. 查看代码仓库状态

在执行其他操作之前,先来看一下状态:

代码语言:javascript
复制
$ git status

在Git中,分支是项目的一个版本,从这里的输出我们可以知道,我们位于分支的,master

我们每次查看项目的状态时候,输出的都是我们位于分支master上,接下里的输出表明,我们将进行初始项目的日叫,提交是项目在特定时间的快照。

Git指出了项目中未被跟踪的文件,因为我们还没有告诉他要跟踪那些文件,接下里我们被告知没有任何东西添加到当前提交里面,但我们可能需要将为跟踪的文件加入仓库

3.3.3. 将文件加入到仓库
代码语言:javascript
复制
# 添加指定文件到暂存区
$ git add [file1] [file2] ...# 添加指定目录到暂存区,包括子目录
$ git add .  # 将所有修改添加到暂存区   经常用此命令

命令 git add . 将项目中未被跟踪的文件都加入到仓库中,它不提交这些文件,而只是让git开始关注他们。现在我们检查这个项目的状态,发现Git找到了需要提交的文件的一些修改,标签 new file 表示这些文件是新加入的。

3.3.4. 执行提交
代码语言:javascript
复制
# 提交暂存区到仓库区
$ git commit -m [message]    # 提交暂存区的指定文件到仓库区

我们在执行 git commit -m "Started project" 的时候以拍摄项目的快照。标志-m 让Git接下里的消息(“Started project")记录到项目中的历史记录中,输出表明我们在分支master 上,而且有一个文件被修改了

简单解释一下git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

3.3.5. 查看提交历史
代码语言:javascript
复制
# 显示当前分支的版本历史
$ git log    # 显示commit历史,以及每次commit发生变更的文件

我们每次提交的时候,Git都会生成一个包含40字符的独一无二的引用ID,它记录提交是谁执行的,提交的时间以及提交的指定消息,并非在任何情况下你都需要所有的这些信息,因此Git提供一个选项,让我们能够打印提交历史条目的更简单的版本。

标志 --pretty=oneline 指定显示一项最重要的信息,提交的引用ID以及为提交记录的信息

3.3.6. 第二次提交

我们在Helloworld.java文件中加入一行代码

代码语言:javascript
复制
int num = 100;

查看状态

此处显示我们对Helloworld. java文件做了修改,但是并没有提交,所以接下来我们提交所做操作,并在查看操作。

这一步,我们执行了提交,并且在执行命令git commit 的时候指定了标志-am.标志-a 让Git 将仓库中所有修改了的文件都加入当前提交中,(如果我们两次提交之间加入了新文件,我们执行get add . 操作,将新文件加入到仓库中)标志-m让Git咱提交历史中记录一条消息。

查看状态

这时我们再查看项目的状态的时候,发现工作目录也是干净的,最后我们发现提交历史中包含两个提交。

3.3.7. 撤销修改最近版本

我们在Helloworld.java文件中加入一行代码

代码语言:javascript
复制
System.out.println(num);

查看状态

Git注意到我们修改了Helloworld.java,我么可以提交所做的修改,但是我们不提交所做的修改,而要恢复到最后一个提交,为此我们不对Helloworld.java执行任何操作,不删除刚添加的代码行,也不使用文本编辑器的撤销功能,而是在终端会话中执行如下命令:

代码语言:javascript
复制
# 撤销修改
$ git checkout .    # 能够让我们恢复到以前的任何提交

查看状态,同时查看文件中的代码也被撤销了

3.3.8. 撤销修改以前版本

我们可以检查提交历史中的任何一次提交,而不仅仅是最后一次,为此我们可以在命令git check末尾指定该提交的引用ID的前6个字符(而不是局点)。通过检查出以前的提交,我们可以对其进行审核么然后返回到最后一次提交,或者放弃最近所做的工作,并选择以前的提交。

如果要恢复到“Started project”需要以下几步:

首先,我们查看了状态,确认我们在分支master上,查看历史提交时,我们看见了两个提交。

然后,我们执行了命令 git reset --hard ,并在其指定了要永久性的恢复到的提交的引用ID的前6个字符。

接下来,我们在次查看状态,我们在分支master上,并且没有需要任何修改,

最后,我们再次查看提交的历史状态时候,我们发现我们处于重新开始的提交中,同时文件中的代码也恢复到最初状态。

3.3.9. 删除仓库

有时候,仓库的历史纪录被我们搞乱了,而我们又不知道如何恢复,这时候我们首先应该考虑百度一下,看看自己的问题出在那里,如果无法恢复,而且参与项目的人只有自己,可以继续使用这些文件,但需要将这些项目的历史纪录删除——删除.git 这不会影响任何文件的当前状态,而只会删除文件的所有提交,因此我们将无法检查出项目的其他任何状态。

为此,可以打开一个文件浏览器,并将目录.git 删除,也可以通过命令完成这个任务。但是这样做过我们需要创建一个新的仓库,以重新对这些修改进行跟踪。

代码语言:javascript
复制
$rm -rf .git  #-rf 强制删除文件

查看状态结果告诉我们这不是一个仓库,(git用来跟踪仓库的信息都存储在文件夹.git中,因此删除该文件夹也将会删除整个仓库),但是原来的Helloworld.java源文件不会被删除,可以继续构建新仓库进行版本控制。

4. Gitee代码托管平台

Gitee 是开源中国社区2013年推出的基于 Git 的代码托管服务,目前已经成为国内最大的代码托管平台,致力于为国内开发者提供优质稳定的托管服务。 它可以让你和其他人一起在远程或本地项目上进行协作。

官方网站:www.gitee.com/

本地仓库: 本机上某个存放代码的仓库。

远程仓库: 码云服务器上的代码仓库。

重要提醒:

当我们在本地操作(新增、删除、修改)文件、目录时,并将其提交(commit),只是提交到了本地仓库。注意:所有的改动只是放到了本地仓库,并没有上传到服务器的远程仓库。

当将本地仓库与远程仓库关联起来后,即可将本地仓库中的对代码的改动上传到(push)远程仓库,也可从远程仓库将对代码的代码改动下载(pull)下来。

4.1. 创建SSH key

由于本地Git仓库和Gitee仓库之间的传输是通过SSH加密的,所以需要先进行如下设置:在Git Bash下输入如下指令,成功后在用户主目录下,寻找.ssh目录,并在这个目录下找id_rsa和id_rsa.pub这两个文件,这两个就是 SSH Key 的秘钥对,id_rsa 是私钥,不能泄露出去,id_rsa.pub 是公钥,用于后续步骤,命令如下:

代码语言:javascript
复制
$ ssh-keygen -t rsa -C "zhangsan@163.com"

4.2. 登录Gitee账号

没有Gitee账号的,可以去官网注册一个。注册登录后,在个人主页—>个人设置---->SSH公钥,将上述步骤中的 id_rsa.pub 里面的内容复制粘贴到 3 号位置,在2号位置任意添加一个标题即可。

4.3. 在Gitee中创建远程仓库

登录Gitee,点击右上角的 + 号,再点击新建仓库

填写仓库名称,下面的路径默认,是否开源根据自己的需要,然后按照图中所示勾选

创建仓库成功会有命令提示,可以按照命令提示进行项目上传

按照以上指令进行文件上传

4.4. 克隆远程仓库项目

先创建远程库,从远程库克隆项目,通常指令如下:

代码语言:javascript
复制
#HTTP方式
$git clone https://gitee.com/yichunlinNeusoft/helloworld.git
#SSH方式
$git clone git@gitee.com:yichunlinNeusoft/helloworld.git

4.5. 在Eclipse中配置Git

首次从远程仓库上向eclipse克隆项目,可以选择引用项目import中的GIT选项

选择“克隆”clone选项

填写location(从gitee中直接复制),同时填写gitee的用户名和密码进行验证

选择对应分支,这里我们就选主分支master

配置域名(默认)

选择引入项目的方式(如果有空项目导入就选第一项)

项目导入成功

4.6. 在Eclipse中使用Git

在项目开发阶段,我们需要不断对远程仓库中的项目进行提交和下载,这是可以在eclipse中直接进行的,方法在右键菜单中,有Team选项,可以自己需要的功能进行选择

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-01-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Git简介
    • 1.1. Git介绍
      • 1.2. 主流的版本控制器
        • 1.3. Git和CVS、SVN的区别
          • 1.4. Git的优点
          • 2. Git下载与安装
          • 3. 使用Git进行版本控制
            • 3.1. 仓库分区
              • 3.2. 初始配置
                • 3.3. 常用指令
                  • 3.3.1. 新建代码库
                  • 3.3.2. 查看代码仓库状态
                  • 3.3.3. 将文件加入到仓库
                  • 3.3.4. 执行提交
                  • 3.3.5. 查看提交历史
                  • 3.3.6. 第二次提交
                  • 3.3.7. 撤销修改最近版本
                  • 3.3.8. 撤销修改以前版本
                  • 3.3.9. 删除仓库
              • 4. Gitee代码托管平台
                • 4.1. 创建SSH key
                  • 4.2. 登录Gitee账号
                    • 4.3. 在Gitee中创建远程仓库
                      • 4.4. 克隆远程仓库项目
                        • 4.5. 在Eclipse中配置Git
                          • 4.6. 在Eclipse中使用Git
                          相关产品与服务
                          代码托管
                          CODING 代码托管(CODING Code Repositories,CODING-CR)是为开发者打造的云端便捷代码管理工具,旨在为更多的开发者带去便捷、高效的开发体验,全面支持 Git/SVN 代码托管,包括代码评审、分支管理、超大仓库等功能。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档