当前位置: 首页 > news >正文

git的命令操作

1、基本命令

目录

1、基本命令

创建 Git 存储库

添加文件/目录到索引

将更改提交到本地存储库

撤消上一次提交的更改

显示工作树状态

显示对工作树和索引的更改

显示提交日志

显示提交详细信息

重命名文件

从工作树和索引中移除文件

从工作树中移除未跟踪文件

将文件恢复到工作树

从索引中移除文件

仅将修改和删除的文件添加到索引

2、远程命令

复制存储库

添加远程存储库

显示远程存储库列表

从远程存储库签出分支

创建分支更改并将其推送到远程存储库

检查远程存储库中的分支更改

从远程存储库获取并合并最新的分支更改

从远程存储库删除分支

在远程存储库中创建标签

从远程存储库删除标签

修改远程存储库地址

 重命名远程存储库

3、git的分支命令

显示分支列表

创建分支

重命名分支

删除分支

切换分支

合并分支

4、提交历史记录

修改之前的提交和消息

修改并移动过去的提交和消息

退出变基

显示参考日志

显示分支提示的参考日志

移除以前的提交

重置变基

取消之前的重置

从另一个分支复制提交

搜索提交消息

5、Git 暂存命令

暂存当前的更改

显示暂存列表

从暂存中恢复更改

删除暂存

删除所有暂存

6、标签命令

显示标签列表

创建标签

创建带有信息的标签

删除标签

7、Git config 命令

设置用户名和电子邮件

彩色显示输出

为命令设置别名

从版本控制跟踪中删除文件

在版本控制下跟踪空目录

显示设置

设置与代理服务器的 HTTP 连接

建立到用户认证代理服务器的 HTTP 连接

8、故障排除

使用 SSH 连接到远程存储库时出现“Permission denied (publickey)”错误

无法通过其 HTTPS URL 克隆远程存储库

推送到远程存储库的更改没有反映在那里

9、Git 与 SVN 命令

        Git-Subversion 命令对照表


创建 Git 存储库

$ git init

添加文件/目录到索引

$ git add <filepattern>

-p选项,系统将提示您接受/拒绝已更改文件的特定部分。

-i选项,则可以交互式地暂存更改

将更改提交到本地存储库

$ git commit

-a选项就像一个快捷方式,可以检测更改的文件 (新添加的文件除外),将它们添加到索引, 并提交它们。

-m选项允许您同时提交和指定提交消息。如果您不指定-m,将打开一个文本编辑器,提示您输入提交消息。

撤消上一次提交的更改

$ git revert HEAD

Git revert 命令将一个提交作为参数,并创建一个新的提交来撤消该提交所做的更改。

显示工作树状态

$ git status

添加-s选项将只显示已更改的文件名。

添加-s选项,后面再接-b选项,将在输出中包含分支名称

显示对工作树和索引的更改

$ git diff

在默认情况下,diff 命令将会显示工作树和索引之间的差异。

如果添加--cached选项,将显示索引和 HEAD 之间的差异。

如果您指定提交哈希,将会显示工作树和当前的 HEAD/提交之间的差异

显示提交日志

$ git log

显示提交详细信息

$ git show <commit>

重命名文件

$ git mv <oldfilename> <newfilename>

从工作树和索引中移除文件

$ git rm <file>

从工作树中移除未跟踪文件

$ git clean

添加-n选项将只显示将要移除的文件。添加-f选项实际上会移除文件

将文件恢复到工作树

$ git checkout -- <file>

从索引中移除文件

$ git reset HEAD -- <file>

仅将修改和删除的文件添加到索引

$ git add -u

2、远程命令

复制存储库

$ git clone <url>

克隆命令将在本地计算机上创建现有远程存储库的副本。它还将配置本地存储库以自动跟踪远程存储库。

该配置允许您执行 Git push 命令或 Git fetch/pull 命令而不指定远程存储库名称

添加远程存储库

$ git remote add <name>

显示远程存储库列表

$ git remote

如果添加-v选项,您就可以查看远程存储库的详细信息

从远程存储库签出分支

$ git checkout <branch>

创建分支更改并将其推送到远程存储库

$ git push <repository> <refspec>

