版本控制器Git(4)

文章目录


前言

  加油加油,路在脚下!!!


一、分布式版本控制系统的概念

  • 本地操作:所有操作(工作区、暂存区、版本库等)都是在本地完成,即你的笔记本或计算机上。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上提交推送了。

  克隆后的本地与远程分支对应

  1. 自动对应:
  • 当我们从远程仓库克隆后,实际上Git会自动把本地的master分支和远程的master分支对应起来。
  • 远程仓库的默认名称是origin。
  1. 查看远程库消息:
bash 复制代码
git remote
git remote -v
  1. 向远程仓库推送:
  • 前提:在本地仓库配置了和远端仓库一样的用户名和邮箱
  • 将本地仓库的内容推送至远端仓库:git push
  • 详细命令格式:git push <远程主机名> <本地分支名>:<远程分支名>
  • 如果本地分支名与远程分支名相同,则可以省略冒号:git push <远程主机名> <本地分支名>
  1. 拉取远程仓库更新:
  • 如果远程仓库是要领先于本地仓库⼀个版本,为了使本地仓库保持最新的版本,需要拉取下远端代码,并合并到本地
  • 从远程获取代码并合并本地的版本:git pull
  • 详细命令格式:git pull <远程主机名> <远程分支名>:<本地分支名>
  • 如果远程分支名与本地分支名相同,则可以省略冒号:git pull <远程主机名> <远程分支名>

四、配置Git忽略特殊文件

  1. 创建 .gitignore 文件:

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

  1. 处理.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的操作,建议在熟悉基本命令后再考虑使用命令别名简化工作流程。


总结

  马上就要到最后一篇啦,加油加油加油!!!

相关推荐
云栖梦泽10 分钟前
Linux内存管理
linux·运维·服务器
All for pursuit.18 分钟前
【回溯-2】22.括号生成
数据结构·c++·算法·leetcode
Harvil_20 分钟前
任务跑一半,API 突然报“对话超长“断流:我给 Agent 修的紧急逃生通道
后端
用户EasyAdminBlazor22 分钟前
EasyAdminBlazor SignalR 实时消息源码解析:从 NotificationHub 到站内消息
后端
Lucis__26 分钟前
编译链接全链路解析:ELF形成到可执行加载的发展历程
linux·程序·elf文件
程序猿乐锅30 分钟前
【黑马点评 | 第十一篇】关注 Feed 流实现
java·数据库·redis·分布式·后端·缓存·maven
用户EasyAdminBlazor31 分钟前
EasyAdminBlazor 定时任务:FreeScheduler 可视化调度与任务管理
后端
longlongzihan36 分钟前
LeetCode 1004.最大连续1的个数III 滑动窗口及动态规划题解
c++·算法·leetcode·dp·滑动窗口
朝朝辞暮i43 分钟前
C++ 第 22 课:const —— 不允许随便修改的数据
开发语言·c++·算法
ken22321 小时前
ubuntu 24.04, audacity 4 AppImage 加载 libavdevice.so.62 /.61 /.63 失败:依赖缺失?
linux·运维·ubuntu