Git客户端使用之命令行

一、git客户端命令行的使用

1、创建本地用户并绑定ssh-key到gitlab

#在本地注册用户,这个用户随便创建它就是与git仓库连接的一个用户,不过最好喝git仓库用户一样有利于区分。
git config --global user.name "wenqiang1"
git config --global user.email "wenqiangit1@163.com"# 生成ssh-key并绑定gitlab
# ssh-keygen.exe -t rsa -C "wenqiangit1@163.com" -b 4096    # 生成ssh-key windows用法
# ssh-keygen -t rsa -C "gery_sunjian@163.com" -b 4096       # 生成ssh-key Mac用法
# ssh-keygen -t rsa                                         # 生成ssh-key linux用法
# cat ~/.ssh/id_rsa.pub                                     # 查看并复制公钥
登录github或gitlab——点击Settings——点击SSH and GPG keys——New SSH key——添加公钥

2、拉代码、提交代码到主分支(主分支用于直接上线)

(0) 本地测试git是否能通过github验证
$ ssh -T git@github.com
Hi wenqiang! You've successfully authenticated, but GitHub does not provide shell access.(1)方法一:如果web端已经创建了仓库,可以用下面的命令把web端的仓库克隆下来并在该仓库中创建和提交新的代码
git clone git@172.16.12.34:wenqiang1/2.git  #将web端的项目克隆到本地
git clone -b 分支  git@github.com:clouddeepcn/SDP-lite.git
cd 2                 #进入项目目录
git pull origin master   #把远程仓库主分支的内容同步到本地保证远程仓库和本地数据一致
touch README.md      #在本地创建新的文件
git add README.md    #添加新的文件到本地暂存区域
git status                  #查看项目的提交状态
git commit -m "add README20200707"  #将暂存区域的文件提交到本地仓库并做备注
git push -u origin master   #本地仓库的文件提交到远程仓库的主分支(2)方法二:还有一种方法能把web端仓库拉下来,首先在web端创建一个空项目existing_folder
注意:仓库existing_folder和仓库2是不同名的同一个仓库
mkdir existing_folder     #然后再本地也创建同样名字的目录
cd   existing_folder      #进入这个目录
git init                  #这个命令就可以把新创建的目录变成git仓库(本地仓库existing_folder和远程仓库2相当于1一仓库,他们里面放的是相同的文件)
git remote add origin git@172.16.12.34:wenqiang1/2.git #与web端的仓库建立连接,这一步就相当于克隆
git pull origin master   #把远程仓库主分支的内容同步到本地保证远程仓库和本地数据一致
touch 123abc.txt           #随便创建点东西
git add .                  #点表示把所有内容添加到本地暂存区域
git commit -m "all"        #把暂存区的所有代码提交到本地仓库
git push -u origin master   #最后把本地仓库的代码上传到web端远程仓库的主分支

3、创建子分支,并提交代码到子分支(子分支用于开发测试)

(1) 创建子分支
# git checkout -b dev  # 创建一个dev子分支
# git checkout dev     # 切换到子分支
# git branch -a        # 查看所有分支,*号表示正在使用的分支
* devmasterremotes/origin/master(2) 提交代码到子分支
# cd /data/myproject-test    # 进入仓库
# tuch aa                    # 创建一个文件
# git push -u origin dev     # 将代码推送到远程仓库的子分支(3) 把所有分支都拉下来
# git fetch

(3.1)可以看到子分支里面多了一个aa文件,而master分支里面是没有aa文件的
请添加图片描述

4、合并分支:通过命令将dev合并到master主分支

(1) 先在dev分支创建一些文件并提交到子分支
# git checkout dev    # 切换到子分支
# git branch          # 查看当前工作在子分支
* devmaster
# touch 2222.txt     # 创建文件并提交到远程仓库的子分支(此时远程仓库的dev有2222.txt master分支没有2222.txt)
# git add .
# git commit -m "2222.txt"(2) 切换到master分支,并更新代码到最新状态
# git checkout master
# git pull origin master   (3) 将本地的dev子分支合并到本地的master主分支中
# git merge dev
Updating 2772fb0..a2b4d70
Fast-forward2222.txt | 01 file changed, 0 insertions(+), 0 deletions(-)create mode 100644 2222.txt(4) 将本地的master分支代码提交到远程仓库的master分支上
# git add .
# git commit -m "master merge dev"
# git push origin master
Total 0 (delta 0), reused 0 (delta 0)
To git@192.168.1.12:develpment/myproject-test.git2772fb0..a2b4d70  master -> master
Branch master set up to track remote branch master from origin.(5) 每次合并分支之后,都要把之前的子分支删掉,下次再创建新的子分支
# git branch -d dev        #删除旧的子分支
4.1、直接在gitlab上合并子分支到master分支

