Git 命令一览

一,常用操作

# 将所有修改的文件从工作区放入暂存区

git add ./     --> 放入暂存区

添加commit信息,文件从暂存区提交到本地仓库

git commit -m 'xxx'  --> 提交到本地仓库

拉取远程主机某个分支,再与本地分支合并

git pull  --> 远程与本地合并

把本地仓库的所有内容推送到远程仓库

git push     --> 推送到远程仓库

#首次添加远程分支 (分支特性-时间- 版本号)

git push --set-upstream origin fix-202312-1.0.11

# 删除远程分支;

git push origin --delete xxxxx   /    git branch -d xxxx

#更新远程分支

git remote update origin -p

以commit 或者 Tag 创建新的分支

git checkout -b <branch name> <SHA1>

git checkout -b <New Branch Name> <TAG Name>

在当前分支上执行git stash命令。将当前分支存起来,id为 84c682f;

用  git stash list 命令去查看我们“存储”的列表;

git push --force origin master  // 强制推送

分析:这是由于你拉取pull分支前,进行过merge合并更新分支操作,而其他人在你之前已经push过一个版本,导致版本不一致

第一种解决方法:比较简单

执行git config pull.rebase false

默认将pull下来的代码与现有改动的代码进行合并

但是可能会造成代码冲突,需要处理下这个问题,代码冲突如果2个人都改了同一个文件,需要联系之前push的同学,看看这块代码怎么保存

1.1 新建代码库

# 在当前目录新建一个Git代码库 git init

#新建一个目录,将其初始化为Git代码库 git init [project-name] 

# 下载一个项目和它的整个代码历史 git clone [url]

1.2 配置

# 设置提交代码时的用户信息

git config [--global] user.name "[name]"

 git config [--global] user.email "[email address]"

1.3 remote管理

# 查看远程主机网址 git remote -v 

# 删除远程主机 git remote rm origin 

# 添加远程主机 git remote add origin https:git.xxxx.git 

1.4添加和撤销操作

# 该文件内容恢复到上个commit状态 git checkout -- <file>    

# 所有文件恢复到上个commit状态 git checkout .  

# 回退到某个版本 git reset –-hard f109e83a5ae23766c86e9d259d18271a3ab53c16

#回退所有内容到上一个版本  git reset HEAD^ 

以某个commit 创建分支 

git checkout fbcdb83774c325b8383dd1f9a758ebbec5d9723d -b test_2401 // 12-02

git checkout 6f9cc664bb78b982b63305217369fc7d3084b626 -b test_2401

大概意思是本地库和远程库没有同步导致无法提交合并,冲突导致无法push

git pull origin main --allow-unrelated-histories //从远端仓库拉去不相关历史
git push origin main //推送到远端main分支

1.6 tag操作

# 展示标签
git tag
# 打标签和注释
git tag -a v0.1.2 -m "0.1.2版本"
# 给指定的commit打标签
git tag -a v0.1.1 9fbc3d0
# git push 操作不会将tag上传到服务器,需要单独上传,将v0.1.2标签提交到git服务器
git push origin v0.1.2
# 将本地所有标签一次性提交到git服务器
git push origin --tags
# 删除标签
git tag -d v0.1.2
# 删除远程的tag
git push origin --delete tag <tagname> 

二 分支操作

# 列出所有本地分支和远程分支
git branch -a
# 创建并切换分支
git checkout -b test
# 切换到远程分支
git fetch
git checkout -b test origin/test
# 新建一个分支,指向指定commit
git branch [branch] [commit]
# 新建一个分支,指向某个tag
git checkout -b [branch] [tag]
# 合并指定分支到当前分支
git merge [branch]
# 选择一个commit,将该commit改动下的代码合并进当前分支
git cherry-pick [commit]

,其它汇总

2.1 github上初始一个项目

echo "# ceshi" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:archer-wong/ceshi.git
git push -u origin master

2.2 重命名远程分支

(先删除远程分支,重命名本地分支,最后提交一个新的远程分支)

git push --delete origin devel
git branch -m devel develop
git push origin develop

