git源代码管理

news2024/11/26 11:51:13

文章目录

  • git源代码管理
    • git单人本地仓库操作
    • 创建远程仓库(github为例)
    • 多人开发与冲突
    • 分支操作
    • SSH(安全外壳协议)

git源代码管理

文档连接:https://git-scm.com/docs

git是用于源代码管理,方便多人协同开发,方便版本控制

git管理源代码特点:git是分布式管理,服务器和用户端都有版本控制能力,都能进行代码的提交、合并

git操作流程
git服务器 -> 本地仓库 -> 客户端 -> 本地仓库 -> git服务器
在这里插入图片描述
在这里插入图片描述

git单人本地仓库操作

1.安装git:sudo apt-get install git
2.查看git安装结果:git
3.创建项目文件:mkdir localgit
4.进入项目文件:cd localgit
5.创建本地仓库:git init
运行之后会有个隐藏的文件.git
6.设置个人信息名字:git config user.name qiruihua
7.设置个人信息邮箱:git config user.email qiruihua@email.com
(六七两条设置的到保存在.git/config文件中)

8.创建文件:touch login.py
9.查看文件状态:git status
红的可以理解为没有在git管理下(没有在工作区)
10.加入工作区:git add login.py
git add .所有修改的文件
11.查看文件状态:git status
绿的可以理解为在git管理下(在工作区)
12.由暂存区到仓库区:git commit -m ‘备注’
备注一般用来标记该步骤的含义,实现的功能
13.查看文件状态:git status
没有任何信息
14.编辑login.py文件:vim login.py
内容自行编写
15.查看文件状态:git status
红的
新建的文件要通过git add来追踪,追踪了之后才有对应的工作区、暂存区、仓库区
追踪的文件分为工作区、暂存区、仓库区
16.由工作区转到暂存区:git add login.py
17.查看文件状态:git status
绿的
18.由暂存区到仓库区:git commit -m ‘备注’
git commit -am ‘备注’(可省略git add那步)
19.查看文件状态:git status
没有任何信息

查看提交记录:git log
回退最近一笔提交:git reset --hard HEAD^
回退两个版本HEAD^^,回退10个版本HEAD~10
显示所有版本信息:git reflog
回退到某个版本:git reset --hard id (id为git reflog查询结果的第一列)
将暂存区的代码回退到工作区(执行过add没执行commit或者都没执行情况)(代码恢复原样,未修改):git checkout login.py
撤销暂存区代码回退到工作区(执行过add没执行commit或者都没执行情况)(代码不恢复原样,进行过修改):git reset HEAD login.py

创建远程仓库(github为例)

(还有gitee也类似)

1.进入网址并登入:https://github.com/
2.进入后点击create repository
在这里插入图片描述
3.输入Repository name:仓库名
description:仓库介绍
Add .gitignore:输入python,忽略文件: 我们在写代码过程中(运行过程中)本地的一些文件,不需要提交到服务器进行代码管理
choice a liense:多人开发选择MIT license,单人开发不用选(None)
create repository:创建
在这里插入图片描述

4.将github中的代码下载到本地:

复制如下链接https://github.com/EnJoyABoy/python.git
在这里插入图片描述在虚拟机里面运行指令:git clone https://github.com/EnJoyABoy/python.git
然后在虚拟机里面对文件进行操作(修改,add,commit)(commit并没有提交到github上面)
执行commit之后,执行指令git status会提示在某分支有一笔提交,这时,本地的代码修改了,但是github中的没有被修改
要将修改的代码提交到github上,需要执行指令:git push,然后输入github的用户名和密码

更新本地代码为github上最新的代码:git pull

多人开发与冲突

代码编辑界面模拟两个人,一个是经理,一个是员工
在一个终端模拟员工操作:

将github仓库克隆下来:git clone https://github.com/EnJoyABoy/python.git
修改用户名:git config user.name 员工
修改邮箱:git config user.email 员工@email.com

在另一个终端模拟经理操作:

将github仓库克隆下来:git clone https://github.com/EnJoyABoy/python.git
修改用户名:git config user.name 经理
修改邮箱:git config user.email 经理@email.com

提交冲突
当两人同时提交的时候(一人提交后另一个人没有更新本地也提交)会发生冲突,修改之前没有更新本地代码容易引发冲突(其他人提交过,自己本地没更新)

当提交发生冲突的时候,先执行git pull
接着对发生冲突的文件进行修改(删除<<<===>>>等各行内容)

tag标签:当一个大版本完成之后,需要打一个标签,用于记录大版本,备份大版本代码,当后面开发需要回到该版本的时候,可以通过标签回到该版本
新增一个标签版本:git tag -a v1.0 -m ‘完成注册’
(-a新增,-m描述)
查看版本:git tag
提交到github中:git push origin v1.0
删除版本:git tag -d v1.0
删除github中的版本:git push --delete origin v1.0

