Git最佳实践:git常用命令和原理

Git 是一个开源的分布式版本控制系统。

Git 工作区、暂存区和版本库

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

命令

基础命令

git init初始化 当前所在的文件夹可以被管理且以后版本相关的数据会存储到.git文件中
git status查看当前文件夹中是否变化 内容修改 新增文件 删除文件
git add .将有工作区变化的文件加载到暂存区
git commit -m "备注"将暂存区的修改全部提交到版本库

撤回修改和删除

git checkout -- data.txt撤销修改,丢弃工作区的修改,分两种情况,-- 很重要,必须要加上1、data.txt没有add到暂存区,撤销就是回退到和版本库一样2、data.txt如果已经加到暂存区,撤销就是回退到和暂存区一样git reset HEAD data.txt把暂存区的修改撤销掉,重新放回工作区git reset --hard HEAD回退版本,HEAD当前版本
git reset --hard afe5aa回退到版本号所指的版本  afe5aa版本号的前几位使用场景:
1、当修改错了工作区的文件,想直接丢掉时,使用git checkout -- data.txt
2、当修改错了工作区的文件,并且已经add到暂存区了,想丢弃的话,
先使用git reset HEAD data.txt ,回到1的情况,再处理
3、修改的文件已经提交到版本库时,直接回退版本即可手动删除data.txt后
1、确实要删除的话,就git rm data.txt 再commit,这样就彻底删除了
2、误删的情况,git checkout -- data.txt 就将版本库的文件恢复到工作区
3、第1中情况已经执行了 git rm data.txt,后悔了,可以执行git reset --hard HEAD回退版本

远程管理

当本地目录关联到远端的lifei库
git remote add origin git@github.com:lifei/lifei.git
将 本地的所有版本库推送到远端库
git push -u origin master查看远端库信息
git remote -v下载一份远端库
git clone git@github.com:lifei/lifei.git
从远端拉取最新的文件
git pull 

分支

查看分支信息,当前分支前面会标一个*号
git branch
创建dev分支并且切换到
git checkout -b dev分解成两个命令
git branch dev # 创建dev分支
git checkout dev # 切换到dev分支切换分支用switch命令意思更明显
git switch master创建并切换 tempdev
git switch -c tempdev将dev合并到master
git merge dev删除dev分支
git branch -d dev

冲突

如果dev 修改了data.txt,master分支也修改了data.txt,当切换到master后执行
git merge dev 就会冲突
Auto-merging selectp-dev-branch.py
CONFLICT (content): Merge conflict in selectp-dev-branch.py
Automatic merge failed; fix conflicts and then commit the result.出现冲突后,查看冲突的文件
<<<<<<< HEAD主分支
=======
dev 分支
>>>>>>> dev

日志

查看所有版本提交记录,版本号等
git log 查看分支的合并 时间图
git log --graph --pretty=oneline --abbrev-commit查看详细的 合并图
git log --graphgit reflog 回退之前的版本后,又想撤销,查看之前的版本号
git stash 将当前工作区所修改的内容暂存到某个地方,将工作区还原到当前版本未修改过的状态

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

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

相关文章

Leetcode—104.二叉树的最大深度【简单】

2023每日刷题&#xff08;六&#xff09; Leetcode—104.二叉树的最大深度 递归实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/int maxDepth(struct TreeNode* root){…

热点不热!如何修复笔记本电脑未连接到移动热点的问题

当你远离常规Wi-Fi时,移动热点是让你的笔记本电脑上网的关键,但当它没有按计划运行时,你会怎么办?以下是Windows笔记本电脑无法连接到移动热点时的几种修复方法。 为什么我的笔记本电脑没有连接到我的热点 由于你的笔记本电脑正试图连接到另一个有限制和可能存在问题的设…

PHP yield

概念&#xff1a; Generator&#xff1a;带 yield的function yield&#xff1a;Generator或task的中断关键字&#xff0c;执行到yield时一次调度周期执行完即阻塞&#xff0c;并返回右侧表达式结果&#xff0c;等待下一次调度器运行next()或迭代遍历才会继续往下执行&#xff0…

2023-10-23 LeetCode每日一题(老人的数目)

2023-10-23每日一题 一、题目编号 2678. 老人的数目二、题目链接 点击跳转到题目位置 三、题目描述 给你一个下标从 0 开始的字符串 details 。details 中每个元素都是一位乘客的信息&#xff0c;信息用长度为 15 的字符串表示&#xff0c;表示方式如下&#xff1a; 前十…

rust学习——泛型 (Generics)

文章目录 泛型 Generics泛型详解结构体中使用泛型枚举中使用泛型方法中使用泛型为具体的泛型类型实现方法 const 泛型&#xff08;Rust 1.51 版本引入的重要特性&#xff09;const 泛型表达式 泛型的性能 泛型 Generics Go 语言在 2022 年&#xff0c;就要正式引入泛型&#xf…

mysql下载和安装,使用

先下载安装 官方下载 已下载备份软件 安装&#xff0c;一路下一步设置环境变量 4. 打开一个cmd&#xff0c;输入mysql -u root -p

