Git_常用命令+代码冲突解决方案

文章目录

  • 基本命令的使用
    • 查看git的当前版本
    • 初始化配置
      • 设置用户名及邮箱
      • 设置仓库的认证方式
      • 查看当前配置
    • 创建仓库
      • 从远程服务器克隆仓库
      • 创建本地仓库
    • 添加和提交文件
      • 工作区域和文件状态
        • 工作区域
        • 文件状态
      • 查看文件状态及分支信息
      • 查看暂存区的内容
      • 添加文件
      • 提交文件
      • 查看提交日志
      • 回退版本
      • 撤销操作
    • 差异比较
    • 删除文件
    • 分支相关操作
  • 代码冲突
    • 原因
    • 解决方案

基本命令的使用

查看git的当前版本

git -v

初始化配置

–local: 配置对当前仓库有效

–global: 配置对当前用户(指的是当前用于登录系统的用户)的所有仓库有效

设置用户名及邮箱

 git config --global user.name "xiao Ai"git config --global user.email 12345678.@qq.com

注意:由于此处设置的用户名中间有空格所以要使用双引号,正常设置时无需使用双引号

设置仓库的认证方式

git config --global credentail.helper store

credentail.helper后的参数可选:

  • cache: 在第一次输入认证凭据后会将其存储在缓存中,短期内不需要重复输入。
  • store: 将凭据保存在.gitcredentail文件中。除非修改了git服务器上的密码,否则在第一次输入认证凭据后就再也不用输入。

查看当前配置

git config --global --list

创建仓库

从远程服务器克隆仓库

git clone https://github.com/xiaoAi1234/xue-cheng-plus #远程仓库的url地址

创建本地仓库

创建本地仓库前先要进入自己想要作为本地仓库的文件夹下,再使用git命令将该文件夹变成本地仓库。

git init

或者使用如下命令,从而在当前路径下新建一个名为test的文件夹并将其作为本地仓库。

git init test

添加和提交文件

在学习添加和提交文件前,我们需要先了解一下git的工作区域和文件状态。

工作区域和文件状态

工作区域
  • 工作区:也叫本地工作目录,就是电脑中的文件夹。
  • 暂存区:也叫索引,用于保存即将提交到git仓库的内容。
  • 本地仓库:存储代码和版本信息。
文件状态
  • 未跟踪:文件未被git管理 (文件在git status命令下提示为红色)
  • 未修改:文件已被git管理但文件内容未发生变化
  • 已修改:文件内容发生变化但还未添加到暂存区
  • 已暂存:文件内容发生变化并添加到了暂存区内 (文件在git status命令下提示为绿色)

查看文件状态及分支信息

git status

该命令可查看工作区及暂存区中文件的状态,其中:

红色=》未跟踪文件

绿色=》已暂存文件

同时还会提示当前所处分支及相关信息

查看暂存区的内容

git ls-files

添加文件

将文件添加到暂存区,同时文件状态将变为已暂存。

git add 1.txt

添加文件时也可以使用通配符来批量添加文件,如下所示。

git add *.txt

添加当前目录下所有文件

git add .

如果想移除暂存区的文件可使用如下命令

git rm --cached 1.txt

提交文件

将暂存区的文件提交到仓库,-m后跟的是本次提交的相关信息。

git commit -m "第一次提交"

查看提交日志

使用如下命令会显示每次提交的提交者,邮箱,提交日期,相关信息及版本号

git log

想要查看更简洁的日志可使用如下命令。该命令仅显示每次提交的相关信息及版本号

git log --oneline

回退版本

git reset --soft 5af90b8 #要退回到的版本号,也可以为^HARD即退回到上一个版本。

reset后可接参数:

  • soft: 回退版本,但不清空工作区和暂存区内容
  • mixed: 回退版本,清空暂存区内容但不清空工作区内容
  • hard: 回退版本,同时清空暂存区和工作区内容

soft与mixed的使用场景:

可对仓库进行多次回退,然后再一次性提交暂存区中的内容,从而实现将之前提交的多个版本合并成一个版本。

但这里如果是使用mixed在提交前需要先用“git add"命令将工作区内容添加到暂存区。

hard的使用场景:

确认真的需要回退到上一个版本并在后续基于上一个版本进行代码开发时。

撤销操作

可以先通过如下命令查看执行过的git操作,从而找到误操作之前的版本号

git reflog

用reset命令回到之前的版本号