检查远程存储库中的分支更改

$ git fetch <repository> <refspec>

获取命令允许您从远程存储库检索最新数据,以检查更改的内容。但是,此命令不会自动将更改合并到您现有的任何工作中。

repositoryrefspec参数都是可选的。省略存储库名称将产生与推送命令相同的操作。省略refspec参数将确保获取可应用于该远程存储库中的所有分支

从远程存储库获取并合并最新的分支更改

$ git pull <repository> <refspec>

pull 命令将从远程存储库中检索最新更改的内容,并将其直接合并到您的本地存储库中。基本上,pull = fetch + merge

repositoryrefspec参数都是可选的。省略存储库名称将产生与推送命令相同的操作。省略refspec参数将确保拉取仅应用于当前分支。

从远程存储库删除分支

$ git push --delete <repository> <branchname>

删除远程存储库中的分支。

在推送命令中加入--delete选项,从远程存储库中删除指定的分支

在远程存储库中创建标签

$ git push <repository> <tagname>

如果添加--tags选项,则本地存储库中存在的所有标签都将被推送到远程存储库中,并与您指定的任何符号引用一起在远程存储库中创<tagname>

从远程存储库删除标签

$ git push --delete <repository> <tagname>

使用推送命令的--delete选项可以从远程存储库中删除指定的标签。

修改远程存储库地址

$ git remote set-url <name> <newurl>

 重命名远程存储库

$ git remote rename <old> <new>

3、git的分支命令

显示分支列表

$ git branch

添加-r选项还将列出远程跟踪分支。添加-a选项将同时显示远程和本地分支

创建分支

$ git branch <branchname>

重命名分支

$ git branch -m <oldbranch> <newbranch>

删除分支

$ git branch -d <branchname>

如果该分支还没有完全与上游分支合并,或者在 HEAD 中如果没有上游,Git 将不允许您删除该分支。但是,您可以指定-D以强制删除它,而不管其合并状态如何。

切换分支

$ git checkout <branch>

添加-b选项将创建一个新分支,并切换到它

合并分支

$ git merge <branch>

添加--no-ff选项将导致 git merge 命令都会是创建合并提交,而不是快进。这很有用,因为它允许您保留合并前分支的历史记录信息。

当您添加--squash选项时,Git 会创建一个代表合并更改的单个提交,而不是创建合并提交。 此提交包含来自合并分支的更改,但不包含任何与合并分支或合并过程本身相关的信息

4、提交历史记录

修改之前的提交和消息

$ git commit --amend

添加--amend选项来覆盖您正在处理的分支的最新提交。

当索引中没有文件时,您可以通过添加--amend选项重新提交之前的提交,系统将提示您编辑现有的提交消息。

修改并移动过去的提交和消息

$ git rebase -i <commit>

添加提交哈希,将列出直到最新提交的所有提交的列表。找到您要修改的提交,并将该行从pick更改为edit,然后保存并退出。

接下来,添加--amend选项来提交。将显示用于添加消息的界面。修改消息。

$ git commit --amend

最后,添加--continue选项来运行 rebase。

$ git rebase --continue

退出变基

$ git rebase --abort

通过添加--abort选项,您可以退出变基操作。

显示参考日志

$ git reflog

显示分支提示的参考日志

$ git reflog <ref>

移除以前的提交

$ git reset --hard HEAD~

重置变基

$ git reset --hard <commit>

取消之前的重置

$ git reset --hard ORIG_HEAD

ORIG_HEAD 指的是重置发生之前的提交。您可以使用 reset to ORIG_HEAD 恢复之前的重置

从另一个分支复制提交

$ git cherry-pick "<commit>"

搜索提交消息

$ git log --grep "<pattern>"

5、Git 暂存命令

暂存当前的更改

$ git stash save

显示暂存列表

$ git stash list

从暂存中恢复更改

$ git stash pop

删除暂存

$ git stash drop

删除所有暂存

$ git stash clear

6、标签命令

显示标签列表

$ git tag  

添加-n选项将显示每个标签上的注释

创建标签

$ git tag <tagname>

创建带有信息的标签

$ git tag -a <tagname>

删除标签

$ git tag -d <tagname>

