目录
[初次运行 Git 前的配置](#初次运行 Git 前的配置)
[获取 Git 仓库](#获取 Git 仓库)
[1. 工作区(Working Directory)](#1. 工作区(Working Directory))
[2. 暂存区(Stage/Index)](#2. 暂存区(Stage/Index))
[3. Git 目录(Repository 或 .git 目录)](#3. Git 目录(Repository 或 .git 目录))
Git
Git 是一个开源的分布式版本控制系统(DVCS),用于高效地处理从小到大的所有项目。Git 由林纳斯·托瓦兹(Linus Torvalds)创建,最初是为了管理 Linux 内核的开发而设计。Git 允许开发者在本地进行代码的版本控制,包括提交、回滚、分支、合并等操作,而且支持多用户协作,通过网络进行代码的共享和同步。
GitHub
GitHub 是一个基于 Git 的开源代码托管平台,由 GitHub 公司开发和维护。GitHub 提供了强大的代码管理、协作和分发功能,支持代码仓库的创建、版本控制、问题跟踪、功能请求、合并请求(Pull Requests)、代码审查、项目管理等。GitHub 还拥有庞大的开发者社区,是开源项目的主要托管平台之一。GitHub 提供了免费和付费两种服务模式,付费服务提供更多的功能和资源。
GitLab
GitLab 是一个开源的代码托管平台,提供了与 GitHub 类似的功能,但它是完全开源的,并且可以部署在自己的服务器上。GitLab 允许企业或组织拥有自己的代码仓库管理平台,实现代码的自给自足和安全可控。GitLab 提供了代码托管、代码审查、CI/CD(持续集成/持续部署)、问题跟踪、项目管理等功能,并且支持多种编程语言和框架。GitLab 社区版和企业版都提供了丰富的功能,企业版还提供了额外的企业级支持和功能。
Gitee
Gitee 是中国的代码托管平台,类似于 GitHub 和 GitLab,但主要面向中国用户。Gitee 提供了代码托管、版本控制、项目管理、团队协作等功能,支持 Git 和 SVN 两种方式。Gitee 特别注重中文用户的使用体验,提供了丰富的中文文档和社区支持。对于在中国进行软件开发的企业和个人来说,Gitee 是一个很好的选择,因为它提供了更快的访问速度和更贴近国内用户需求的服务。
总结来说,Git 是一个分布式版本控制系统,而 GitHub、GitLab 和 Gitee 则是基于 Git 的代码托管平台,它们提供了代码管理、协作和分发等功能。这些工具和平台在软件开发过程中发挥着重要作用,帮助开发者更好地管理代码、协作开发和分享知识。
配置Git
linux上传代码至git的操作:
安装git
在linux系统里安装git客户端/服务端的软件
centos:
sudo yum install git-all -y
ubantu:
sudo apt install git-all -y
初次运行 Git 前的配置
Git 自带一个 git config
的工具来帮助设置控制 Git 行为的配置变量。
这些变量存储在三个不同的位置:
1./etc/gitconfig 文件:
包含系统上每一个用户及他们仓库的通用配置。 如果在执行 git config 时带上 --system 选项,那么它就会读写该文件中的配置变量。 (由于它是系统配置文件,因此你需要管理员或超级用户权限来修改它。)
2.~/.gitconfig 或 ~/.config/git/config 文件:
只针对当前用户。 你可以传递 --global 选项让 Git 读写此文件,这会对你系统上 所有 的仓库生效。
3.当前使用仓库的 Git 目录中的 config 文件(即 .git/config):
针对该仓库。 你可以传递 --local 选项让 Git 强制读写此文件,虽然默认情况下用的就是它。 (当然,你需要进入某个 Git 仓库中才能让该选项生效。)
注册一个代码托管平台
1.这里以gitee为例:
2.设置你的gitee名称并绑定邮箱
3.创建一个仓库
用户信息
安装完 Git 之后,要做的第一件事就是设置你的用户名和邮件地址。
这一点很重要,因为每一个 Git 提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改:
git config --global user.name "yourName"
git config --global user.email yourEmail@example.com
如果使用了 --global
选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息。
当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 --global
选项的命令来配置。
获取 Git 仓库
初始化仓库
在已存在目录中初始化仓库
如果你有一个尚未进行版本控制的项目目录,想要用 Git 来控制它,首先需要进入该项目目录中:
mkdir /gitee/
cd /gitee/
之后执行:
git init
执行这个命令后,Git 会在当前目录下创建一个名为 .git 的隐藏目录(如果当前目录中已经存在 .git 目录,命令会失败),这个目录包含了 Git 仓库的所有元数据,如配置信息、暂存区信息、历史记录等。
初始化 Git 仓库后,你就可以开始使用 Git 来管理你的项目了,比如添加文件到暂存区(git add)、提交修改到仓库(git commit)、查看项目历史(git log)等。
记住,.git 目录是 Git 仓库的核心,它包含了所有 Git 需要跟踪的信息,因此不应该直接修改这个目录中的文件。
克隆现有的仓库
克隆仓库的命令是 git clone <url>
。可以用下面的命令:
https方式:
git clone https://gitee.com/xxx/linux-registry.git
ssh方式:
git clone git@gitee.com:xxx/linux-registry.git
这会在当前目录下创建一个名为 "linux-registry" 的目录,并在这个目录下初始化一个 .git
文件夹, 从远程仓库拉取下所有数据放入 .git
文件夹,然后从中读取最新版本的文件的拷贝。
所有的项目文件已经在这个新建的 linux-registry 文件夹里面了,准备就绪等待后续的开发和使用。
上传本地项目至Git仓库
https方式
拷贝想要上传的本地项目文件至工作区里
cp /root/test.sh /root/gitee/linux-registry
将当前工作区的内容添加到暂存区
pwd
/root/gitee/linux-registry
git add .
将暂存区的文件提交到本地仓库
git commit -m "test"
-m 打一个标签信息"test"
[master 51160d2] test
1 file changed, 1 insertion(+)
create mode 100644 test.sh
将本地仓库的文件上传到gitee仓库
git push
Username for 'https://gitee.com': yourGiteeName#输入你的gitee的用户名Password for 'https://liuzh@gitee.com': #输入你的gitee密码
Counting objects: 4, done.Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 275 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/hezi-fungus/linux-registry.git
00a2172..51160d2 master -> master
至此,就上传成功了
ssh-key方式
- 生成 RSA 密钥
ssh-keygen -t rsa
输出:
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 275 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/hezi-fungus/linux-registry.git
00a2172..51160d2 master -> master
- 中间通过三次回车键确定
- 查看生成的 SSH 公钥和私钥:
ls ~/.ssh/
- 私钥文件
id_rsa
- 公钥文件
id_rsa.pub
- 读取公钥文件
~/.ssh/id_rsa.pub
:
cat ~/.ssh/id_rsa.pub
输出,如:
bash
ssh-ed25519 AAAxxxxxxxrmgjCiF4K Gitee SSH Key
复制终端输出的公钥。
添加个人公钥
复制生成后的 ssh key,通过仓库主页 「管理」->「部署公钥管理」->「添加个人公钥」 ,将生成的公钥添加到仓库中。
添加成功后,就可以使用 SSH 协议对仓库进行**拉取,**无需再进行账号密码的输入
pwd
/root/gitee/linux-registry
ls
这里将本地的nginx.tar的镜像复制了进来
git add .
git commit -m"nginxImage"
git push
相关概念
1. 工作区(Working Directory)
工作区是你当前正在操作的目录。
当你克隆(git clone)或初始化(git init)一个 Git 仓库后,工作区就是你在电脑文件系统中看到的目录和文件。
你可以在这个区域中对文件进行修改、添加新文件或删除文件等操作。
Git 会追踪这些变更,但直到你显式地告诉 Git 去记录这些变更之前,这些变更都是未提交的。
2. 暂存区(Stage/Index)
暂存区是一个中间区域,介于工作区和 Git 目录之间。
当你使用 git add 命令将文件添加到 Git 仓库时,这些文件实际上是被添加到了暂存区,而不是直接提交到了 Git 目录(仓库)。
暂存区的作用是允许你在提交之前对即将提交的内容进行最后的检查和确认。
你可以使用 git status 命令来查看当前工作区和暂存区的状态。
3. Git 目录(Repository 或 .git 目录)
Git 目录(也称为 .git 目录)是 Git 用来存储项目元数据和对象数据库的地方。
这是一个隐藏目录,位于你的项目根目录下(除非你使用了一个不同的位置来初始化仓库)。
.git 目录包含了项目的所有历史记录、分支信息、配置信息(如用户名称和电子邮件地址)以及暂存区信息等。
当你使用 git commit 命令提交变更时,Git 会将暂存区中的文件快照永久性地保存到 Git 目录中,并创建一个指向这个快照的提交(commit)对象。这个提交对象包含了指向父提交(如果有的话)的指针、作者和提交者信息、时间戳以及一个指向暂存区内容快照的指针。