分支操作

分支作用:比如有两个分支,一个主分支,一个副分支,我们在副分支中提交修改代码,当编写的差不多了,可以将副分支的提交提交到主分支当中,从而不影响主分支的使用

查看当前分支:git branch
创建一个分支:git checkout -b pay
创建之后自定切换到了pay分支,当前的修改提交都在pay分支中
切换到master分支:git checkout master
在pay分支中修改提交代码之后,切换回到master查看pay中修改的文件在这没有被修改
将pay分支的修改合并到master主分支中(要切换到master主分支中操作):git merge pay
删除pay分支:git branch -d pay
将本地新分支pay提交到github中:git push --set-upstream origin pay或者git push -u origin pay

SSH(安全外壳协议)

在https://github.com中点击右上角头像,点击settings
在这里插入图片描述

然后点击SSH and GPG keys,再点击New SSH key新建个SSH
在这里插入图片描述
然后再虚拟机里面去生成SSH公钥(输入自己的邮箱):ssh-keygen -t rsa -C “邮箱@email.com”
运行之后,cd .sh进入目录,里面有个id_rsa.pub文件
在这里插入图片描述

在文件夹.sh里面将id_rsa.pub文件内容复制出来,粘贴到key中,title写一个名字,然后点击Add SSH key
在这里插入图片描述
建立完成之后,到github仓库中,点击SSH复制链接
在这里插入图片描述
然后在虚拟机里面执行如下指令,将github的代码下载到本地:git clone git@github.com:EnJoyABoy/python.git

上面如果报错,先执行eval "$(ssh-agent -s)"和ssh-add

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/551734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

架构整洁之道上篇(编程范式设计原则)

目录 1.概述 2.编程范式 2.1.结构化编程 2.2.面向对象编程 2.3.函数式编程 3.设计原则 3.1.单一职责原则 3.2.开闭原则 3.3.里氏替换原则 3.4.接口隔离原则 3.5.依赖反转原则 4.小结 1.概述 软件架构的终极目标是&#xff0c;用最小的人力成本来满足构建和维护该系…

2023 操作系统 R 复习大纲( 适用于太理软件 21 级)

目录 01.操作系统的定义 02.操作系统的基本类型及特征 1.批处理操作系统&#xff08;单、多道&#xff09; 2.分时操作系统 3.实时操作系统 03.操作系统的功能及特征 04.进程的定义、特征 05.进程基本状态及其转换原因 06.进程互斥、同步 07.进程控制块的内容、作用 …

Java数据类型之整数类型与浮点数

标识符&#xff08;名字&#xff09; 作用域 离其最近的大括号 { } &#xff01;&#xff01;&#xff01; 数据类型的分类 赋值时&#xff0c;不可超过数据类型的范围&#xff08;不可越界&#xff09; 常量的进制转换 tips&#xff1a;给变量赋值时&#xff0c;值可以为不同…

从代码层面理解Transformer

跑通 代码使用的是 https://github.com/jadore801120/attention-is-all-you-need-pytorch, commit-id 为: 132907d 各模块粗览 Transformer 主要包括一堆参数, 以及encoder和decoder forward的时候主要做了如下操作. 先 pad_mask过encoder过decoder输出logit 从train.py …

C语言-【指针一】-【什么是指针/指针类型】

对于初学者来说&#xff0c;是不是一提到指针&#xff0c;大家就头疼啊&#xff0c;哈哈哈&#xff0c;当然&#xff0c;它都这么“吓人”了&#xff0c;那么在C语言中扮演的角色也很重要&#xff0c;当然&#xff0c;它也是C语言中的一个特色&#xff0c;如果我们把它拿下的话…

ESP32CAM,点亮一个LED(Arduino平台)

前言 &#xff08;1&#xff09;在此&#xff0c;吐槽一下乐鑫的函数介绍&#xff0c;真的难找。恶心的一批。气死我了。 &#xff08;2&#xff09;接下来我将会介绍我是如何找到ESP32的Arduino平台的函数库的。你将会知道为啥我这么大的戾气。 &#xff08;3&#xff09;同时…

linux系统中输入与输出重定向

什么是输入输出重定向 我们在日常工作中最常用的是输出重定向&#xff0c;输出重定向就是将原本要打印到屏幕中的信息重定向到一个文件中。而输入重定向呢就是指把文件导入到命令中去&#xff0c;听起来是不是有点抽象啊&#xff0c;后面看博主举例说明就很好理由啦。 输出重定…

通讯录信息管理系统

系列文章 任务50 通讯录信息管理系统 文章目录 系列文章一、实践目的与要求1、目的2、要求 二、课题任务三、总体设计1.存储结构及数据类型定义2.程序结构3.所实现的功能函数4、程序流程图 四、小组成员及分工五、 测试插入按编号查找按姓名查找按城市查找更新排序浏览删除统计…