2.3.gitignore文件

.gitignore 配置文件用于配置不需要加入版本管理的文件

1、语法:

所有空行或者以 # 开头的行都会被 Git 忽略。

可以使用标准的 glob 模式匹配。

匹配模式可以以(/)开头防止递归。

匹配模式可以以(/)结尾指定目录。

要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。 

星号(*)匹配零个或多个任意字符;

[abc]匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);

问号(?)只匹配一个任意字符;

如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。 

使用两个星号(*) 表示匹配任意中间目录,比如a/**/z 可以匹配 a/z, a/b/z 或 a/b/c/z等。

2、示例:

# 忽略 .a 文件
*.a
# 否定忽略 lib.a, 尽管已经在前面忽略了 .a 文件
!lib.a
# 仅在当前目录下忽略 TODO 文件, 但不包括子目录下的 subdir/TODO
/TODO
# 忽略 build/ 文件夹下的所有文件
build/
# 忽略 doc/notes.txt, 不包括 doc/server/arch.txt
doc/*.txt
# 忽略所有的 .pdf 文件 在 doc/ directory 下的
doc/**/*.pdf

   3、.gitignore不生效问题

如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

四,合并冲突解决

需要你在本地把master合到你的发布分支,解决完冲突之后,再push到远端

git merge master --allow-unrelated-histories

问题复现

在master分支已经做了一些提交,这个时候想要切换到dev分支。

如果修改的文件未提交时,当切换分支的时候会提示以下错误信息

error: Your local changes to the following files would be 

英文大意:当切换分支的时候,你当前修改的文件将会被覆盖,所以git需要你先提交你的变动或者在你切换分支之前暂存它们。

根据提示有两种解决方案

提交当前的变动(此方案会多出来一条提交记录)

git add .

git commit -m "切换分支之前暂存变动"

使用stash命令,此操作会将你当前工作区已修改未提交的内容暂存起来。并且以上一次提交的commit 信息作为记录。

git stash

五、Mac系统下查看和生成SSH Key

什么是公钥

  • 很多服务器都是需要认证的,ssh认证是其中的一种。在客户端生成公钥,把生成的公钥添加到服务器,你以后连接服务器就不用每次都输入用户名和密码了。
  • 很多git服务器都是用ssh认证方式,你需要把你生成的公钥发送给代码仓库管理员,让他给你添加到服务器上,你就可以通过ssh自由地拉取和提交代码了。

一、打开vim(terminal.app)查看本地是否存在SSH-Key
ls -al ~/.ssh
>> 如果vim输出的是如下内容:证明本地没有生成的SSH Key,请执行第二步。
No such file or directory
>> 如果vim输出的是如下内容: 证明本地已经存在SSH Key 文件,请执行第四步。
id_rsa        id_rsa.pub二、如果没有,生成新的SSH Key
ssh-keygen -t rsa -C"you_email" 三、生成并添加SSH Key
ssh-add ~/.ssh/id_rsa四、查看SSH Key
cat .ssh/id_rsa.pub

六、Windows查看本机SSH公钥,生成公钥

  1. 查看 ssh 公钥方法:

我们要想生成SSH key,首先就得先安装 SSH,对于 Linux 和 Mac 系统,其默认是安装 SSH 的,而对于 Windows 系统,其默认是不安装 SSH 的,不过由于我们安装了 Git Bash,其也应该自带了 >SSH. 可以通过在 Git Bash 中输入ssh命令,查看本机是否安装 SSH:

此结果表示我们已经安装 SSH 啦!接下来,输入ssh-keygen -t rsa命令,表示我们指定 RSA 算法生成密钥,然后敲三次回车键,期间不需要输入密码,之后就就会生成两个文件,分别为>id_rsa和id_rsa.pub,即密钥id_rsa和公钥id_rsa.pub. 对于这两个文件,其都为隐藏文件。

  1. 打开你的 git bash 窗口
  2. 进入 .ssh 目录:cd ~/.ssh
  3. 找到 id_rsa.pub 文件:ls
  4. 查看公钥:cat id_rsa.pub 或者 vim id_rsa.pub

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

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

