[Pro Git#3] 远程仓库 | ssh key | .gitignore配置

目录

[1. 分布式版本控制系统的概念](#1. 分布式版本控制系统的概念)

[2. 实际使用中的"中央服务器"](#2. 实际使用中的“中央服务器”)

[3. 远程仓库的理解](#3. 远程仓库的理解)

[4. 新建远程仓库](#4. 新建远程仓库)

[5. 克隆远程仓库](#5. 克隆远程仓库)

[6. 设置SSH Key](#6. 设置SSH Key)

实验

一、多用户协作与公钥管理

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

三、向远程仓库推送

四、拉取远程仓库更新

五、配置Git忽略特殊文件

六、验证.gitignore文件的效果

七、处理.gitignore规则中的例外情况

八、给命令配置别名

九、注意事项


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上提交推送了。
二、克隆后的本地与远程分支对应
  1. 自动对应
    • 当我们从远程仓库克隆后,实际上Git会自动把本地的master分支和远程的master分支对应起来。
    • 远程仓库的默认名称是origin。
  1. 查看远程库信息
三、向远程仓库推送
  • 前提:在本地仓库配置了和远端仓库一样的用户名和邮箱
  • 将本地仓库的内容推送至远端仓库git push
  • 详细命令格式git push <远程主机名> <本地分支名>:<远程分支名>
  • 如果本地分支名与远程分支名相同,则可以省略冒号git push <远程主机名> <本地分支名>

查看:

四、拉取远程仓库更新
  • 如果远程仓库是要领先于本地仓库⼀个版本,为了使本地仓库保持最新的版本,需要拉取下远端代码,并合并到本地
  • 从远程获取代码并合并本地的版本:git pull
  • 详细命令格式:git pull <远程主机名> <远程分支名>:<本地分支名>
  • 如果远程分支名与本地分支名相同,则可以省略冒号:git pull <远程主机名> <远程分支名>
五、配置Git忽略特殊文件
  1. 创建 .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**来检查相关配置
八、给命令配置别名
  1. 简化命令
    • 使用git config --global alias.<alias-name> <command>为常用命令设置别名。
  1. 示例

    $ git config --global alias.st status
    $ git config --global alias.last 'log -1'

九、注意事项
  • 配置一致性:提交时要注意,如果之前设置过全局的name和e-mail,这两项配置需要和gitee上配置的用户名和邮箱一致,否则会出错。
  • 适应Git命令:目前所有的命令建议自己手动完成,尽快适应Git的操作,建议在熟悉基本命令后再考虑使用命令别名简化工作流程。
相关推荐
kingbal15 分钟前
VMware:CentOS 7.* 连不上网络
linux·网络·centos
茉莉玫瑰花茶31 分钟前
基础开发工具-编辑器vim
linux·编辑器·vim
奥顺32 分钟前
2025周易算命网站搭建详细方法+源码选择php环境的配置
linux·服务器·数据库·mysql·nginx·php
long_songs1 小时前
kubectl rancher等重启之后服务起不来一分钟解决(另类方案)did you specify the right host or port?
linux·运维·服务器·kubernetes·kubectl·rancher·kubelet
小豆豆儿1 小时前
【xrdp配置文件】
linux
有谁看见我的剑了?1 小时前
pstree 查看进程树 命令学习
linux·centos
Anthony_2311 小时前
华为云服务器搭建基于LNMP部署wordpress
linux·运维·服务器·mysql·华为云
睿麒1 小时前
鸿蒙开发中 Dev ECO studio 如何退出git账号
git·harmonyos
普通码农我姓吴1 小时前
【linux】shell(34)-后台执行脚本
linux·运维·服务器
Roc-xb2 小时前
CentOS 上如何查看 SSH 服务使用的端口号?
linux·centos·ssh