超好玩C++控制台打飞机小游戏,附源码

我终于决定还是把这个放出来。 视频在这&#xff1a;https://v.youku.com/v_show/id_XNDQxMTQwNDA3Mg.html 具体信息主界面上都有写。 按空格暂停&#xff0c;建议暂停后再升级属性。 记录最高分的文件进行了加密。 有boss&#xff08;上面视频2分47秒&#xff09;。 挺好…

轻松转换CAJ文件为PDF格式:免费工具和技巧

在处理中国知网&#xff08;CNKI&#xff09;数据库中的CAJ文件时&#xff0c;将其转换为更常用的PDF格式可以提供更广泛的共享和便捷的阅读体验。本文将介绍一种免费的工具和一些技巧&#xff0c;帮助您轻松地将CAJ文件转换为PDF格式。我们将使用记灵在线工具进行操作。 记灵…

推荐几本提高程序员职业素养的书

如果你是一名程序员&#xff0c;想要提长自己&#xff0c;那么这几本书推荐给你。 1、好代码 &#xff0c;坏代码 为了写出优良的代码&#xff0c;我们必须对手上的方案有合理的判断&#xff0c;并彻底想清楚特定方法的结果&#xff08;好的和坏的&#xff09;。为此&#xff…

F检验.医学统计实例详解

F检验是一种重要的医学统计方法&#xff0c;常用于检验两个或多个样本的方差是否相等&#xff0c;也被称为方差齐性检验。方差齐性检验是医学研究中的基本方法&#xff0c;因为许多重要的统计分析都要求样本方差相等&#xff0c;如方差分析、t检验等。以下将介绍F检验的基本原理…

简单上手Scrapy框架

创建一个Scrapy框架的爬虫程序 安装Scrapy库&#xff0c;直接通过pycharm搜索Scrapy进行安装即可 在终端执行 scrapy startproject 项目名 scrapy startproject Learn 示例 即可创建名为Learn的Scrapy程序&#xff0c;成功创建项目后&#xff0c;会已项目名称创建一个文件夹&…

FTP和SSH连接远程终端Ubuntu

安装好ubuntu后是默认没有ssh服务和ftp服务的&#xff0c;我们需要自己解决一下这个问题 SSH 更新软件列表和软件 sudo apt-get update sudo apt-get upgrade安装ssh sudo apt-get install ssh启动ssh服务 sudo /etc/init.d/ssh start修改ssh服务配置文件 sudo vim /etc/…

前端工程化:发布一个属于自己的规范 npm 包

初始化项目 首先在github创建一个仓库&#xff0c;协议选择MIT&#xff0c;gitignore选择Node&#xff0c;添加README.md描述文件。使用git clone将项目克隆到本地。cd 进入目录&#xff0c;使用vscode打开&#xff08;终端输入code . 命令即可&#xff09;。 然后创建一个合理…

CentOS-7 安装 MariaDB-10.8

一、安装之前删除已存在的 Mysql/MariaDB 1 查找存在的 MariaDB # 注意大小写 rpm -qa | grep MariaDB # rpm -qa 列出所有被安装的rpm package &#xff08;-qa:query all&#xff09; rpm -qa | grep mariadb # grep &#xff08;缩写来自Globally search a Regular Expre…

C++ 折叠参数包:悄然增强编程效率

前言 欢迎来到&#x1f496;小K&#x1f496;的&#x1f49e;C专栏&#x1f49e;&#xff0c;本节将为大家带来折叠参数包的详细讲解&#xff0c;折叠参数包为C模板编程提供了更加灵活和强大的工具&#xff0c;可以提高代码的简洁性和可读性&#xff0c;看完后希望对你有收获 文…

室内外融合定位UWB信标定位方案

大家好&#xff0c;我是北京华星智控公司小智&#xff0c;今天我给大家介绍室内外融合定位系统方案&#xff0c;该方案室外采用北斗卫星定位技术室内采用UWB定位技术从而实现室内外精确定位无缝切换&#xff0c;实现室内外的融合定位。 室内外融合定位系统&#xff0c; 该方案…

Binder相关问题

Binder相关问题 1、Binder是什么&#xff1f;2、Binder有什么优势&#xff1f;3、Binder如何做到一次拷贝的&#xff1f;4、MMAP的原理是什么&#xff1f;5、Binder机制是如何跨进程的&#xff1f;6、为什么Intent不能传递大数据7、AIDL生成Java类细节8、四大组件底层的通信机制…

波奇学Linux:yum和vim

Linux三种安装方式 源代码安装 用户下载->软件源码->源码编译->可执行程序 rpm安装&#xff1a;相当于去官网下载Linux安装包 可能存在依赖项不匹配问题。 yum安装包 用户yum下载->软件安装包->可执行程序 yum是软件包管理器&#xff0c;解决安装源&…