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

news/2024/7/23 11:07:05 标签: git

文章目录

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

基本命令的使用

git_4">查看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.niftyadmin.cn/n/5456403.html

相关文章

【VTKExamples::Points】第十二期 SignedDistance UnsignedDistance

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例SignedDistance & UnsignedDistance,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~Y…

LLM应用:Prompt flow vs LangChain

背景 Prompt flow和LangChain都是LLM时代,为高效地构建LLM应用而生。 Prompt flow是Microsoft开源的,其诞生时,LangChain已经很有名气了。 所以作为后生的Prompt flow会为我们带来哪些新的东西呢? ​​​​​​​ Prompt flo…

修改nuxtjs项目中的浏览器图标步骤

处理步骤: 打开配置页面 使用el-upload 上传图片到后台 后台把图片转为ico,返回图标路径 配置页面修改本页面预览图,点击保存,修改的数据库。 通知nuxt布局页面,修改head节点中的图标属性,…

【Java程序设计】【C00387】基于(JavaWeb)Springboot的校园食堂订餐系统(有论文)

基于(JavaWeb)Springboot的校园食堂订餐系统(有论文) 项目简介项目获取开发环境项目技术运行截图 博主介绍:java高级开发,从事互联网行业六年,已经做了六年的毕业设计程序开发,开发过…

SQL的事务及其ACID属性

目录 SQL中的事务简介事务和ACID属性SQL事务中的关键命令示例SQL事务的隔离层级1. 未提交读取2. 提交后读取3. 可重复读取4. 可序列化脏读、不可重复读或虚读脏读取不可重复读取(未提交读取)虚读取推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速…

再谈敏捷开发

敏捷开发VS敏捷开发2.0 下面是一个更完整的表格,对比敏捷开发和敏捷开发2.0的主要特点以及常用的实践工具: 特点敏捷开发敏捷开发2.0方法论迭代式开发更灵活、可定制的方法论团队结构通常采用传统的团队结构更加自组织、自主的团队结构交付价值强调持续…

OSCP靶场--pyLoader

OSCP靶场–pyLoader 考点(信息收集CVE-2023-0297) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap -Pn -sC -sV 192.168.178.26 --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-28 09:14 EDT Nmap scan report for 192.168.178.26 Host is up…

团队建设与管理案例分析题

习题一 最近A公司接了一个信息系统运维项目,而且非常重视,任命了有丰富售后服务张某为系统规划与管理师,全权授权张某负责该项目,并要求他负责企业运维服务能力建设和提升。张某也学习了大量项目管理知识和运维管理知识&#xff…