相关文章

SpringBoot+Netty+Websocket实现消息推送

这样一个需求&#xff1a;把设备异常的状态每10秒推送到页面并且以弹窗弹出来&#xff0c;这个时候用Websocket最为合适&#xff0c;今天主要是后端代码展示。 添加依赖 <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifact…

用Go汇编实现一个快速排序算法

本代码全网首发&#xff0c;使用Go plan9 windows arm64汇编&#xff0c;实现基础版快速排序算法。 未引入随机因子的快速排序的普通Go代码长这样。 func QuickSort(arr []int) {if len(arr) < 1 {return}base, l, r : arr[0], 0, len(arr)-1for i : 1; i < r; {if arr…

软件工程 课堂测验 简答

结构化的软件设计的工具有哪些&#xff1f;各有什么特点&#xff1f; 表示软件结构的图形工具&#xff1a; 1&#xff09;层次图和HIPO图&#xff1a;层次图描绘软件的层次结构&#xff0c;一个矩形框代表一个模块&#xff0c;框间的连线表示调用关系&#xff0c;每个方框可带编…

Vue H5项目,怎么引入uni.webview sdk,调用uni postMessage实现手机蓝牙连接打印功能(uniapp)

前言 目前公司Vue H5项目&#xff0c;用webview打包成APP&#xff0c;现产品提出这样打包出来的app运行较慢&#xff0c;需要用uniapp方式&#xff08;即使用HBuilder编辑器来打包H5&#xff09;来打包&#xff0c;那需要的基座就不是安卓的基座而是uniapp的基座&#xff0c;而…

扭矩法、屈服点法哪个比较高效?——SunTorque智能扭矩系统

在机械制造和维修领域&#xff0c;拧紧螺栓和螺母是一项重要的操作。拧紧方法的合理选择和使用&#xff0c;对于确保机械设备的稳定性和安全性具有至关重要的作用。本文SunTorque智能扭矩系统将介绍两种最常用的拧紧方法&#xff0c;并探讨它们的轴力范围计算方法。一、扭矩法 …

电信网关配置管理系统后台 upload.php 文件上传漏洞复现

0x01 产品简介 中国电信集团有限公司(英文名称“China Telecom”、简称“中国电信”)成立于2000年9月,是中国特大型国有通信企业、上海世博会全球合作伙伴。 0x02 漏洞概述 电信网关配置管理系统后台 /manager/teletext/material/upload.php 接口存在文件上传漏洞,攻击者…

open3D绘制圆柱形和长方体

import time import open3d as o3d; import numpy as np;#圆柱形 mesh_cylinder o3d.geometry.TriangleMesh.create_cylinder(radius0.3,height4.0) mesh_cylinder.compute_vertex_normals() mesh_cylinder.paint_uniform_color([0.1, 0.4, 0.1]) o3d.visualization.draw_geo…

基于JAVA(springboot框架)在线拍卖竞拍系统 毕业设计开题报告

博主介绍&#xff1a;《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者&#xff0c;CSDN博客专家&#xff0c;在线教育专家&#xff0c;CSDN钻石讲师&#xff1b;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff0c;免费 项…

【数电笔记】56-消抖开关

目录 说明&#xff1a; 1. 按键抖动形成的原因 2. 按键消抖的方法 3. 用与非RS触发器构成消抖开关&#xff08;硬件消抖&#xff09; 说明&#xff1a; 笔记配套视频来源&#xff1a;B站本系列笔记并未记录所有章节&#xff0c;只对个人认为重要章节做了笔记&#xff1b;标…

飞天使-linux操作的一些技巧与知识点5-ansible之roles

文章目录 roles批量替换文件 role 的依赖关系role 的实际案例 roles tasks 和 handlers &#xff0c;那怎样组织 playbook 才是最好的方式呢&#xff1f;简 单的回答就是&#xff1a;使用 Roles Roles 基于一个已知的文件结构&#xff0c;去自动的加载 vars&#xff0c;tasks 以…

