热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

git从零开始实现本地仓库与远程顺畅推拉

  git是一个分布式版本控制系统,本地git仓库和远程仓库之间的传输支持ssh、https等协议。使用https协议缺点:速度慢,每次推送都必须输入⼝令。若使用ssh协议,需要在

  git是一个分布式版本控制系统,本地git仓库和远程仓库之间的传输支持ssh、https等协议。使用https协议缺点:速度慢,每次推送都必须输入⼝令。若使用 ssh 协议,需要在你的github账户添加你的本机上的ssh公钥,之后才可以通过本机推送内容到你的github。

从零开始实现本地仓库与远程顺畅推拉的步骤:

  1. 安装git,不同系统安装方法不同。详见https://git-scm.com/downloads。
  2. 配置用户名和密码

    $ git config --global user.name "John Doe"
    $ git config --global user.email johndoe@example.com

        可以根据情况使用不同的参数配置详见git — config 。不配置用户名和密码,提交时默认使用本机username和hostname。git配置的邮箱与github一致时,显示github用户名和头像。github的contributions统计是按邮箱统计的。

  3. 建立本地计算机与远程github或者gitlab仓库之间的连接

    创建SSH Key

    $ ssh-keygen -t rsa -C "youremail@example.com"
    //参数-C: comment,提供一个新注释,这里的邮箱并木有实际意义

    github账户添加SSH Key

    把用户主目录下,.ssh文件夹中 id_rsa.pub 内容复制到github中,setting/SSH and GPG keys/new SSH key

  4. github或者gitlab上create一个远程库。可以得到一个远程库的地址 :

    git@github.com:(github用户名)/(creage的时候起的仓库名).git。

  5. 然后,本地仓库与远程仓库之间的首次互动,有几种做法:

    第一种:

    $ git clone git@github.com:name/xxx.git
    如果希望在克隆的时候,自己定义要新建的项目目录名称,可以在命令末尾指定新的名字:
    $ git clone git://github.com/schacon/grit.git mygrit

    此之后,我们就可以顺利地使用git pull 和git push了。
    github上删除远程仓库后,报错:Please make sure you have the correct access rights and the repository exists.

    第二种:不使用clone命令,而是先把本地的仓库推送上去。

    首先,

    //初始化本地文件夹为git仓库,文件夹名字和远程的不一定一致
    $ git init
    //添加origin为远程git@github.com:name/xxx.git仓库的别名,体现在.git/config中
    $ git remote add origin git@github.com:name/xxx.git

    然后,几种方法任选其一:

    1.$ git push --set-upstream origin master
    2.$ git push -u origin master
    3.$ git push [remote-name] [branch-name] 把本地分支推送到远程对应分支

    1、2可以顺利地使用git pull 和git push了,体现在.git/config中。经各种验证, 1、2这两个命令作用一致。推送内容并且,Branch ‘master’ set up to track remote branch ‘master’ from ‘origin’。有些地方讲,如果当前分支与多个主机存在追踪关系,则可以使用 -u 参数指定一个默认主机,这样后面就可以不加任何参数使用git push。实验一个分支追踪多个主机没有成功。3只推送内容,而不与远程分支建立关联关系。

  6. 拓展内容

    clone命令会做什么:

        会下载仓库文件夹(包含外层夹),到当前目录,提示你克隆了一个空仓库,包含.git 文件。
        会在.git/config中自动添加origin为远程仓库的别名,以便将来引用。
        会自动创建了本地的 master 分支并关联远程仓库中的 master 分支,体现在.git/config中。

    SSH警告

        当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告,这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。然后,Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的known_hosts信任列表里了。这个警告只会出现一次,后面的操作就不会有任何警告了。如果你实在担心有人冒充GitHub服务器,输入yes前可以对照GitHub的RSA Key的指纹信息是否与SSH连接给出的一致。

    git pull <远程主机> <远程分支>:<本地分支>

    git push <远程主机> <本地分支>:<远程分支> :

    git push origin 推送当前分支到远程对应分支,如当前分支只有一个追踪分支,主机名可以省略(实验为一个本地分支添加多个追踪分支,没有成功)

    远程仓库的相关操作

    手动添加一个新的远程仓库,并指定一个别名:

    $ git remote add [shortname] [url]:

    查看远程库的信息

    $ git remote 列出远程库的别名
    $ git remote –v (译注:此为 --verbose 的简写)列出远程库的别名以及fetch 和 push 的url地址
    $ git remote show origin 查看某个远程仓库的详细信息,比如要看所克隆的 origin 仓库
    查看.git/config可以看到origin的含义

    远程仓库重命名, 在新版 Git 中修改某个远程仓库在本地的简称:

    $ git remote rename old new

    远程仓库的删除
    碰到远端仓库服务器迁移,或者原来的克隆镜像不再使用,又或者某个参与者不再贡献代码,那么需要移除对应的远端仓库,可以运行 git remote rm 命令,删除origin这个远端的仓库在本地的映射(移除了config中,logs/refs/remotes, 以及 refs/remotes中相关,不会对远程仓库产生作用。)

    $ git remote rm origin


