Git学习笔记

Git学习笔记

原文链接菜鸟教程

打个游戏

简介

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。Git 更像是一个文件系统,每个使用它的主机都可以作为版本库,并且不依赖于远程仓库而离线工作。开发者在本地就有历史版本的副本,因此就不用再被远程仓库的网络传输而束缚。

Git 中的绝大多数操作都只需要访问本地文件和资源,一般不需要来自网络上其它计算机的信息。因为在本地磁盘上就有项目的完整历史,所以 Git 的大部分操作看起来就像是在瞬间完成的。

在多人协作的情况下,Git 可以将本地仓库复制给其他开发者,那些发生改变的文件可以作为新增的分支被导入,再与本地仓库的进行分支合并。

安装

https://www.runoob.com/git/git-install-setup.html

参考菜鸟教程的安装步骤,这里就省略。开发中重点需要Linux的git环境,所以要熟悉Linux中Git安装。

Windows直接官网下载然后安装即可

配置

$ git config --global user.name "runoob"
$ git config --global user.email test@runoob.com

这里一般配置与GitHub账号一致,可以参考该文章

  • 配置本地git用户名时,全局配置(–global)考虑该电脑上的工作主要push到哪个服务器,配置成跟那个服务器一致的用户名和邮件地址最好。
  • 如果除了主要push的服务器外,这台电脑上的工作还需要push到其他服务器,那么在具体的项目目录下,把用户名和邮件地址配置成和特定的服务器相同即可。

git --version查看版本号

工作流程

在这里插入图片描述

简单来说

  • 在工作目录中修改文件
  • 将文件快照存入暂存区
  • 找到暂存区的文件,将快照永久性存储到Git的仓库目录中

工作区:本机电脑的目录

暂存区:一般存放在 .git 目录下的 index 文件(.git/index)中

版本库:工作区有一个隐藏目录 .git,它就是版本库

使用git add指令之后,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。当执行git commit时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。

数据模型

快照

Git 将顶级目录中的文件和文件夹称作集合,并通过一系列快照来管理历史记录。在 Git 的术语中,文件被称为 blob 对象(数据对象),也就是一组数据。目录则被称为 tree(树),目录中可以包含文件和子目录。

在 Git 中,历史记录是一个由快照组成的有向无环图,如下:

o <-- o <-- o <-- o <---- o
            ^            /
             \          v
              --- o <-- o

o 表示一次 commit,也就是一次快照。箭头指向了当前 commit 的父辈。在第三次 commit 之后,历史记录分叉成了两条独立的分支,这可能是因为要同时开发两个不同的特性,它们之间是相互独立的。开发完成后,这些分支可能会被合并为一个新的 commit,这个新的 commit 会同时包含这些特性

对象和内存寻址

Git 在存储数据的时候,所有的对象都会基于它们的安全散列算法进行寻址。并且所有的快照都可以通过它们的哈希值来标记,为了方便引入"引用",指向commit的指针。它是可变的,可以被更新,指向新的commit。通常,master 引用通常会指向主分支的最新一次 commit。

所有的 git 命令都对应着对 commit 树的操作。

常用命令

  • workspace:工作区
  • staging area:暂存区/缓存区
  • local repository:版本库或本地仓库
  • remote repository:远程仓库

一般来说,常用的就是

git init # 初始化仓库
git add .  # 添加文件到暂存区
git commit -m "updated"  #将暂存区内容添加到仓库中

git status #查看是否还有文件未提交
git diff # 查看哪里做了修改

git clone "github address"
git log # 查看历史提交

git reset --hard HEAD^ # 回滚到上一个,上上个用HEAD^^
git reset --hard HEAD~100 # 回滚前一百个

git reflog #查看版本号
git reset --hard 版本号 #回滚
git restore # 撤销

git pull	#下载远程代码并合并
git push	#上传远程代码并合并

更多操作可以去官网或者下面阮一峰老师整理的常用 Git 命令清单

分支

代码库有且仅有一个主分支。所有提供给用户使用的正式版本,都在这个主分支上发布。Git主分支的名字,默认叫做Master。它是自动建立的,版本库初始化以后,默认就是在主分支在进行开发。(github默认是main,所以上传的时候需要将主分支改为main)

可以利用branch来创建分支、删除分支、查看本地分支、查看远程分支等。https://blog.csdn.net/chaogu94/article/details/111057918

git push参考文章

git branch #查看分支
git branch (branchName) #创建分支
git branch -r #只看远程分支
git branch -d (branchName) #删除
git checkout (branchName) #切换
git checkout -b (branchName) #新建并切换

合并分支

git checkout master # 切换分支到master,或者到你想要的任意一个分支
git merge pre_branch # 将分支合并
git branch -d pre_branch # 删除原先的分支

远程仓库

Windows

生成密钥,使用ssh-keygen -t rsa -C "123@example.com"命令敲三下回车,然后去到C盘下,用户文件夹内,找到.ssh文件夹,里面有公钥和私钥,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥

在这里插入图片描述

然后打开自己的github账号,setting下有SSH and GPG keys,取一个喜欢的名字,然后把公钥的内容粘贴进去就可以了。接下来创建新的仓库的时候,github会有提示如何连接到本地。

在这里插入图片描述

Linux

参考文章

  1. 安装

    • Ubuntu 安装 Git: apt-get install git
    • CentOS 安装 Git: yum install git
    • 查看 Git 版本信息: git version
    • 配置 Git 用户信息:
     git config --global user.name "woider"
     git config --global user.email "woider@gmail.com"
    
  2. 下载SSH,CentOS默认开启,可以忽略

    apt-get install ssh 
    
  3. 生成SSH KEY

    使用 ls -al ~/.ssh 命令查看 ssh key 是否存在,若存在则忽略这一步

    # 生成 SSH KEY
    ssh-keygen -t rsa -C "woider@gmail.com" 
    
  4. 查看SSH Key

    # 进入 /root/.ssh 目录,查看 id_rsa 和 id_rsa.pub 文件:
    
    root@localhost:~# cd /root/.ssh
    root@localhost:~/.ssh# ls -a
    
  5. 最后跟Windows一样,复制公钥去github配置即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mighty-X

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值