(4.1)开发把远程仓库拉下来并创建子分支

# git clone git@192.168.1.12:develpment/myproject-test.git
# cd myproject-test/
# git checkout -b dev      # 创建分支
# git branch               # 查看当前所在分支
* devmaster

(4.2)创建一些文件并提交到子分支

# git pull origin master        # 先把master分支的代码更新到dev分支,使dev分支代码保持最新状态
# touch ALEX.txt
# git add .
# git commit -m "ALEX.txt"
# git push -u origin dev         # 把创建的新代码提交到dev分支

(4.3)此时dev分支有ALEX.txt 而master分支没有ALEX.txt
(4.4)使用开发账户登录gitlab提交分支合并请求(前提是master分支受保护的情况下才去这么做)
(4.4.1).选择项目仓库——点击【合并请求】
请添加图片描述
(4.4.2) 选择【新建合并请求】
请添加图片描述
(4.4.3)将dev分支合并到master分支并点击【比较分支后继续】,填写标题和描述,完成后选择【提交 合并请求】
请添加图片描述
请添加图片描述
请添加图片描述
(4.4.4)选择【提交 合并请求】后,会看到【Merge】按钮是灰色的,因为开发自己是不能给自己审核的,只能由他的主管或更高权限用户来审核
请添加图片描述
(4.4.5) 登录管理员账户、或开发总监账户去处理开发人员提交的合并请求
1>.点击项目仓库——选择【合并请求】
请添加图片描述
2>.点击【dev合并master 第1次】

请添加图片描述
3>.点击【Merge】就可以完成dev到master的合并了

请添加图片描述

4>.回到项目仓库就可以看到master分支已经有ALEX.txt文件了,并且dev分支已经被删除了(合并后开发在自己的服务器也要删除相应的dev分支)
请添加图片描述

5、checkout 删除本地文件与恢复

# 删除文件
(1)删除本地文件和远程仓库文件
git pull origin master   #把远程仓库主分支的内容同步到本地保证远程仓库和本地数据一致
git rm creat_user1.sh                   #删除文件
git commit -m "删除了creat_user1.sh"     #把现有的文件提交到本地仓库
git push -u origin master                #把本地仓库同步到远程仓库# 恢复本地误删文件
(1)如果本地误删了文件远程版本库还有的话可以恢复
[root@localhost Shell]# rm -f creat_user1.sh    #本地误删文件
[root@localhost Shell]# git checkout  -- creat_user1.sh  #恢复命令
[root@localhost Shell]# git checkout .          #恢复左右文件到最初状态

6、回滚代码

(1) 查看之前提交的历史记录
# git log
commit 735fea6d66ea40b0b66e5fdc3e6e1b9dbeb4089a    # 提交历史id
Author: wenqiang <wenqiangit@163.com>
Date:   Tue Jun 23 07:26:18 2020 -0400             # 提交历史时间(2) 回滚到上个版本
# git reset --hard HEAD^                                       # 回滚到上个版本
# git reset --hard a014e8fa410289b62380a78ce7cf8db51a3ad6fb    # 回滚到指定版本 
--hard选项表示彻底将工作区、暂存区和版本库记录恢复到指定的版本库,HEAD^表示回滚到上一个版本,HEAD^^表示回滚到上上一个版本,以此类推,如果要回滚到上100个版本,可以使用HEAD~100(3) 将回滚后的版本强推到远程仓库
# git push -f origin master(4) 如果文件只是提交到了暂存区,还没有提交到远程版本库,可以通过如下命令将暂存区代码撤回
(1)touch 1.txt     #创建了一个新的文体
(2)git add 1.txt   #将这个文件提交到暂存区
(3)git status      #查看提交状态
(3)git reset HEAD h.txt    #将提交的内容撤回

7、拉代码脚本

#!/bin/bash
# 拉代码到tomcat站点目录# 进入本地git仓库
cd /root/myproject1if [[ $? -eq 0 ]]
then# 从远端git仓库拉去代码到本地仓库git pull origin master# 将本地代码推送到tomcat站点目录并替换\cp test1  /usr/local/apache-tomcat-8.5.55/webapps/ROOT/ 
fi

8、回滚脚本

