git相关总结大全

简介: git相关总结大全

git简介

git,是一个分布式版本控制软件,最初目的是为更好地管理Linux内核开发而设计,分布式版本控制系统的客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。Git 得特点简单来说就是:高端大气上档次。

github或者gitee实际就可以充当这个服务器角色,其是一个开源协作社区。当我们通过git init创建或者git clone一个项目的时候,项目目录会隐藏一个.git子目录,其作用是用来跟踪管理版本库的。

不同状态四部分

文件状态对应的,不同状态的文件在Git中处于不同的工作区域,主要分成了四部分:

工作区:相当于本地写代码的区域,

暂存区:暂存区是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中

本地仓库:提交更新,找到暂存区域的文件,将快照永久性存储到 Git 本地仓库

远程仓库:远程的仓库,如 github。

git常用命令

初始化命令:

git clone url:下载一个项目和它的整个代码历史
git init 初始化仓库,默认为 master 分支
git add . 提交全部文件修改到暂存区
git pull <远程仓库名> <远程分支名> 拉取远程仓库的分支与本地当前分支合并
git pull <远程仓库名> <远程分支名>:<本地分支名> 拉取远程仓库的分支与本地某个分支合并

创建命令:

git checkout -b 创建+切换分支
git merge   合并某分支到当前分支

切换查看命令:

git diff 查看当前代码 add后,会 add 哪些内容
  git status 查看当前分支状态
  git checkout <分支名> 切换到本地某个分支
  git branch 查看分支
  git branch -r 查看远程所有分支
  git branch -a 查看本地和远程所有分支

删除命令:

git branch -D <分支名> 删除本地某个分支
git merge <分支名>  合并分支

上传命令:

git push [remote] [branch] 上传本地指定分支到远程仓库
git push [remote] --force 强行推送当前分支到远程仓库,即使有冲突
git commit -m "<注释>" 提交代码到本地仓库,并写提交注释
git commit -v 提交时显示所有diff信息

恢复命令:

git checkout [file] 恢复暂存区的指定文件到工作区
git checkout . 恢复暂存区的所有文件到工作区

版本穿梭:

HEAD 指向的版本就是当前版本,因此,Git 允许我们在版本的历史之间穿梭,
使用命令 git reset --hard commit_id 。
穿梭前,用 git log 可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用 git reflog 查看命令历史,以便确定要回到未来的哪个版本。

git冲突的场景,如何解决

一般情况下,出现分支冲突的场景有如下:

多个分支代码合并到一个分支时
多个分支向同一个远端分支推送

具体情况就是,多个分支修改了同一个文件(任何地方)或者多个分支修改了同一个文件的名称

如果两个分支中分别修改了不同文件中的部分,是不会产生冲突,直接合并即可

应用在命令中,就是push、pull、stash、rebase等命令下都有可能产生冲突情况,从本质上来讲,都是merge和patch(应用补丁)时产生冲突。

git冲突的修复

  1. 直接编辑冲突文件
    使用git pull --rebase经常会出现冲突
    冲突产生后,文件系统中冲突了的文件里面的内容会显示为类似下面这样:
<<<<<<< HEAD
 * test2
 * test3
=======
 * this is my modify, my be conflicked
 * test1000
>>>>>>> my_modify
其中:<<<<<<<(7个<)HEAD与=之间的内容是remote上的修改,冲突标记=与>>>>>>>之间的内容是我的修改内容。
在这两者之间选择任何你需要的内容保留下来,并删除所有的===,<<<,>>>即可解决冲突,
解决完成之后,git add -A, git rebase --continue就提交了代码
  1. 利用图形界面工具解决冲突
    当然我们也可以利用图形工具解决冲突
    如果要解决的冲突很多,且比较复杂,图形界面的冲突解决工具就显得很重要了。
    执行git mergetool用预先配置的Meld(Beyond Compare)解决冲突。

代码提交完整流程

步骤如下:

git add -A

git commit -m “message”

git pull --rebase (或者git fetch + git rebase)

解决冲突

git add 冲突文件

git rebase –continue

git push

其中,3、4、5点,如果没遇到冲突就不用进行,直接push上去。

当遇到冲突时,git会提示patch failed,并要我们解决问题了再执行git rebase --continue


相关文章
|
10月前
|
前端开发 Linux C#
一款开源、免费、美观的 Avalonia UI 原生控件库 - Semi Avalonia
一款开源、免费、美观的 Avalonia UI 原生控件库 - Semi Avalonia
821 10
|
11月前
|
传感器 供应链 数据挖掘
量子计算与环境保护:可持续发展的工具
量子计算作为21世纪的前沿技术,不仅在信息技术领域引发革命,还在环境保护和可持续发展方面展现了巨大潜力。本文探讨了量子计算在模拟复杂环境系统、优化能源利用、监测环境变化等方面的应用,以及面临的挑战和未来展望,揭示了量子计算在推动绿色转型中的关键作用。
|
机器学习/深度学习 人工智能 算法
AI - 决策树模型
决策树算法起源于古希腊的逻辑推理,20世纪在军事策略研究中首次提出。它通过构建树形模型模拟决策过程,每个节点代表一个属性判断,分支代表可能结果。ID3算法基于信息增益,C4.5则引入信息增益率,解决了ID3偏好多值属性的问题,还能处理缺失值。CART决策树适用于分类和回归任务,使用基尼系数或信息增益来选择特征。在Python的`sklearn`库中,`DecisionTreeClassifier`实现决策树分类,通过参数如`criterion`、`max_depth`等控制模型。
|
物联网 智能硬件
物联网卡:当物联网设备用卡使用在非物联网设备上会被管控吗
当设备物联网卡被检测到在非物联网设备上使用时,可能会遇到一系列的反应或后果,这主要取决于运营商的政策和物联网卡的设计目的。物联网卡通常是为非物联网设备(如智能家居设备、智能城市基础设施、车联网设备等)设计的,其流量套餐、网络连接速度、服务协议以及费用结构都与普通SIM卡有所不同。以下是一些可能发生的情况:
|
JavaScript API
如何使用Vue 3和Type Script进行组件化设计
【8月更文挑战第16天】如何使用Vue 3和Type Script进行组件化设计
269 1
|
缓存 Java uml
SpringBoot2 | Spring AOP 原理深度源码分析(八)
SpringBoot2 | Spring AOP 原理深度源码分析(八)
264 0
|
云安全 存储 安全
深度阿里云云主机智能纵深防御体系首次揭秘
阿里云云主机智能纵深防御体系。通过对海量网络攻防数据的深度解析与过滤,结合中心化决策系统,实现了高检测率和低误报率,攻击水位下降90%。
深度阿里云云主机智能纵深防御体系首次揭秘
|
机器学习/深度学习 人工智能 自然语言处理
Python在人工智能领域的应用案例分析
一、引言 随着人工智能技术的飞速发展,Python作为一种功能强大、易学易用的编程语言,在人工智能领域发挥着越来越重要的作用。本文将介绍Python在人工智能领域的应用案例,包括机器学习、深度学习、自然语言处理等方面,帮助读者了解Python在人工智能领域的实际应用和优势。
1200 0
|
程序员 Linux 网络安全
一个基于.Net高性能跨平台内网穿透工具
一个基于.Net高性能跨平台内网穿透工具
239 0