7、Git config 命令

设置用户名和电子邮件

$ git config --global user.name <username>

$ git config --global user.email <mailaddress>

如果没有--global选项,此设置将仅应用于特定存储库。

彩色显示输出

$ git config --global color.ui auto

为命令设置别名

$ git config --global alias.<aliasname> <commandname>

从版本控制跟踪中删除文件

$ echo <filename> >> .gitignore

.gitignore文件下添加文件路径。Git 将不再管理这些文件。您必须提交.gitignore文件才能发挥作用

在版本控制下跟踪空目录

$ cd <dirname>

$ touch .gitkeep

Git 不会跟踪空目录。如果您想将其添加到版本控制中,则需要在该目录中放置一个文件。人们通常做的一个常见做法是在空目录中添加一个.gitkeep文件。

显示设置

$ git config --global --list

设置与代理服务器的 HTTP 连接

将以下设置添加到.gitconfig文件的 http 项。

[http] proxy = <address of the proxy server>:<port of the proxy server>

也可以使用以下 config 命令对其进行配置:

$ git config --global http.proxy <address of the proxy server>:<port of the proxy server>

建立到用户认证代理服务器的 HTTP 连接

将以下设置添加到.gitconfig文件的 http 项

[http] proxy = http://<username>:<password>@<address of the proxy server>:<port of the proxy server>

您也可以使用以下 config 命令对其进行配置:

$ git config --global http.proxy http://<username>:<password>@<address of the proxy server>:<port of the proxy server>

8、故障排除

使用 SSH 连接到远程存储库时出现“Permission denied (publickey)”错误

首先,您需要确保以下几点:

  • URL 是否正确?
  • 密钥是否在本地机器中正确配置?
  • 公钥是否在远程正确配置?

您可以通过运行以下命令,来验证与 Backlog 远程存储库对应的公钥/密钥配置:

$ ssh <space>@<space>.git.backlog.com

用您拥有的 Backlog 空间取代<space>。(例如,对于空间demo.backlog.com,它将是demo@demo.git.backlog.com)

如果设置正确,您将看到以下输出。如果您看到错误消息,请重复上述步骤并确保您做对了。

Hi yourname! You've successfully authenticated, but Backlog does not provide shell access. Connection to git.backlog.com closed.

无法通过其 HTTPS URL 克隆远程存储库

在旧版的 Git 上,您可能偶尔会在执行推送或拉取时遇到问题。建议您使用最新的 Git 版本或高于 v2 的版本。如果您使用的是 Source Tree 或 TortoiseGit 等 Git 客户端,请使用相应客户端附带的 Git 版本。

推送到远程存储库的更改没有反映在那里

执行推送时,您可能会遇到以下消息。当您从新的本地存储库推送时,通常会发生这种情况

$ git push

No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'main'. Everything up-to-date

通过在执行推送时省略分支名称,Git 将默认假定您正在尝试将当前更改推送到与本地分支同名的远程分支。如果尚未在远程存储库中创建主分支,则会发生这种情况。(我们从本地主分支推送。)在这种情况下,我们将必须在执行推送时明确使用分支名称。

$ git push -u origin main

通过这样做,主分支将自动在远程存储库中创建。您下次运行推送时,可以省略分支名称。

9、Git 与 SVN 命令

Git-Subversion 命令对照表

CommandOperationSubversion
git clone复制存储库svn checkout
git commit记录对文件历史记录的更改svn commit
git show查看提交详细信息svn cat
git status查看状态svn status
git diff查看差异svn diff
git log查看日志svn log
git add添加svn add
git mv移动svn mv
git rm删除svn rm
git reset取消更改svn revert1
git branch创建分支svn copy2
git checkout切换分支svn switch
git merge合并svn merge
git tag创建标签svn copy2
git pull更新svn update
git fetch更新svn update
git push反映在远程的更改svn commit3
.gitignore忽略文件列表.svnignore
  1. SVN 中的 Revert 取消更改,但 Git 中的 Revert 否定更改。
  2. 分支和标签在 SVN 中相同,但在 Git 中不同。
  3. SVN 没有本地存储库与远程存储库的概念;因此,提交直接反映在远程中。

 

相关文章:

