文章目录
前言
加油加油,路在脚下!!!
一、分布式版本控制系统的概念
-
本地操作:所有操作(工作区、暂存区、版本库等)都是在本地完成,即你的笔记本或计算机上。Git作为一个分布式版本控制系统,意味着每个用户的电脑上都有一个完整的版本库副本。
-
协作机制:多用户协作时,各成员可以在自己的电脑上修改文件,并通过推送和拉取操作与其他成员交换更改。这使得即使没有互联网连接也可以继续工作,因为版本库就在本地。
-
安全性:由于每个参与者的电脑里都有完整的版本库,所以即使某台电脑出现问题,其他任何一台都可以复制整个项目的历史记录。
实际使用中,我们会使用到一种中央服务器,这是为了方便团队成员之间的交流,通常会设立一台充当"中央服务器"的电脑。但这台服务器仅用于促进大家的修改交换,而非必要的工作依赖。
这就要提到一个"远程仓库"的概念了:
- 分布方式:从一台原始机器克隆出多个副本到不同的机器上。每台机器上的版本库都是平等的,无主次之分。
- 实际应用:一般会选择一台稳定的服务器作为远程仓库,供团队成员克隆、推送和拉取代码。例如,GitHub提供免费的Git仓库托管服务,而国内则常用码云Gitee。
大家可以自行选择喜欢的代码托管平台来尝试一下创建远程仓库
二、克隆远程仓库
使用git clone命令加上远程仓库链接来下载仓库到本地。可以采用SSH协议或HTTPS协议进行传输。SSH更安全但需要配置公钥;HTTPS更简单直接但每次推送需输入密码。
第一步
如果选择SSH协议,需先生成SSH密钥对并添加到远程仓库的服务端。步骤包括检查是否存在已有密钥、生成新密钥、将公钥添加到远程仓库设置中
bash
ssh-keygen -t rsa -C "Your Email"
第二步
顺利的话,可以在⽤⼾主⽬录⾥找到 .ssh ⽬录,⾥⾯有 id_rsa 和 id_rsa.pub 两个⽂件,这两 个就是SSH Key的秘钥对, id_rsa 是私钥,不能泄露出去, id_rsa.pub 是公钥,可以放⼼地告 诉任何⼈。

接下来我们就可以将我们的公钥放到远程仓库里面进去,点击确认后,需要认证你的身份,这个时候你只需要输入就可以了,待一切完成后,你就可以开始 clone 了

注意:SSH协议每次推送是不用输入密码的,但如果是HTTPS协议,每次推送都必须输入密码

三、多用户协作与公钥管理
如果有多个人员协作开发,GitHub/Gitee允许添加多个公钥。只需将每个人的电脑上的Key都添加到GitHub/Gitee,这样就可以在每台电脑上往GitHub/Gitee上提交推送了。
克隆后的本地与远程分支对应
- 自动对应:
- 当我们从远程仓库克隆后,实际上Git会自动把本地的master分支和远程的master分支对应起来。
- 远程仓库的默认名称是origin。

- 查看远程库消息:
bash
git remote
git remote -v
- 向远程仓库推送:
- 前提:在本地仓库配置了和远端仓库一样的用户名和邮箱
- 将本地仓库的内容推送至远端仓库:git push
- 详细命令格式:git push <远程主机名> <本地分支名>:<远程分支名>
- 如果本地分支名与远程分支名相同,则可以省略冒号:git push <远程主机名> <本地分支名>

- 拉取远程仓库更新:
- 如果远程仓库是要领先于本地仓库⼀个版本,为了使本地仓库保持最新的版本,需要拉取下远端代码,并合并到本地
- 从远程获取代码并合并本地的版本:git pull
- 详细命令格式:git pull <远程主机名> <远程分支名>:<本地分支名>
- 如果远程分支名与本地分支名相同,则可以省略冒号:git pull <远程主机名> <远程分支名>

四、配置Git忽略特殊文件
- 创建 .gitignore 文件:
在工作区根目录下创建一个特殊的 .gitignore 文件,并列出不想或不应该提交到远端的文件模式。示例内容:

- 处理.gitignore规则中的例外情况
vim
# 排除所有.开头的隐藏文件:
.*
# 不排除.gitignore
!.gitignore
如果已经忽略了某个类型的文件,但是又想追踪管理某个特定的该类型文件,该怎么办?、
方法一:使用 git add -f file_name 强制添加(推荐)
方法二:在 .gitignore 中添加配置 !file_name 即可让Git不忽略该文件
- 可以使用 git check-ignore -v file_name 来检查相关配置
五、给命令配置别名
使用 git config --global alias.< alias-name > < command > 为常用命令设置别名。
bash
git config --global alias.st status
git config --global alias.last 'log -1'

目前所有的命令建议自己手动完成,尽快适应Git的操作,建议在熟悉基本命令后再考虑使用命令别名简化工作流程。
总结
马上就要到最后一篇啦,加油加油加油!!!