#!/bin/bash
# git回滚代码到上个版本并推送到tomcat# 进入本地git仓库
cd /root/myproject1if [[ $? -eq 0 ]]
then# 回滚到上个版本,并将本地代码强制推到远程仓库git reset --hard HEAD^# git push -f origin master  这一步可以不做# 将回滚后的代码重新拉下来并推送到tomcat站点目录并替换git pull origin master\cp test2  /usr/local/apache-tomcat-8.5.55/webapps/ROOT/ 
fi

9、让windows下ssh-key既支持gitlab 又支持github

# 这里测试结果是id_rsa的文件不能删除,否则ssh -T gitlab不生效$ ls
SDP-lite/       config      id_rsa      id_rsa_github  known_hosts
backup_id_rsa/  config.bak  id_rsa.pub  id_rsa_gitlab$ cp backup_id_rsa/id_rsa  ./id_rsa_github
$ cp id_rsa  ./id_rsa_gitlabcat ~/.ssh/config
#github
Host github.com
HostName github.com
User git
IdentityFile "C:\Users\redcore.000\.ssh\id_rsa_github"
ProxyCommand nc -v -x 40.125.172.218:1090 %h %p#gitlab
Host gitlab
HostName gitlab.clouddeep.cn
User git
IdentityFile "C:\Users\redcore.000\.ssh\id_rsa_gitlab"[redcore@mac-dev-11 ~/.ssh]$ ssh -T git@gitlab.clouddeep.cn
Welcome to GitLab, @qiang.wen!
[redcore@mac-dev-11 ~/.ssh]$ ssh -T git@github.com         
Connection to github.com port 22 [tcp/ssh] succeeded!
Hi clouddeep-devops! You've successfully authenticated, but GitHub does not provide shell access.

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot+Vue+Uniapp智能社区服务小程序系统(源码+lw+部署文档+讲解等)

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

web 0基础第一节 文本标签

学习web语言 首先推荐安装一个vs code 的软件 这个普及度更广一点 兼容性好 网上有很多下载的教程 这里就直接从 html5 的内容开始说了. 这是一个html文件的基本结构 在vs code 中使用英文的 ! 可快捷设置这样的结构 <!-- --> 是在html写注释的结构 以后的…

【Java数据结构】优先级队列(堆)

【本节目标】 1. 掌握堆的概念及实现 2. 掌握 PriorityQueue 的使用 一. 优先级队列 1 概念 前面学过队列&#xff0c;队列是一种先进先出 (FIFO) 的数据结构 &#xff0c;但有些情况下&#xff0c; 操作的数据可能带有优先级&#xff0c;一般出队 列时&#xff0c;可…

【前端】如何制作一个自己的网页(8)

以下内容接上文。 CSS的出现&#xff0c;使得网页的样式与内容分离开来。 HTML负责网页中有哪些内容&#xff0c;CSS负责以哪种样式来展现这些内容。因此&#xff0c;CSS必须和HTML协同工作&#xff0c;那么如何在HTML中引用CSS呢&#xff1f; CSS的引用方式有三种&#xff1…

【LeetCode算法笔记】Day1:动态规划基础

目录 动态规划简介动态规划的定义动态规划的核心思想动态规划的简单例子 动态规划特征最优子结构性质重复子问题性质无后效应 动态规划的基本思路 动态规划简介 动态规划的定义 简称DP,是一种求解多阶段决策过程最优化问题的方法。在动态规划中&#xff0c;通过把原问题分解为…

Golang | Leetcode Golang题解之第478题在圆内随机生成点

题目&#xff1a; 题解&#xff1a; type Solution struct {radius, xCenter, yCenter float64 }func Constructor(radius, xCenter, yCenter float64) Solution {return Solution{radius, xCenter, yCenter} }func (s *Solution) RandPoint() []float64 {r : math.Sqrt(rand.…

MySQL面试专题-索引

一、MySQL为什么要选择B树来存储索引&#xff1f; MySQL的索引选择B树作为数据结构来进行存储&#xff0c;其本质原因在于可以减少IO次数&#xff0c;提高查询效率&#xff0c;简单来说就是保证在树的高度不变的情况下可以存储更多的数据。 &#xff08;一&#xff09;IO角度 在…

约克VRF打造舒适绿色无污染的生活环境

在生活的各个方面&#xff0c;约克VRF都采取了多种措施助力碳中和。 采用国际领先的空气源热泵技术&#xff0c;只需少量电力就可将空气中的能量转化为室内热量&#xff0c;被称为“大自然的搬运工”&#xff01;COP能效值最高可达4.24&#xff08;每用一度电产生4.24度电热量&…

第 3 章:使用 Vue 脚手架