git的命令操作

1、基本命令 目录 1、基本命令 创建 Git 存储库 添加文件/目录到索引 将更改提交到本地存储库 撤消上一次提交的更改 显示工作树状态 显示对工作树和索引的更改 显示提交日志 显示提交详细信息 重命名文件 从工作树和索引中移除文件 从工作树中移除未跟踪文件 将…...

Nginx+keepalived实现七层的负载均衡

1.keepalived VRRP 介绍 keepalived是什么&#xff1f; keepalived是集群管理中保证集群高可用的一个服务软件&#xff0c;用来防止单点故障。 keepalived工作原理 keepalived是以VRRP协议为实现基础的&#xff0c;VRRP全称Virtual Router Redundancy Protocol&…...

至少在两个数组中出现的值

给你三个整数数组 nums1、nums2 和 nums3 &#xff0c;请你构造并返回一个 元素各不相同的 数组&#xff0c;且由 至少 在 两个 数组中出现的所有值组成。数组中的元素可以按 任意 顺序排列。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,1,3,2], nums2 [2,3], nums3 [3]…...

子女关于骨灰发生争议,骨灰该如何安置?

亲属去世后&#xff0c;争房产、争车辆、争存款的事情不少&#xff0c;但争骨灰却是稀罕事儿。近日&#xff0c;江苏省无锡市梁溪区人民法院审结了一起人格权案件&#xff0c;马某与继母因父亲老马骨灰安葬引发的纷争&#xff0c;历经2年多终于落幕。   老马与前妻离婚后&…...

android隐藏输入法的一些尝试,最后一个可行

一、背景&#xff1a; 基于android开发自己的输入法app&#xff0c;用户需要手动收起输入法 二、准备工作&#xff1a; 定义类 public class CustIMS extends InputMethodService {} 和 xml声明三、尝试验证&#xff1a; 1、CustIMS.hideWindow(); 结论&#xff1a;这个在…...

【go-zero】go-zero 脚手架 simple-admin 第一章:通过goctls生成rpc整个项目 | go-zero整合 ENT数据库orm框架

往期回顾 【simple-admin 开篇:安装 了解 goctls】https://ctraplatform.blog.csdn.net/article/details/133988572 本章内容 往期回顾一、simple-admin 创建rpc项目实战1、创建git仓库1.1、创建任意git仓库1.2、克隆到本地2、创建RPC项目2.1、goctls 安装 rpc项目2.2、复制项…...

Ubuntu 使用 nginx 搭建 https 文件服务器

Ubuntu 使用 nginx 搭建 https 文件服务器 搭建步骤安装 nginx生成证书修改 config重启 nginx 搭建步骤 安装 nginx生成证书修改 config重启 nginx 安装 nginx apt 安装&#xff1a; sudo apt-get install nginx生成证书 使用 openssl 生成证书&#xff1a; 到对应的路径…...

团队表 -多级团队设计

团队表 -多级团队设计 user_team团队表 &#xff0c;如果存在子团队 1.我们可以通过每一个团队字段加一个parentid &#xff08;相当于一对多的关系&#xff09; 2.还可以设置一个字段CodingNum,比如这样: //系统为了管理查询团队自动生成的有序编号 可以使用3位数代表一个…...

LeetCode每日一题——2103. Rings and Rods

文章目录 一、题目二、题解 一、题目 There are n rings and each ring is either red, green, or blue. The rings are distributed across ten rods labeled from 0 to 9. You are given a string rings of length 2n that describes the n rings that are placed onto the…...

ant-design-vue form表单自定义校验规则

<a-form-itemlabel"市场价"class"status-barcode"name"marketPrice":rules"[{ required: true, message: },{ validator: validateNumber },]"><a-inputshow-count:maxlength"10"v-model:value"formState.ma…...

软件工程:小组开发过程技术(VS VSS UNIX C++)

&#xff08;注&#xff1a;这个东西是2007年写的&#xff0c;算是个缅怀&#xff0c;或是个吐槽。所有注都是本次发布新加的。&#xff09; 简介 本文讲述完全没有软件工程经验的软件小组如何借助VS VSS等工具为UNIX开发C程序&#xff0c;实现在小组规模的初级开发过程。这不…...