Spark内核调度

目录 一、DAG &#xff08;1&#xff09;概念 &#xff08;2&#xff09;Job和Action关系 &#xff08;3&#xff09;DAG的宽窄依赖关系和阶段划分 二、Spark内存迭代计算 三、spark的并行度 &#xff08;1&#xff09;并行度设置 &#xff08;2&#xff09;集群中如何规划并…

Visual Studio Code官网下载、vscode下载很慢、vscode下载不了 解决方案

前言 开发界的小伙伴们对于Visual Studio Code开发环境来可以说非常熟悉了&#xff0c;但由于在Visual Studio Code官网的下载速度非常的慢&#xff0c;即便开了代理也是一样的很慢、甚至下载被中断&#xff0c;几乎不能下载。 解决方案 1、在Web浏览器上打开vscode官网&#…

RabbitMQ基础篇 笔记

RabbitMQ 余额支付 同步调用 一步一步的来&#xff0c;支付业务写完后&#xff0c;如果之后加需求&#xff0c;还需要增加代码&#xff0c;不符合开闭原则。 性能上也有问题&#xff0c;openfeign是同步调用&#xff0c;性能太差。 同步调用耦合太多。 同步的优势是可以立…

Android View拖拽startDragAndDrop,Kotlin

Android View拖拽startDragAndDrop&#xff0c;Kotlin import android.os.Bundle import android.util.Log import android.view.DragEvent import android.view.View import android.view.View.OnDragListener import android.view.View.OnLongClickListener import android.w…

C语言之排序

1.冒泡排序 冒泡排序就不多说了&#xff0c;只需要两层循环嵌套&#xff0c;两两比较确定相对正确的顺序即可。 2.插入排序 插入排序的思想就是每一次向后寻找一个再将其与前面有序的部分进行对比&#xff0c;寻找合适位置插入。 这里关键要避免让前移超出目前读取的数字&…

高效MMdetection(3.1.0)环境安装和训练自己数据集教程(实现于Linux(ubuntu),可在windows尝试)

一、前言 很久没用mmdetection了&#xff0c;作为目标检测常见的几个深度学习框架&#xff0c;mmdetection用的人还是很多的&#xff0c;其中比较吸引人的一点就是mmdetection集成了非常多的算法&#xff0c;对于想做实验对比和算法学习的人来说&#xff0c;基于这个框架可以事…

寻找二叉树一个节点的后继节点

后继节点&#xff1a;中序遍历的后一个节点 普通二叉树&#xff1a;中序遍历得到一个list&#xff0c;时间复杂度O(n) 本题的二叉树&#xff1a;有父节点的指针&#xff0c;后继节点与原节点的距离为1&#xff0c;因此可以直接通过父节点找到下一个节点 优化&#xff1a;节点…

64 最长公共子序列

最长公共子序列 题解1 DP 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的 最长公共子序列的长度。如果不存在 公共子序列&#xff0c;返回 0 。 一个字符串的子序列是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺序的情况下删除某些…

空间地图GIS基础

一、GIS基本概念 地理信息系统&#xff08;Geographic Informaiton System, GIS&#xff09;是一个可以建立、浏览、查询、分析地理空间数据的软件系统&#xff0c;其功能小至地图的展示&#xff0c;大至空间决策分析与支持。 1.GIS基础 (1)地理信息系统(GIS)的概念与组成 …

【Linux系统编程】命令模式2

目录 一&#xff0c;Linux下的初阶认识 1&#xff0c;管道 2&#xff0c;时间戳 二&#xff0c;Liunx系统命令操作 1&#xff0c;date时间指令 2&#xff0c;cal日历指令 3&#xff0c;which和find查找指令 3-1&#xff0c;which指令&#xff1a; 3-2&#xff0c;find…

Python 测试框架unittest和pytest的优劣

一、Unittest Unittest是Python标准库中自带的单元测试框架&#xff0c;Unittest有时候也被称为PyUnit&#xff0c;就像JUnit是Java语言的标准单元测试框架一样&#xff0c;Unittest则是Python语言的标准单元测试框架。 Unittest支持自动化测试&#xff0c;测试用例的初始化、…

JVM(一)

一、初始JVM 1.1 初始JVM JVM 本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件。 机器码是由二进制编码表示的计算机指令。每个机器码通常对应一个特定的操作,如加法、乘法、跳转等。机器码是计算机能够直接执行的代码,它可以在计算机的内存中存储和执行。…

11 Self-Attention相比较 RNN和LSTM的优缺点

博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https://github.com/nickchen121/Pre-training-language-model 配套博客链接:https://www.cnblogs.com/nickchen121/p/15105048.html RNN 无法做长序列,当一…

Deep Learning for Geophysics综述阅读(未完)

文章题目《Deep Learning for Geophysics: Current and Future Trends》 文章解读&#xff1a;地球物理学&#xff08;人工智能轨道&#xff09;——&#xff08;1&#xff09;文献翻译《面向地球物理学的深度学习&#xff1a;当前与未来趋势》 - 知乎 (zhihu.com) 这里主要列…