推荐阅读
  • 本文深入探讨了 Git 与 SVN 的高效使用技巧,旨在帮助开发者轻松应对版本控制中的各种挑战。通过详细解析两种工具的核心功能与最佳实践,读者将能够更好地掌握版本管理的精髓,提高开发效率。 ... [详细]
  • 本文介绍了如何在GitHub上设置多个SSH Key,以解决原有Key失效的问题,并确保不同项目使用不同的私钥进行安全访问。 ... [详细]
  • Git命令基础应用指南
    本指南详细介绍了Git命令的基础应用,包括如何使用`git clone`从远程服务器克隆仓库(例如:`git clone [url/path/repository]`)以及如何克隆本地仓库(例如:`git clone [local/path/repository]`)。此外,还提供了常见的Git操作技巧,帮助开发者高效管理代码版本。 ... [详细]
  • JavaScript XML操作实用工具类:XmlUtilsJS技巧与应用 ... [详细]
  • 分布式开源任务调度框架 TBSchedule 深度解析与应用实践
    本文深入解析了分布式开源任务调度框架 TBSchedule 的核心原理与应用场景,并通过实际案例详细介绍了其部署与使用方法。首先,从源码下载开始,详细阐述了 TBSchedule 的安装步骤和配置要点。接着,探讨了该框架在大规模分布式环境中的性能优化策略,以及如何通过灵活的任务调度机制提升系统效率。最后,结合具体实例,展示了 TBSchedule 在实际项目中的应用效果,为开发者提供了宝贵的实践经验。 ... [详细]
  • 速查!Git常用命令大全【汇总推荐】
    开发工具|gitgit开发工具-gitgit常用命令网站源码分享资源,写vscode插件详细教程,ubuntu突然卡,war放tomcat哪,应聘爬虫岗位,php获取数组索引值,张 ... [详细]
  • 本文将详细介绍如何注册码云账号、配置SSH公钥、安装必要的开发工具,并逐步讲解如何下载、编译 HarmonyOS 2.0 源码。通过本文,您将能够顺利完成 HarmonyOS 2.0 的环境搭建和源码编译。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 在过去,我曾使用过自建MySQL服务器中的MyISAM和InnoDB存储引擎(也曾尝试过Memory引擎)。今年初,我开始转向阿里云的关系型数据库服务,并深入研究了其高效的压缩存储引擎TokuDB。TokuDB在数据压缩和处理大规模数据集方面表现出色,显著提升了存储效率和查询性能。通过实际应用,我发现TokuDB不仅能够有效减少存储成本,还能显著提高数据处理速度,特别适用于高并发和大数据量的场景。 ... [详细]
  • 在Ubuntu 20.04 Linux系统中部署Git的详细步骤与最佳实践
    在Ubuntu 20.04 Linux系统中部署Git时,首先确保您的操作系统版本正确,并已以具备sudo权限的用户身份登录。推荐使用APT软件包管理器进行安装,这是最简便且可靠的方法。此外,遵循最佳实践,如定期更新Git版本和配置全局设置,可以进一步提升使用体验和安全性。 ... [详细]
  • 深入解析 Django 中用户模型的自定义方法与技巧 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
  • 这篇文章将为大家详细讲解有关SpringCloudConfig如何实现分布式配置中心,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章 ... [详细]
  • 什么是git-lfsGithub对文件大小的限制如果你在命令行用gitpush50MB的文件,你会收到一个warning,但是你仍然可以正常push,但是100MB的时候就无法 ... [详细]
  • 六百字读懂
    译注:来自HackerSchool的MaryRoseCook实现了一个纯JavaScript(Node.js)写就的Git:Gitlet,包含了最主要的一些命令。这个项目一是为了了 ... [详细]
author-avatar
曾让我心碎的你俺_275
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有