Git使用指南

本文介绍了Git的概述,包括其作为分布式版本控制系统的特性。详细讲解了在Mac上配置Git的过程,包括安装、全局和局部配置,以及SSH密钥的生成和添加到远程仓库。此外,文章还提到了Git的基础操作,如初始化、添加、提交和分支管理。

1. git概述、初始配置和基础组建

1.1 git概述

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

集中式版本控制系统:SVN,CVS
版本库是集中存放在中央服务器,本地没有历史版本,因此必须联网才能工作,如 commit。若服务器损坏、被黑,则会造成代码丢失。

分布式版本控制系统:GIT
分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。

1.2 初始化配置

git只是进行代码版本控制的工具,要使用git对版本进行控制,需要配合使用版本控制仓库:github、gitee(国内)、gitlab…
git支持在不同操作系统下进行代码管理,其中包括:mac、linux、windows。

1.2.1 Git Mac配置

  1. git 安装
brew install git
  1. 设置全局配置
git config --global user.name KylePade
git config --global user.email 73490**73@qq.com
  1. 配置某个文件夹本地local的账号和邮箱,用于实现多个仓库的使用
git config --local user.name lihp
git config --local user.email lihp@qq.com
  1. 罗列当前git配置具体信息:
git config --list
# 下列为显示出来的具体信息
credential.helper=osxkeychain
user.email=73490**73@qq.com
user.name=KylePade
safe.directory=/opt/homebrew/Library/Taps/homebrew/homebrew-core
safe.directory=/opt/homebrew/Library/Taps/homebrew/homebrew-cask
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
core.precomposeunicode=true
user.name=lihp
user.email=lihp@**.com
  1. 配置ssh安全外壳协议
    首先查看电脑是否已生成过密匙:
cd ~/.ssh
open .

若文件夹为空,则表示未生成过密匙。~表示根目录。
输入以下命令生成密匙:

ssh-keygen -t rsa -C "k******in@qq.com"

然后会弹出:

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/*****/.ssh/id_rsa): 

这是让你输入一个文件名,用于保存刚才生成的 SSH key 。默认就行,直接回车进行下一步;然后就会默认生成id_rsa和id_rsa.pub两个秘钥文件。
这时候会自动在根目录创建一个.ssh文件夹,但是是隐藏的,会提示:

Created directory '/Users/*****/.ssh'.
Enter passphrase (empty for no passphrase):

紧接着会让你输入一个密码,用于使用ssh传文件时加密使用。每次传输文件都需要输入,如果不怕麻烦可以设置,但是一定要记下。我个人不建议设置,直接回车跳过。紧接着还会让你输入一次密码,以确认上一步输入的密码:

Enter same passphrase again:

如果上一步没设置密码,这里直接回车就行,此时会收到提示:

Your identification has been saved in /Users/*****/.ssh/id_rsa.
Your public key has been saved in /Users/*****/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:*******************************************************
The key's randomart image is:
+---[RSA 3072]----+
|      ***********|
|     ************|
|        *********|
|       **********|
|        S  +.o   |
|       . .. o.o  |
|           . ... |
|            .E . |
|              .  |
+----[SHA256]-----+

提示密匙已保存,并提示保存路径,同时展示密匙。此时再输入命令:

cd ~/.ssh
open .

此时~/.ssh文件夹下就会出现id_ras和id_rsa.pub两个密匙文件。

  1. 添加ssh到github、gitee或者gitlab等等代码仓库中;

  2. 然后测试一下SSH key,输入指令:

ssh -T git@github.com

然后会提示:

*****@MacBook-Pro Git % ssh -T git@github.com
The authenticity of host 'github.com (20.205.243.166)' can't be established.
RSA key fingerprint is SHA256:*********************************************.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

输入yes回车,注意此处的git@github.com不是个人邮箱。
然后会先提示警告:

Warning: Permanently added 'github.com,20.205.243.166' (RSA) to the list of known hosts.
Hi ********! You've successfully authenticated, but GitHub does not provide shell access.

这是由于没有设置ssh操作密码,可以忽略。警告完后,会提示你已经成功验证。至此Git相关的配置就已经全部完成。

1.2.2 Git Windows配置

1.2.3 Git Linux配置

与配置mac的相同,唯一不同的地方在与安装的时候,linux使用的apt-get来进行安装;

1.3 基础组建

1.3.1 基础概念

在这里插入图片描述

  • 工作区,平时存放项目代码的地方
  • 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
  • 仓库区(或版本库),安全存放数据的位置,这里面有你提交到所有版本的数据。其中 HEAD 指向最新放入仓库的版本
  • 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

1.3.2 git中的对象概念

Git 对象
链接:https://jingsam.github.io/2018/06/03/git-objects.html

Git 对象包含三种:数据对象、树对象、提交对象
数据对象相当于文件内容,树对象相当于文件目录树,提交对象则是对文件系统的快照。
Git中的数据对象解决了数据存储的问题,树对象解决了文件名存储问题,提交对象解决了提交信息的存储问题。
数据对象

  • 数据对象是文件的内容,不包括文件名、权限等信息
  • Git 会根据文件内容计算出一个hash值,以 hash 值作为文件索引存储在 Git 文件系统中
  • 相同的文件内容的 hash 值是一样的,因此 Git 将同样内容的文件只会存储一次
  • git hash-object 可以用来计算文件内容的 hash 值,并将生成的数据对象存储到 Git 文件系统中
$ echo 'version 1' | git hash-object -w --stdin
83baae61804e65cc73a7201a7252750c76066a30
$ echo 'version 2' | git hash-object -w --stdin
1f7a7a472abf3dd9643fd615f6da379c4acb3e3a
$ echo 'new file' | git hash-object -w --stdin
fa49b077972391ad58037050f2a75f74e3671e92

树对象

  • 树对象是文件目录树,记录了文件获取目录的名称、类型、模式信息
  • 使用 git update-index 可以为数据对象指定名称和模式
  • 使用 git write-tree 将树对象写入到Git文件系统中
$ git update-index --add --cacheinfo 100644 83baae61804e65cc73a7201a7252750c76066a30 test.txt
$ git write-tree
d8329fc1cc938780ffdd9f94e0d364e0ea74f579

提交对象

  • 提交对象是用来保存提交的作者、时间、说明相关信息
  • 可以使用 git commit-tree 来将提交对象写入到 Git 文件系统中
  • commit-tree 除了要指定提交的树对象,也要提供提交说明
$ echo 'first commit' | git commit-tree d8329fc1cc938780ffdd9f94e0d364e0ea74f579
db1d6f137952f2b24e3c85724ebd7528587a067a

2. Git基础操作

git init							#初始化本地git仓库
git add -A							#将最新修改的内容加入暂存区
git commit -m "first commit"		#提交最新修改到本地仓库
git status							#查看当前仓库的状态
git push							#将当前本地仓库推送到远程仓库上
git pull							#从远程仓库拉取最新的代码
git stash							#隐藏当前的修改

3. Git分支操作

git通过分支操作,满足开发过程中不同开发人员的代码合并,将代码

git checkout master				
git checkout feature/f1
git checkout 

参考其他博客:
链接: https://blog.youkuaiyun.com/Anchor_Yin/article/details/120304116

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

少年沛

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

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

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

打赏作者

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

抵扣说明:

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

余额充值