目录
[1. 分布式版本控制系统的概念](#1. 分布式版本控制系统的概念)
[2. 实际使用中的"中央服务器"](#2. 实际使用中的“中央服务器”)
[3. 远程仓库的理解](#3. 远程仓库的理解)
[4. 新建远程仓库](#4. 新建远程仓库)
[5. 克隆远程仓库](#5. 克隆远程仓库)
[6. 设置SSH Key](#6. 设置SSH Key)
1. 分布式版本控制系统的概念
- 本地操作 :所有操作(工作区、暂存区、版本库等)都是在本地完成,即你的笔记本或计算机上。Git作为一个分布式版本控制系统,意味着每个用户的电脑上都有一个完整的版本库副本。
- 协作机制 :多用户协作时,各成员可以在自己的电脑上修改文件,并通过推送和拉取操作与其他成员交换更改。这使得即使没有互联网连接也可以继续工作,因为版本库就在本地。
- 安全性:由于每个参与者的电脑里都有完整的版本库,所以即使某台电脑出现问题,其他任何一台都可以复制整个项目的历史记录。
2. 实际使用中的"中央服务器"
- 在实践中,为了方便团队成员之间的交流,通常会设立一台充当"中央服务器"的电脑。但这台服务器仅用于促进大家的修改交换,而非必要的工作依赖。
3. 远程仓库的理解
- 分布方式:从一台原始机器克隆出多个副本到不同的机器上。每台机器上的版本库都是平等的,无主次之分。
- 实际应用 :一般会选择一台稳定的服务器作为远程仓库,供团队成员克隆、推送和拉取代码。例如,GitHub提供免费的Git仓库托管服务,而国内则常用码云。
4. 新建远程仓库
- 创建过程 :登录托管平台,填写基本信息创建远程仓库。选择仓库是否公开,并初始化默认分支(通常是
master
)。
以 github 为例
5. 克隆远程仓库
- 使用
git clone
命令加上远程仓库链接来下载仓库到本地。可以采用SSH协议或HTTPS协议进行传输。SSH更安全但需要配置公钥;HTTPS更简单直接但每次推送需输入密码。
6. 设置SSH Key
- 如果选择SSH协议,需先生成SSH密钥对并添加到远程仓库的服务端。步骤包括检查是否存在已有密钥、生成新密钥、将公钥添加到远程仓库设置中。
第一步:
第二步:
顺利的话,可以在⽤⼾主⽬录⾥找到 .ssh ⽬录,⾥⾯有 id_rsa 和 id_rsa.pub 两个⽂件,这两 个就是SSH Key的秘钥对, id_rsa 是私钥,不能泄露出去, id_rsa.pub 是公钥,可以放⼼地告 诉任何⼈。
ssh clone
test 仓库里面没有东西,所以报了一个空仓的 warning
- 注意:SSH协议每次推送是不用输入密码的,但如果是HTTPS协议,每次推送都必须输入密码
实验
一、多用户协作与公钥管理
- 成功协作 :如果有多个人员协作开发,GitHub/Gitee允许添加多个公钥。只需将每个人的电脑上的Key都添加到GitHub/Gitee,这样就可以在每台电脑上往GitHub/Gitee上提交推送了。
二、克隆后的本地与远程分支对应
- 自动对应:
-
- 当我们从远程仓库克隆后,实际上Git会自动把本地的
master
分支和远程的master
分支对应起来。 - 远程仓库的默认名称是origin。
- 当我们从远程仓库克隆后,实际上Git会自动把本地的
- 查看远程库信息:
三、向远程仓库推送
- 前提:在本地仓库配置了和远端仓库一样的用户名和邮箱
- 将本地仓库的内容推送至远端仓库 :
git push
- 详细命令格式 :
git push <远程主机名> <本地分支名>:<远程分支名>
- 如果本地分支名与远程分支名相同,则可以省略冒号 :
git push <远程主机名> <本地分支名>
查看:
四、拉取远程仓库更新
- 如果远程仓库是要领先于本地仓库⼀个版本,为了使本地仓库保持最新的版本,需要拉取下远端代码,并合并到本地
- 从远程获取代码并合并本地的版本:git pull
- 详细命令格式:git pull <远程主机名> <远程分支名>:<本地分支名>
- 如果远程分支名与本地分支名相同,则可以省略冒号:git pull <远程主机名> <远程分支名>
五、配置Git忽略特殊文件
- 创建
.gitignore
文件:
-
-
在工作区根目录下创建一个特殊的
.gitignore
文件,并列出不想或不应该提交到远端的文件模式。示例内容:My configurations:
*.ini
*.so
-
2.提交 .gitignore
文件
gitee默认的是master,这里敲错了,github主分支用main
六、验证.gitignore
文件的效果
- 使用
git status
检查是否有效忽略了指定文件。
测试:
七、处理.gitignore
规则中的例外情况
-
可以通过添加例外规则来确保某些特定文件不会被忽略,例如:
排除所有.开头的隐藏文件:
.*
不排除.gitignore
!.gitignore
sum:
如果已经忽略了某个类型的文件,但是又想追踪管理某个特定的该类型文件,该怎么办?
- 方法一 :使用
git add -f file_name
强制添加(推荐) - 方法二 :在
.gitignore
中添加配置!file_name
即可让Git不忽略该文件
如果觉得 .gitignore****有问题,想知道哪个规则写错了,该怎么办?
- 可以使用**
git check-ignore -v file_name
**来检查相关配置
八、给命令配置别名
- 简化命令:
-
- 使用
git config --global alias.<alias-name> <command>
为常用命令设置别名。
- 使用
-
示例:
$ git config --global alias.st status
$ git config --global alias.last 'log -1'
九、注意事项
- 配置一致性:提交时要注意,如果之前设置过全局的name和e-mail,这两项配置需要和gitee上配置的用户名和邮箱一致,否则会出错。
- 适应Git命令:目前所有的命令建议自己手动完成,尽快适应Git的操作,建议在熟悉基本命令后再考虑使用命令别名简化工作流程。