1. 初始化脚手架 1.1 说明 Vue 脚手架是 Vue 官方提供的标准化开发工具&#xff08;开发平台&#xff09;。最新的版本是 5.x。文档: https://cli.vuejs.org/zh/ 1.2 具体步骤 第一步&#xff08;仅第一次执行&#xff09;&#xff1a;全局安装vue/cli。 npm install -g vu…

衡石分析平台系统分析人员手册-仪表盘控件概述

控件​ 控件是仪表盘的基本组成单位。控件种类很多&#xff0c;有展示分析数据的图表类类控件&#xff0c;有展示图片、文字的展示类控件&#xff0c;还有可导出数据、刷新数据、过滤数据等功能类控件。一个完整的仪表盘由多种不同功能的控件构成。 控件类型​ 根据控件是否展…

海外动态代理IP的优缺点有哪些? 动态代理IP与静态代理IP的区别是什么?

海外动态代理IP的优缺点分析 在全球化的数字时代&#xff0c;网络安全和隐私保护的重要性日益凸显。海外动态代理IP作为一种灵活的网络工具&#xff0c;因其独特的特性在多个领域得到了广泛应用。然而&#xff0c;正如任何技术一样&#xff0c;它也有其优点和局限性。以下&…

Shell案例之一键部署mysql

1.问题 我认为啊学习就是一个思考的过程&#xff0c;思考问题的一个流程应该是&#xff1a;提出问题&#xff0c;分析问题&#xff0c;解决问题 在shell里部署mysql服务时&#xff0c;我出现一些问题&#xff1a; 1.安装mysql-server时&#xff0c;没有密钥&#xff0c;安装…

PE结构之导入表

流程图: 文件中\样式 加载到进程中时 加载到进程中时的过程,一张图不够放 续图 整个流程 补充导入表结构IMAGE_IMPORT_DESCRIPTOR 中的ForwarderChain字段, 该解释为 "某个导入模块涉及转发&#xff08;即该模块的某些函数从其他模块转发过来&#xff09;&#xff0c;那么…

windows安装deepspeed setup.py 207行找不到文件

一直报莫名奇妙的错误&#xff0c;查了半天也没查到 去看了一下源码&#xff0c;需要安装git&#xff0c;我没有安装 git命令获得信息也没啥用 直接注释掉 成功运行

YOLO11改进|注意力机制篇|引入轴向注意力Axial Attention

目录 一、【Axial Attention】注意力机制1.1【Axial Attention】注意力介绍1.2【Axial Attention】核心代码二、添加【Axial Attention】注意力机制2.1STEP12.2STEP22.3STEP32.4STEP4三、yaml文件与运行3.1yaml文件3.2运行成功截图一、【Axial Attention】注意力机制 1.1【Axi…

【JPCS独立出版,EI检索稳定】第三届能源互联网及电力系统国际学术会议(ICEIPS 2024)

第三届能源互联网及电力系统国际学术会议&#xff08;ICEIPS 2024&#xff09; 2024 3rd International Conference on Energy Internet and Power Systems ICEIPS 2024已成功申请JPCS - Journal of Physics: Conference Series (ISSN:1742-6596) ICEIPS 2024独立出版&…

TCP——Socket

应用进程只借助Socket API发和收但是不关心他是怎么进行传和收的 数据结构 图示Socket连接 捆绑属于隐式捆绑

200Kg大载重多旋无人机价格高昂技术分析

200Kg大载重多旋无人机作为一种高度专业化的航空工具&#xff0c;其价格相较于普通无人机显著较高&#xff0c;这主要是由于其在技术设计和生产过程中所需的高要求所致。以下是对其价格高昂的技术分析&#xff1a; 一、高性能材料与结构设计 1. 高强度轻量化材料&#xff1a;…

Python,Swift,Haskell三种语言在使用正则表达式上的方法对比

这里插入图片描述](https://i-blog.csdnimg.cn/direct/fea1494d0d0c4c9880881493929a8b91.png)在讨论 Python、Swift 和 Haskell 在正则表达式处理字符串方面的优缺点时&#xff0c;可以从它们对正则表达式的支持、灵活性和性能进行比较。以下通过具体的正则表达式字符串匹配例…

【前端】如何制作一个自己的代码(10)

接上文。 颜色名称 将color的属性值&#xff0c;设置成颜色的英文名就能显示对应的颜色。 比如&#xff0c;这里的red表示红色&#xff0c;这种设置颜色的方式是最简单的。 但是不同的浏览器&#xff0c;对颜色的解析可能存在差异&#xff0c;实际开发中不建议使用颜色名称来…