首页 > 其他分享 >Git和GitHub:开启你的开源之旅(入门级干货教程)

Git和GitHub:开启你的开源之旅(入门级干货教程)

时间:2024-08-09 20:54:01浏览次数:16  
标签:Git GitHub 暂存区 干货 git 本地 服务器 远程 分支

Git及GitHub使用教程

Git部分

Git概述

Git是一个免费的开源的分布式版本控制系统

  1. 版本控制系统

版本控制系统是一种记录文件历史修改记录,以便将来查阅特定版本修订情况的系统。

  1. 集中式版本控制工具 VS 分布式版本控制工具

集中式版本控制工具

  1. 特点
    • 所有文件版本和历史记录存储在中央服务器上。
    • 开发者通过客户端从中央服务器检出最新版本的代码,并将更改推送回服务器。
  2. 优势
    • 中央化的存储使得管理项目的权限控制更容易。
    • 管理员可以更轻松地控制项目的状态和权限。
    • 开发者只需了解中央服务器的概念,学习曲线相对较低。
  3. 缺点
    • 协作过程中对中央服务器的依赖性较高,服务器故障可能导致开发中断。
    • 因为所有操作都涉及到与中央服务器的交互,对网络连接的要求较高。

分布式版本控制工具

  1. 特点

    • 每个开发者都有完整的项目副本(包括代码库和版本历史记录)。
    • 开发者可以在本地进行提交、分支、合并等操作,而不必依赖于中央服务器。
  2. 优势

    • 本地操作速度快,不需要频繁与中央服务器交互,即使在没有网络连接的情况下也能进行大部分操作。
    • 分布式架构更适合团队分散、地理位置分布广泛的开发团队。
    • 更灵活的分支和合并机制,支持并行开发和多个工作流程。
  3. 缺点

    • 对于一些新手来说,理解分布式版本控制系统的概念和工作流程可能有一定的学习曲线。
    • 由于每个开发者都有完整的项目副本,可能会占用更多的存储空间。
  4. 分区

工作区(git add)➡暂存区(git commit)➡本地库(生成历史版本 git push)➡远程库

  1. 代码托管中心

代码托管中心是基于网络服务器的远程代码仓库,一般简称为“远程库”。

局域网:GitLab

互联网:GitHub、Gitee(码云)

Git常用命令

常用操作含义
git config --global user.name 用户名设置用户签名
git config --global user.email 邮箱地址设置用户签名
git config --list查看git配置信息
git init初始化本地库
git status查看本地库状态
git add 文件名添加到暂存区
git add .添加当前目录下所有的文件到暂存区
git commit -m “日志信息” 文件名提交到本地库
git reflog查看历史记录
git log查看完整的记录
git reset --hard 版本号版本穿梭
cat 文件名查看文件内容
  1. 步骤

设置用户签名

初始化本地库

添加暂存区

提交到本地库

  1. git内部vim的操作

ps: vim是文本编辑器,类似于windows的记事本,它有两个模式,一个是编辑(插入)模式,一个是命令模式

操作目的
vim 文件名进入
i编辑模式
esc命令模式
:w + 回车保存(命令模式)
:wq 或者 ZZ保存并退出(命令模式)
:q!放弃修改并退出vim(命令模式)
:e!放弃修改并返回命令模式(命令模式)

分支

  1. 常用操作
操作含义
git branch 名称创建分支
git branch -b 名称创建分支,并切换到新创建的分支
git branch -v查看所有的分支
git checkout 分支名切换分支
git merge 分支名A将分支A
git branch -m 名称A 名称B将分支A的名字修改为B
git branch -m 名称A将当前分支改名为名称A
  1. 合并与冲突

冲突的产生:在要合并的两个分支中修改了相同的文件,然后分别添加到暂存区、提交到本地库之后在进行合并就会产生冲突。以下是冲突产生的一个例子:

在这里插入图片描述

冲突的解决方法:

(1) 首先打开文件(vim 文件名)
在这里插入图片描述

有三行特殊符号
<<<<<< HEAD
内容一
=======
内容二
>>>>>>> 分支A的名称

/**
其中,HEAD 指向的是当前的分支
内容一部分是当前分支修改的内容
内容二部分是分支A修改的内容
*/

(2) 切换到编辑模式,手动修改最终要保留的内容,最后再删除那三行特殊符号,然后保存并退出vim

(3)将文件添加到暂存区(git add 文件名)

(4)将文件提交到本地库(git commit -m “文件描述”)!!!注意此处不再添加文件名

团队协作

团队内协作

在这里插入图片描述

跨团队协作

在这里插入图片描述

GitHub部分

远程库操作