【稳定检索|投稿优惠】2024年艺术鉴赏与社会科学教育国际会议(ICAASSE 2024)

2024年艺术鉴赏与社会科学教育国际会议(ICAASSE 2024) 2024 International Conference on Art Appreciation and Social Science Education(ICAASSE) 一、【会议简介】 2024年艺术鉴赏与社会科学教育国际会议(ICAASSE 2024)&#xff0c;这场学术盛宴&#xff0c;将于2024年2月1…

系列四、DML

一、DML 1.1、概述 DML的英文全称是Data Manipulation Language&#xff0c;中文意思为&#xff1a;数据操作语言&#xff0c;用来对数据库表中的数据进行增、删、改操作&#xff0c;这些操作大家在日常工作中常用&#xff0c;这里不再赘述。

郝斌C语言自学教程笔记

赫斌C语言——笔记目录 c语言编程预备知识流程控制函数变量指针结构体位运算符 前段时间康哥看我C语言基础不牢,推荐我学习郝斌老师的C语言课程&#xff0c;花2周看完之后发现确实是目前所看的C语言课程中最好的&#xff0c;不仅非常适合入门&#xff0c;而且对即使学了几年C语…

怒斥以色列后突发心脏病倒地,土耳其议员抢救无效身亡!

这两天互联网上热传一段视频&#xff0c;说的就是土耳其议员在议会演讲时突然倒地晕厥&#xff0c;两天后就去世了。这可真是让人震惊啊&#xff01; 据说这位议员是土耳其反对党幸福党的&#xff0c;名字叫比特梅兹。他在议会发表批评以色列的言论时&#xff0c;情绪过于激动…

安装2023最新版Java SE 21.0.1来开发Java应用程序

安装2023最新版Java SE 21.0.1来开发Java应用程序 Install the latest version of Java SE 21.01 to Develop Java Applications By JacksonML 本文简要介绍如何下载和安装2023年最新版Java Development Kit (简称JDK&#xff0c;即Java开发工具包标准版&#xff09;21.0.1&…

android webrtc入门教程一(简单一对一通话实现)

webrtc Android入门非常的简单不要被那些博客给带乱了&#xff0c;我看了几篇这方面的博客都是给你零散的代码更本就不能实现通话&#xff0c;学这个要先从全局流程再到详细步骤来学习。 简单介绍下实现webrtc通话总体流程并且给出全部代码&#xff0c;复制粘贴即可 本文福利&…

长尾问题之LDAM

做法&代码&公式 step1: 全连接层的权重W和特征向量X都归一化,相乘 W * X P (得到各个类别的概率) # 定义权重&#xff0c;初始化 weight nn.Parameter(torch.FloatTensor(num_classes, num_features)) weight.data.uniform_(-1, 1).renorm_(2, 1, 1e-5).mul_(1e5)#…

Java 线程的基本概念

创建和运行线程 方法一&#xff0c;直接使用 Thread // 创建线程对象 Thread t new Thread() {public void run() {// 要执行的任务}};// 启动线程 t.start();例如&#xff1a; // 构造方法的参数是给线程指定名字&#xff0c;推荐 Thread t1 new Thread("t1") …

网络安全——SQL注入实验

一、实验目的要求&#xff1a; 二、实验设备与环境&#xff1a; 三、实验原理&#xff1a; 四、实验步骤&#xff1a; 五、实验现象、结果记录及整理&#xff1a; 六、分析讨论与思考题解答&#xff1a; 七、实验截图&#xff1a; 一、实验目的要求&#xff1a; 1、…

《Cadence 16.6电路设计与仿真从入门到精通》——1.4 Cadence SPB 16.6的启动

《Cadence 16.6电路设计与仿真从入门到精通》——1.4 Cadence SPB 16.6的启动  2017-05-027334 版权 简介: 本节书摘来自异步社区《Cadence 16.6电路设计与仿真从入门到精通》一书中的第1章,第1.4节,作者: 王超 , 胡仁喜等 更多章节内容可以访问云栖社区“异步社区”公…