git的学习笔记 | vegeone
0%

git的学习笔记

介绍

定义

​ Git是一个开源的版本控制系统,可以将Git理解为存储文件的仓库,方便多个用户将文件集中存储到服务器中,或从服务器下载文件副本到本地磁盘。

​ Git服务并不是简单地存储文件,它会记录每一次文件修改。用户可翻看历史版本的文件,或者删除某些历史修改以还原文件。

​ 例如,在实际开发过程中,会经常出现一些功能回退。就是以前好用的,现在却出现BUG的情况。

​ 通过翻看代码文件的历史版本,可较快速地定位哪次修改影响了这个功能,也能知道团队中哪个人做了这次修改。

关系

那么,Git、Gitlab、GitHub是什么关系呢

Git可以理解为系统核心,是没有界面的。

Gitlab、GitHub是在Git基础上建设的平台,里面包含Git服务,这些平台拥有更加完善的后台管理网站。也拥有更加丰富的功能,如项目管理、版本视图、权限管理等。

​ 所以我们一般不直接使用或部署Git服务,而是使用功能更加完善的Gitlab、GitHub平台服务,其中Gitlab支持私有化部署。

工作原理

Git是c/s(客户端-服务端)架构的服务,整体结构分4个部分:远程服务、远程仓库、本地Git客户端软件、本地仓库副本。

远程服务是Git的服务端,更具体的说,就是Gitlab、GitHub等平台,或者是自己在服务器安装的Gitlab。远程服务接受文件获取、上传等请求,并记录每个文件的修改。用户可通过远程服务提供的管理网站管理仓库、历史修改等。

远程服务端的文件是按仓库为单位存储的,用户可创建多个仓库,一个仓库可以简单地理解为一个文件夹,一个仓库下允许存储多个文件、创建多级文件夹目录。

本地Git客户端是安装在本地的软件,Git客户端是同步远程仓库与本地仓库副本的关键。用户需要通过Git客户端,从远程服务端克隆、更新本地仓库副本。也需要通过Git客户端,才能将本地仓库副本的修改同步到远程仓库。

本地仓库副本对应远程服务端中的一个仓库,实质上是根据远程仓库克隆到本地磁盘的一个文件夹。文件夹内的文件对应远程仓库的文件,文件夹内的文件是可以自由操作的,跟普通的文件操作没有区别。

常用操作

通过git上传文件

首先进入你的master文件夹下,右键打开“Git Bash Here” ,弹出命令窗口 ,输入如下语句进行上传

  1. git init :在此文件夹生成一个.git隐藏文件;

  2. git add . : 将文件添加到缓存区( 注意这个”.”,是有空格的,”.”代表这个test这个文件夹下的目录全部都提交,也可以通过git add 文件名 提交指定的文件);

  3. git status:查看现在的状态,也可以不看,随你啦,可以看到picture文件夹里面的内容都提交上去了;

  4. git commit -m “这里是注释”:提交添加到缓存区的文件

  5. git remote add origin https://xxx@xxx/test.git : 添加新的git方式的origin, github上创建好的仓库和本地仓库进行关联(此处使用的SSH代码)

  6. git push origin main: 把本地库的所有内容推送到远程仓库(github)上,即上传本地文件

更新仓库文件

首先进入你的main文件夹下,右键打开“Git Bash Here” ,弹出命令窗口 ,输入如下内容

输入 以下文本即可更新仓库

  1. git status
  2. git add -A
  3. git commit -a -m “update” : 能提交修改过,但是没有添加到缓存区的文件(修改过的就能提交)
  4. git push origin main -f

删除github中的某个文件(夹)

github上只能删除仓库,但是,却无法删除文件或文件夹,所以只能通过命令来解决。

首先进入你的master文件夹下,右键打开“Git Bash Here” ,弹出命令窗口 ,输入如下内容

  1. git pull origin main # 将远程仓库里面的项目拉下来
  2. dir # 查看有哪些文件夹
  3. git rm -r —cached picture # 删除picture文件夹
  4. git commit -m “删除了picture文件夹” # 提交,添加操作说明
  5. git push origin main # 将本次更改更新到github项目上去

合并两个分支

假设当前有两个分支main,branch1,branch1修改了README.md,main分支中文件内容为helol,branch1分支中文件内容为hello

  1. git branch # 查看分支名称

    * main

    branch1

  2. git checkout branch1 # 切换至branch1分支

  3. git branch

    main

    * branch1

  4. git merge main

    此时合并过程中会产生冲突

  5. git status # 获得有关冲突的更多信息

  6. cat README.md

    1
    2
    3
    4
    5
    6
    <<<<<<< HEAD
    hello
    ||||||| merged common ancestors
    =======
    helol
    >>>>>>> main
  7. 删掉其他内容,保留你最终想要提交的

  8. git commit -m “merged from main” # 提交到git

遇到的小问题

有时通过git bash进入后是以master状态进入,这导致在push的时候无法直接push到main分支,而且在git chekcout branch当中也无法找到main分支,此时可以通过git branch -M main来切换为nmain分支。

参考文献:

git 详解,10分钟学会

上传本地文件(夹)到GitHub和更新仓库文件 - 知乎 (zhihu.com)