操作含义
git remote -v查看当前所有远程地址的别名
git remote add 别名 远程库地址为远程库起别名
git push 别名/远程库地址 分支A推送本地分支A上的内容到这个别名对应的远程仓库的分支A(如果远程库没有A分支,则重新创建)
git push 别名/远程库地址 分支A:分支B推送本地仓库的分支A到远程仓库的分支B
git clone 远程地址将远程库的内容克隆到本地
git pull 远程库地址别名 远程分支A将远程库分支A的最先内容拉取下来后直接与本地当前分支合并
注意点:
  1. 远程库一般与本地库的名称一致
  2. 远程库别名一般与远程库名一致
  3. clone操作的三个小步骤:(1)拉取代码; (2)初始化本地库; (3)初始化分支名(默认为origin)
  4. 有多个账号在进行push、pull的时候,要去**“凭据管理器”**将其他的账号凭据删除才能进行

团队内协作

clone到本地库,然后修改完善,add到暂存区、commit到本地库、push到远程库(需要权限,如下)

邀请成员协作步骤:

settings -> manage access -> invite a collaborator -> 输入对方账号 -> 产生邀请函 -> 复制邀请函 -> 浏览器复制链接 -> 同意推送

-> 得到push权限

跨团队协作

协作步骤:

方法一:同团队协作

方法二:进入到项目 -> fork -> 在线编辑完成 -> pull request -> new pull reuest -> creat pull request -> 对方审核 -> merge pull request -> confirm merge

标签:Git,GitHub,暂存区,干货,git,本地,服务器,远程,分支
From: https://blog.csdn.net/m0_73777400/article/details/140966535

相关文章

  • 接口自动化-YAPI+GITLAB+JENKINS+飞书畅想与实践
    起因工作中遇到期望做接口自动化,之前公司跟着团队做过python+request搭建的自动化框架,逐步完善框架本身,与接口测试用例本身,都是需要代码编写能力较强,能保证框架本身没问题,也要保证接口用例本身没问题。领导期望接口自动化能做到闭环,从代码产生开始到接口测试结果结束,都可以......
  • 记某项目的vue.config.js的配置,主要是获取git版本信息,并写入新创建的json文件
    /**@format*/constmoment=require("moment");constFileManagerPlugin=require("filemanager-webpack-plugin");constGreatePlugin=require("generate-asset-webpack-plugin");constshell=require("shelljs");le......
  • gitignore文件的使用
    在使用GitLab进行版本控制时,如果你想要忽略一些文件或目录不被提交(比如生成的权重、预测的图片等),你可以在项目的根目录下创建或编辑一个.gitignore文件。在这个文件中,你可以列出那些你希望Git忽略的文件和目录的模式。1.基本语法每条规则占一行空白行或以#开头的行:这......
  • git常用命令
    文章目录基本命令远程库相关命令标签相关命令很久之前学习的时候记录的,可能有错误的地方。现在基本都是直接用idea操作,所以也不用特别的去记忆不常用的命令。基本命令命令含义gitinit初始化仓库,默认分支mastergitadd文件名提交到暂存区gitadd.提交所有文件......
  • git --- 合并分支(bugfix ---> master)
    普通合并普通合并是将要合并的分支的更改逐个提交到目标分支上。以下是普通合并的步骤:步骤1:切换到目标分支,也就是要将更改合并到的分支上。gitcheckout目标分支名称步骤2:执行合并命令。gitmerge要合并的分支名称步骤3:解决冲突(如果有)。如果在合并过程中出现冲突,需......
  • git submodule
    1.先来个官方的APIgitsubmodule[--quiet]add[<options>][--]<repository>[<path>]gitsubmodule[--quiet]status[--cached][--recursive][--][<path>…​]gitsubmodule[--quiet]init[--][<path>…​]gitsubmodule[--quiet]dein......
  • Centos上Jenkins+git+allure使用教程
    1、Jenkins上下载allure 2、下载安装完成后重启Jenkins,然后查看allure插件安装成功,如下图所示 3、Jenkins服务器上,安装allure-2.26.0,安装完成后配置环境变量,vi/etc/profile配置环境变量添加exportPATH=$PATH:/usr/local/allure-2.26.0/bin保存环境变量source/etc......
  • GitHub每日最火火火项目(8.7)
    项目名称:bghira/SimpleTuner项目介绍:SimpleTuner是一个面向StableDiffusion2.1、StableDiffusion3、DeepFloyd和SDXL的通用微调工具包。它旨在为这些模型提供一种便捷的方式进行微调,以适应不同的应用场景和需求。通过使用SimpleTuner,用户可以调整模型的参数,从而提高......
  • GitHub每日最火火火项目(8.8)
    项目名称:bghira/SimpleTuner项目介绍:SimpleTuner是一个通用的微调工具包,主要面向StableDiffusion2.1、StableDiffusion3、DeepFloyd和SDXL等模型。它为这些模型的微调提供了便利,使用户能够更轻松地调整模型的参数,以满足不同的应用需求。通过SimpleTuner,用户可以更好......
  • git常用场景
    相信Git操作是每一位程序员都应该学习的基本技能。然而,直接学习Git命令可能会感到枯燥无味,尤其是在刚接触时。为了帮助大家更好地理解和应用Git,我想结合我在实习开发中的一些实际经验,介绍几个常见的开发场景以及相应的Git操作。我刚才提交了什么?如果你用gitcommit-a提交了一......