git reset --hard 5af90b8

差异比较

比较工作区与暂存区的差异

git diff

比较工作区和版本库差异

git diff HEAD

比较暂存区和版本库差异

git diff --cached

比较版本库中两个版本的差异

#用法1
git diff 版本一ID 版本二ID
#用法2,此处HEAD指向最新版本
git diff 版本一ID HEAD
#用法3,此处HEAD指向最新版本,HEAD~指向上一个版本,HEAD~3则表示在HEAD前的三个版本
git diff HEAD~ HEAD
#用法4,指定比较特定文件的版本
git diff HEAD~ HEAD file.txt

执行差异比较的结果:
下图提示了file3.txt文件中的内容差异

在这里插入图片描述

红色为删除内容,绿色为添加的内容。

删除文件

# 操作1, 仅能将文件从工作区删除。使用git add后才能将信息同步到暂存区;使用git commit后才能将信息同步到版本库。
rm file.txt
# 操作2, 将文件从工作区和暂存区删除。使用git commit后才能将信息同步到版本库。
git rm file.txt

分支相关操作

# 查看当前仓库的所有分支
git branch
# 新建分支
git branch hhh
# 切换到不同分支。但由于checkout也有恢复文件的作用,所以当分支名与文件名相同时会产生歧义,默认为切换分支
git checkout h1
# git在2.23版本后专门切换分支的命令
git switch h1
# 若当前分支为h2,则会将分支h1合并到h2中。注意:虽然分支被合并但它仍然存在于仓库中
git merge h1
# 查看分支图
git log --graph --oneline --decorate --all
# 删除已合并分支
git branch -d h1
# 强制删除分支,不管该分支是否合并
git branch -D h2

代码冲突

原因

两个分支修改了同一行代码

解决方案

#1.查看发生冲突的文件
git status
#2.查看冲突的具体内容
git diff
#3.退出冲突查看页面
进入末行模式后,输入wq
#4.对冲突文件进行修改
cat 1.txt
#5.提交合并后的文件
git add .
git commit -m "merge"

ps: 在提交前也可选择中断本次合并

git merge --abort

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

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

相关文章

verilog设计-cdc:多比特信号跨时钟域(DMUX)

一、前言 多比特一般为数据,其在跨时钟域传输的过程中有多种处理方式,比如DMUX,异步FIFO,双口RAM,握手处理。本文介绍通过DMUX的方式传输多比特信号。 二、DMUX同步跨时钟域数据 dmux表示数据分配器,该方…

ChatGLM3:AttributeError_ can‘t set attribute ‘eos_token‘

最近在微调 ChatGLM3-6b 时,训练好模型之后,调用inference_hf.py函数验证模型的时候报了如下错误,下面是解决方案。 我在训练时使用的是ptuning_v2.yaml配置文件,训练运行代码如下: CUDA_VISIBLE_DEVICES1 python fi…

3.Labview字符串与路径精讲(下) — 字符串及路径的使用

本章讲解labview中的字符串和路径具体实践用例,从前面板字符串属性到后面板字符串函数应用做出详细概述,通过本文的学习希望大家了解到字符串及路径在labview编程中的重要地位。 本系列文章为labview 从基础到强化到精通的学习文章,大家可以随…

Unity3d使用Jenkins自动化打包(Windows)(二)