算法----从字符串中移除星号

题目 给你一个包含若干星号 * 的字符串 s 。 在一步操作中&#xff0c;你可以&#xff1a; 选中 s 中的一个星号。 移除星号 左侧 最近的那个 非星号 字符&#xff0c;并移除该星号自身。 返回移除 所有 星号之后的字符串。 注意&#xff1a; 生成的输入保证总是可以执行题…...

JVS低代码表单引擎助你打造高效表单设计流程

在日常的设计表单过程中&#xff0c;常常会有需要录入一大段文字的场景&#xff0c;例如评论、留言、产品介绍、内容说明等场景&#xff0c;那么简单的文本框组件就不满足了&#xff0c;这里JVS提供了 两种描述类型的组件&#xff0c;多行文本框和富文本组件&#xff0c;如下图…...

运行项目报错error in ./node_modules/marked/lib/marked.umd.js

今天跑项目时发现一个报错&#xff0c;问题出在marked这个包&#xff0c;然后翻看package.json里面也没有这个包&#xff0c;全局搜索项目也没有这个包相关的信息&#xff0c;可它就是报错&#xff0c;索性直接把它给卸载发现还是报错 报错原因&#xff1a;包的版本太高 解决…...

内置对象和方法、前端基础之BOM和DOM

内置对象和方法 RegExp对象 // 定义正则表达式两种方式 var reg1 new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}"); var reg2 /^[a-zA-Z][a-zA-Z0-9]{5,9}$/;// 正则校验数据 reg1.test(jason666) reg2.test(jason666)/*第一个注意事项&#xff0c;正则表达式中不能有…...

内网穿透配置-Cpolar-Ngrok

文章目录 一、Cpolar1、cpolar软件的使用&#xff1a;&#xff08;1&#xff09;下载与安装&#xff08;2&#xff09;cpolar指定authtoken&#xff08;3&#xff09;获取临时域名&#xff08;4&#xff09;验证临时域名有效性 二、Ngrok1、配置内网穿透&#xff08;1&#xff…...

Web前端自动化测试Cypress实践总结

本文主要首先主要介绍了什么是自动化测试&#xff0c;接着对常用的自动化测试框架进行了对比分析&#xff0c;最后&#xff0c;介绍了如果将自动化测试框架Cypress运用在项目中。 一、自动化测试概述 为了保障软件质量&#xff0c;并减少重复性的测试工作&#xff0c;自动化测…...

Nacos本地修改编译源码2.2.3

下载Nacos源码 由于github访问速度慢&#xff0c;所以在gitee上下载 git clone https://gitee.com/mirrors/Nacos.git切换2.2.3版本 git checkout 2.2.3或者直接下载2.2.3的源码 本地编译 源码导入idea&#xff0c;然后编译 mvn -Dmaven.test.skiptrue -Drat.skiptrue c…...

邦芒攻略:提升职场核心竞争力的7点建议

如何提高职场的核心竞争力&#xff0c;职场是由职场定位&#xff0c;以及竞争&#xff0c;合作&#xff0c;等各种关系构建起来的一个无形的圈子&#xff0c;职场一直以来竞争激烈&#xff0c;那么&#xff0c;该如何提高职场的核心竞争力&#xff1f; ​ ​1、首先要保持学习…...

Android 如何在Android studio中快速创建raw和assets文件夹

一 方案 1. 创建raw文件夹 切成project浏览模式——>找到res文件粘贴要放入raw文件夹下的文件。 当然此时raw文件还没有&#xff0c;直接在右侧输入框中出现的路径~\res后面加上\raw即可。 2. 创建assets文件夹 同理在main文件夹下粘贴要放入assets文件夹的文件&#xff0…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

DAY 26 函数专题1

函数定义与参数知识点回顾&#xff1a;1. 函数的定义2. 变量作用域&#xff1a;局部变量和全局变量3. 函数的参数类型&#xff1a;位置参数、默认参数、不定参数4. 传递参数的手段&#xff1a;关键词参数5 题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一…...

Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解

文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一&#xff1a;HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二&#xff1a;Floyd 快慢指针法&#xff08;…...

字符串哈希+KMP

P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...