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

git 避免输入用户名 密码 二进制/文本 文件冲突解决

核心概念介绍

工作区是你当前正在进行编辑和修改的文件夹,可见的。

暂存区位于.git/index(git add放入)。

代码库(工作树)位于.git(git commit将暂存区中的更改作为一个提交保存到代码库中,并清空暂存区)

避免输入用户 密码:

方式一:

http协议:

git clone https://username@github.com/username/repository.git

ssh协议:

配置 ssh密钥,免密即可

方式二:

gitcredentials  - 为 Git 提供用户名和密码

cache 将内存中的凭据缓存一段时间。   store 无限期地将凭证存储在磁盘上。

echo "http(s)://{你的用户名}:{你的密码}@你的服务器地址" > ~/.git-credentials

git config --global credential.helper store

然后就不需要输入用户名 密码了

另外,git要求您有一个配置设置user.name,以便user.email提交/推送,没有这些配置设置git就无法将作者信息添加到提交中。

 git config --global user.name "$WSY_SERVICE_NAME"

 git config --global user.email "$WSY_SERVICE_NAME@163.com"  //git config user.email 查看设置的信息

diff 比对

git diff 显示本地开发工作中已经修改但未提交至暂存区的文件和已经提交至暂存区文件的修改

git diff HEAD 显示的是已提交到工作树中文件和未提交到工作树中文件的所有修改。查看已缓存的与未缓存的所有改动。

git diff --cached 上一次最后一次提交到工作树中文件(也就是head)与暂存区内文件的改动。查看已缓存的改动。

git diff --name-only --diff-filter=U   缩写-U指定只查看产生冲突的文件 

git diff source target  比较俩个分支的差异

合并冲突

git pull origin main == git fetch origin main + git merge origin/main

执行 git pull 命令时,如果当前分支有未提交的更改,Git会提示您先commit提交更改

需要先commit,再merge合并冲突,原因如下:

直接merge 存在冲突会报错, 不会将冲突内容写入文件中(git status/git diff看不到冲突信息)如下所示:

Updating ae32fe4..adb8b80

error: Your local changes to the following files would be overwritten by merge:

        aaa.txt

Please commit your changes or stash them before you merge.

Aborting

正确做法:

先commit,然后再merge,存在冲突不会报错,会将冲突内容写入文件中(git status/git diff可看到冲突信息)如下所示

root@saas-node002:/# git merge

Auto-merging aaa.txt

CONFLICT (add/add): Merge conflict in aaa.txt

Automatic merge failed; fix conflicts and then commit the result.

git diff --diff-filter=U --name-only  // 缩写-U指定只查看产生冲突的文件  

git diff origin/main main -- aa.txt // 查看fetch下来的远端main与本端main的aa.txt差异

git status 显示当前代码库状态信息,包括未提交文件,未解决冲突文件

合并冲突见下面冲突解决部分。

额外: 强制用远程覆盖本地,不处理冲突

git fetch

git reset --hard origin/main

git pull(git fetch + git merge) 冲突解决:

git add .

git commit -m "xxx"  //必须先commit,再merge,否则不会生成如下冲突文件

git fetch && git merge

git merge --no-ff test // --no-ff 避免test分支的提交历史混入到main中,搅乱main的提交历史

1.非二进制文件在发生冲突的文件中,冲突区域有明显的标记

<<<<<<<

yours 你当前工作区的代码

=======

合并过来的代码

 >>>>>>> their

1-1.可以vim文件,手动调整解决冲突。

git add filename  #将调整后的文件标记为已解决状态

git commit && git merge  # 完成合并操作

1-2.或者基于checkout命令选择保留哪个版本的文件

git checkout --theirs conflicted_file.txt # 保留远端的

git checkout --ours conflicted_file.txt # 保留本地的

git add filename  #将调整后的文件标记为已解决状态

git commit && git merge  # 完成合并操作

2.二进制文件,Git不会尝试合并文件本身。本地文件保持不变。为了解决冲突,可使用checkout命令选择保留哪个版本的文件。

使用 git status 命令检查有冲突的文件列表。

git cat-file -s origin/main:action.png  //查看fetch下来的远端的文件大小

git cat-file -s main:action.png  //查看本地文件大小

git cat-file -p main:action.png //cat-file查看本地文件内容。(二进制文件推荐用cat-file)

git show main:aaa.txt //show查看本地文件内容 (会根据对象的类型进行一些处理和解释。对于文本文件,它会尝试以可读的文本形式显示文件内容;对于二进制文件,它默认会以十六进制字符的形式显示内容)

git checkout --theirs conflicted_file.txt # 保留远端的

git checkout --ours conflicted_file.txt # 保留本地的

git add filename  # 将已解决的文件标记为已解决状态

git commit && git merge

http://www.lryc.cn/news/261653.html

相关文章:

  • [OpenWrt]RAX3000一根线实现上网和看IPTV
  • 最新50万字312道Java经典面试题52道场景题总结(附答案PDF)
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • 赵传和源代码就是设计-UMLChina建模知识竞赛第4赛季第23轮
  • Leaflet.Graticule源码分析以及经纬度汉化展示
  • html 中vue3 的setup里调用element plus的弹窗 提示
  • 对话系统之解码策略(Top-k Top-p Temperature)
  • 《面向机器学习的数据标注规程》摘录
  • VGG(pytorch)
  • celery/schedules.py源码精读
  • 单片机上位机(串口通讯C#)
  • 初识Flask
  • JeecgBoot jmreport/queryFieldBySql RCE漏洞复现
  • 机器学习---模型评估
  • 【机器学习】应用KNN实现鸢尾花种类预测
  • ACL和NAT
  • MX6ULL学习笔记(十二)Linux 自带的 LED 灯
  • Qt容器QToolBox工具箱
  • 华为实训课笔记
  • 基于java 的经济开发区管理系统设计与实现(源码+调试)
  • 外包干了3个月,技术退步明显。。。
  • 详细教程 - 从零开发 Vue 鸿蒙harmonyOS应用 第一节
  • R语言对医学中的自然语言(NLP)进行机器学习处理(1)
  • 什么是CI/CD?如何在PHP项目中实施CI/CD?
  • 玩转Docker(四):容器指令、生命周期、资源限制、容器化支持、常用命令
  • 回归预测 | MATLAB实现CHOA-BiLSTM黑猩猩优化算法优化双向长短期记忆网络回归预测 (多指标,多图)
  • Qt/C++视频监控安卓版/多通道显示视频画面/录像存储/视频播放安卓版/ffmpeg安卓
  • 【docker】容器使用(Nginx 示例)
  • 【QT】时间日期与定时器
  • 蓝桥杯专题-真题版含答案-【古代赌局】【古堡算式】【微生物增殖】【密码发生器】