文章目录 前言一、Unity工程准备二、Unity调取命令行实战一实战二实战三实战四实战五 总结 前言 自动化打包的价值在于让程序员更轻松地创建和管理构建工具链,提高编程效率,将繁杂的工作碎片化,变成人人(游戏行业特指策划&#x…

RegSeg 学习笔记(待完善)

论文阅读 解决的问题 引用别的论文的内容 可以用 controlf 寻找想要的内容 PPM 空间金字塔池化改进 SPP / SPPF / SimSPPF / ASPP / RFB / SPPCSPC / SPPFCSPC / SPPELAN  ASPP STDC:short-term dense concatenate module 和 DDRNet SE-ResNeXt …

如何为企业策划一场XR虚拟直播?

活动年年办,都是老一套,想玩点新花样? 预算有限,但还是想把活动办的逼格高一点? 想通过活动,让更多的人知道自己企业的品牌? 随着AIGC技术的不断演变,企业活动的形式和内容也在不…

Linux中的vim/vi编辑器

VI 是 Unix 操作系统和类 Unix 操作系统中最通用的文本编辑器。 VIM 编辑器是从 VI 发展出来的一个性能更强大的文本编辑器,可以说是:编辑器之神。可以主动的以字体颜 色辨别语法的正确性,方便程序设计。VIM 与 VI 编辑器完全兼容。 一:三种…

MoonBit MeetUp回顾——张正、宗喆:编程语言在云原生与区块链领域的技术探索

宗喆和张正分别给我们带了 KCL 相关的最新进展,由蚂蚁集团开发的 Rust 编写的开源 DSL,目标是优化云原生策略配置和用户体验。它通过引入动态配置管理、配置校验和基础设施抽象等核心概念,解决开发者认知负担、配置膨胀和标准化工具缺乏的问题…

Unity AI Navigation自动寻路

目录 前言一、Unity中AI Navigation是什么?二、使用步骤1.安装AI Navigation2.创建模型和材质3.编写向目标移动的脚本4.NavMeshLink桥接组件5.NavMeshObstacle组件6.NavMeshModifler组件 三、效果总结 前言 Unity是一款强大的游戏开发引擎,而人工智能&a…

Swagger添加JWT验证(ASP.NET)

文章目录 JWT1、解析2、配置JWT JWT 1、解析 1)客户端向授权服务系统发起请求,申请获取“令牌”。 2)授权服务根据用户身份,生成一张专属“令牌”,并将该“令牌”以JWT规范返回给客户端 3)客户端将获取到的…

Kafka重要配置参数全面解读(重要)

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Kafka重要配置参数全面解读(重要 前言auto.create.topics.enableauto.leader.rebalance.enablelog.retention.{hour|minutes|ms}offsets.topic.num.partitions 和 offsets.topic.replication.factorlo…

php 快速入门(七)

一、操作数据库 1.1 操作MySQL的步骤 第一步:登录MySQL服务器 第二步:选择当前数据库 第三步:设置请求数据的字符集 第四步:执行SQL语句 1.2 连接MySQL 函数1:mysql_connect() 功能:连接(登录…

软件概要设计说明书word原件(实际项目)

一、 引言 (一) 编写目的 (二) 范围 (三) 文档约定 (四) 术语 二、 项目概要 (一) 建设背景 (二) 建设目标 (三&a…

分类任务中的评估指标:Accuracy、Precision、Recall、F1

概念理解 T P TP TP、 T N TN TN、 F P FP FP、 F N FN FN精度/正确率( A c c u r a c y Accuracy Accuracy) 二分类查准率 P r e c i s i o n Precision Precision,查全率 R e c a l l Recall Recall 和 F 1 − s c o r e F1-score F1−s…

ChatGPT 商业金矿(上)

原文:ChatGPT Business Goldmines 译者:飞龙 协议:CC BY-NC-SA 4.0 第一章:为什么我写这本书 欢迎阅读《ChatGPT 多源收入:20 个利润丰厚的业务,任何人都可以在一周内使用 ChatGPT 开始》。我很高兴分享我…

<QT基础(5)>事件监听

事件监听 事件监听(Event Handling)是在程序中监视和响应发生的事件的一种机制。在Qt中,事件监听是一种常见的用于处理用户输入、系统事件以及其他类型事件的方法。通过事件监听,您可以在发生特定事件时捕获事件并执行相应的操作…

【案例·增】获取当前时间、日期(含,SQL中DATE数据类型)

问题描述: 需要使用当前时间、日期,可以使用 SQL 中的 CURDATE() 、NOW()、CURTIME()运算符 案例: INSERT INTO table_name(current_time, column_name2,...) VALUES (NOW(),, ...)规则(Date 相关函数): 规则(Date数据类型)

如何在极狐GitLab 自定义 Pages 域名、SSL/TLS 证书

本文作者:徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 本文主要讲述了在极狐GitLab 用户…

核验用户提供的身份证号和姓名是否一致的实名认证接口、C#调用

为什么要进行实名认证?互联网时代,网民在网上进行遨游的过程中,我们无法辨别其身份的真伪,网民财产安全没有保障,因此当平台用户在进行注册时,都会要求提供身份证信息使用实名认证接口来判断身份信息的真实…

uniapp输入框事件(防抖)

一、描述 在输入框输入内容或者说输入关键词的时候,往往都要进行做防抖处理。如果不做防抖,你输入什么,动态绑定的数据就会保持一致。这样不好吗,同步获取。有个业务场景,如果是搜索框,你每次一个字符&…