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配置
- git 安装
brew install git
- 设置全局配置
git config --global user.name KylePade
git config --global user.email 73490**73@qq.com
- 配置某个文件夹本地local的账号和邮箱,用于实现多个仓库的使用
git config --local user.name lihp
git config --local user.email lihp@qq.com
- 罗列当前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
- 配置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两个密匙文件。
-
添加ssh到github、gitee或者gitlab等等代码仓库中;
-
然后测试一下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
本文介绍了Git的概述,包括其作为分布式版本控制系统的特性。详细讲解了在Mac上配置Git的过程,包括安装、全局和局部配置,以及SSH密钥的生成和添加到远程仓库。此外,文章还提到了Git的基础操作,如初始化、添加、提交和分支管理。
920

被折叠的 条评论
为什么被折叠?



