git 笔记/常见命令/as的fetch,pull ,update project的区别/标签管理

2023-10-30

Git概念汇总

头(HEAD)

头(HEAD)HEAD类似一个“指针”,指向当前活动 分支 的 最新版本。

工作区(Workspace)

 就是在电脑里能看到的项目代码库目录,是我们搬砖的地方,

在这里我们可以新增文件、修改文件内容,或删除文件。

此时的项目代码库目录还是红色的(没有与git关联),未被git跟踪

此时的工作区的代码修改是不能直接保存到本地仓库的,

需要通过 git add(暂存)把整个项目工程提交到暂存区,

这时项目工程就变成绿色的了,就被gti跟踪了,

在暂存区修改的代码内容 只有通过git commit才能将暂存区修改的内容提交到Git本地仓库

暂存区(stage或index)

    用于临时存放文件的修改,

 用git add 命令将工作区的项目工程代码保存到暂存区,此时的项目工程就被git跟踪了

在暂存区里未修改的代码文件是绿色的, 修改的代码文件是蓝色的

版本库/仓库 Repository

通过git commit 命令将暂存区的内容正式提交到版本库(本地仓库)。

master 为仓库的默认分支master,HEAD是一个“指针”指向当前分支的最新提交,默认指向最新的master。

 通过git push 将本地仓库推送到远程仓库

通过git  pull  从服务端仓库文件拉取更新到本地仓库

 

 

git常见命令

 

git常见命令

git branch

列出所有本地分支,加参数-v显示详细列表,

git branch -r

列出所有远程分支

 git branch -a

列出所有本地分支和远程分支

git branch -d dev

删除dev分支,-D(大写)强制删除 

git checkout -b dev

从当前分支创建并切换到dev分支

git checkout -b feature1 dev

从本地dev分支代码创建一个 feature1分支,

git switch:

专门只是用来实现分支切换。

git switch dev 

只是切换到dev分支

git reset:

  将已经提交到本地仓库的文件,撤销回退到暂存区(替代checkout的撤销功能。)

                git commit  -m "first commit"

                将暂存区的修改文件提交到本地仓库

               git commit -a

               直接提交工作区的修改内容到本地仓库

              git branch -M "分支名称"

             创建本地分支

            git remote add origin https://github.com/fmf19870210/FMFNote.git

           关联远程git仓库地址

         git push -u origin master

     本地仓库 远程提交主支

git fetch

一旦远程主机的版本库有了更新(Git术语叫做commit),需要将这些更新取回本地,这时就要用到git fetch命令。

git fetch命令通常用来查看其他人的进程,因为它取回的代码对你本地的开发代码没有影响。远程代码取回到本地并不会合并到你的本地分支里去。

git fetch <远程主机名>

git fetch origin

默认情况下,git fetch取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名。

 git fetch <远程主机名> <分支名>

//比如,取回origin主机的master分支。
 git fetch origin master

git pull

先拉取git fetch 某个远程分支的代码,然后再git merge 合并到当前本地分支 或指定的某个本地分支

git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。它的完整格式稍稍有点复杂。

git pull <远程主机名> <远程分支名>:<本地分支名>

//比如,取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。
git pull origin next:master

git pull origin master:master

git pull origin dev:dev

如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

git pull origin next

git pull origin master

git pull origin dev

as的fetch,pull ,update project的区别

git fetch 从远程分支上获取最新版本代码 到本地 ,代码不会合并 merge到当前分支

git pull 从远程分支上拉取最新版本代码 到本地并自动合并 merge到当前分支

git pull =git fetch 和 git merge

update project 会更新项目所有module,但是pull只会更新一个。

合并merge&冲突

git merge dev  dev合并到master没有冲突

合并dev到master,注意要先切换到master分支,然后执行git merge dev,master分支上没有修改内容,直接把dev合并到当前分支master。

git merge dev  dev合并到master有冲突

把分支dev 8合并到已经修改过内容的分支master 6 
   有冲突需要人工手动解决 合并到新的分支master 9分支上 
   为最新的master分支

    <<<<<<< HEAD开头的内容就表示是有冲突的部分,需要人工处理,

=======分割线上方是当前分支的内容,下方是被合并分支的变更内容。

标签管理

标签(Tags)指的是某个分支某个特定时间点的状态,是对某一个提交记录的的固定“指针”引用。一经创建,不可移动,存储在工作区根目录下.git\refs\tags。可以理解为某一次提交(编号)的别名,常用来标记版本。所以发布时,一般都会打一个版本标签,作为该版本的快照,指向对应提交commit。

当项目达到一个关键节点,希望永远记住那个特别的提交快照,你可以使用 git tag给它打上标签。比如我们今天终于完成了V1.1版本的开发、测试,并成功上线了,那就可给今天最后这个提交打一个标签“V1.1”,便于版本管理。

git tag 查看标签列表

git show [tagname] 查看标签信息

git tag [tagname] 创建一个标签

git tag -a v5.1 -m'v5.1版本'

创建标签v5.1.1039,-a指定标签名,-m指定说明文字

git tag -d [tagname]    删除本地标签

git push origin [tagname]   推送某个标签tagname到远程

git push origin --tags 一次性推送全部标签到远程

后悔药-怎么撤销变更?

发现写错了要回退怎么办?看看下面几种后悔指令吧!

 还没本地提交的怎么撤销?

修改的内容还没提交到工作区、暂存区,不想要了 

使用reset 本地回滚撤销

已提交到本地但没有push到远程的如何撤销?

修改的内容已经提交到工作区、暂存区,不想要了 

使用reset、revert本地回滚撤销

已push到远程的如何撤销?

先使用reset、revert本地回滚撤销

然后强制推送git push origin -f

后悔指令

 

checkout指令

git checkout / git checkout [file] 

撤销/清除工作区中 所有的修改内容(该修改内容未添加到暂存区),用暂存区替换当前的工作区。

git checkout HEAD / git checkout HEAD [file] 

撤销/清除工作区、暂存区的修改内容(已经通过git add  将工作区暂存到了暂存区)

用HEAD指向的当前分支最新版本替换工作区、暂存区的版本

reset回退版本指令

reset是专门用来撤销修改、回退版本的指令,支持的场景比较多,多种撤销姿势,所以参数组合也比较多。简单理解就是移动master分支、HEAD的“指针”地址,理解这一点就基本掌握reset了。

reset有三种模式,对应三种参数:mixed(默认模式)、soft、hard。三种参数的主要区别就是对工作区、暂存区的操作不同。

  • mixed为默认模式,参数可以省略。

  • 只有hard模式会重置工作区、暂存区,一般用这个模式会多一点。

 

git reset/git reset HEAD/git reset HEAD [file] 

撤销暂存区状态,不影响工作区

git reset [commit]

回退到指定版本,清空暂存区,不影响工作区。

git reset/git reset HEAD/git reset HEAD [file] (HEAD可省略)

撤销暂存区状态,不影响工作区

git reset [commit]

回退到指定版本,清空暂存区,不影响工作区。工作区需要手动git checkout签出

git reset --soft [commit]

移动分支master、HEAD到指定的版本,不影响暂存区、工作区,需手动git checkout签出更新

git reset --hard HEAD

撤销工作区、暂存区的修改,用当前最新版

git reset --hard HEAD~

回退到上一个版本,并重置工作区、暂存区内容。

git reset --hard [commit]

git reset --hard 5f8b961

回退到指定版本,并重置工作区、暂存区内容。

reset案例

git reset --hard v4 或 git reset --hard HEAD~2

回退到版本v4  master、HEAD指针移动到v4。v5、v6就被废弃了。

 

git reset --hard v6

也可以重新恢复到v6版本  移动master、HEAD的“指针”地址到V6

 

revert提交撤销某个版本的指令

安全的撤销某一个提交记录,基本原理就是生产一个新的提交,用原提交的逆向操作来完成撤销操作。注意,这不同于reset,reset是回退版本,revert只是用于撤销某一次历史提交,操作是比较安全的。

git revert[commit]

撤销之前的一个提交,

会生成一个新的提交     来完成    撤销之前的一个提交  操作,

案例

git revert v4    -m'撤销对***的修改'
 

 这个提交的指令就是撤销v4版本 v4版本就不存在了

同时更新maser、HEAD“指针”位置,以及工作区内容。

“-m”附加说明”

 

感谢

我看谁还不懂 Git !(万字长文)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git 笔记/常见命令/as的fetch,pull ,update project的区别/标签管理 的相关文章

  • Travis CI - 如何推送到主分支?

    我有一个连接到 GitHub 的 Travis CI 项目 它尝试更新 Github 存储库中的内容并将它们推送回 GitHub 包括 master 和 gh pages 分支 然而 虽然我的 travis ci 日志文件显示一切正常 但我
  • 本地 git 存储库强制从远程 git 存储库更新。 (胖客户端部署)

    Update 我认为这与 Windows git 客户端 msysgit 的问题有关 抱歉打扰你们了 我正在寻找一种方法来使多个客户端框与远程 git 存储库保持同步 强制从远程存储库进行更新并放弃客户端上可能已更改的任何内容 我遇到的问题
  • git 如何在不同分支中保持不同的配置文件?

    请允许我先表达一下我的尝试 假设我有两个分支 Alice1 和 Alice2 Alice1 有自己的服务器 Alice2 也有自己的服务器 我希望能够签出 Alice1 编写我的代码 然后通过使用保存在 URL 配置文件中的 URL 直接推
  • 使用 reposurgeon 将 svn repo 转换为 git

    我正在尝试使用 svn repo 转换为 git再生外科医生 http www catb org esr reposurgeon 这是我所做的 有一个具有 svn 名称 gt git 名称映射的 repo map 文件 svnadmin d
  • 我如何知道哪些文件已在 git 中标记为“假设未更改”

    这个答案 https stackoverflow com a 936325 554807向您展示如何将 git 管理的文件标记为 我不希望从该文件的存储库进行更改 IE 拥有该文件的您自己的本地未跟踪版本 即使它仍然受到 git 的修订控制
  • Git 中的错误 - 致命:“/Users/username/Downloads/folder_name”位于存储库之外

    当我向 git 添加新项目时 出现此错误 Error fatal Users username Downloads folder name is outside repository 如何摆脱这个错误 我想 我需要给出当前的工作目录 但是
  • 读取 git 的最后一次提交和提交号

    在使用Git源代码的maven项目中 每当我使用maven编译构建时 是否可以读取git的最后一次提交和提交号 我想使用该提交编号来找到最后一次提交 这是假设您想要读取该信息 然后将其存储在属性文件中 基于https github com
  • 在 Git 中查看已删除的文件

    我已使用 Git 删除了一个文件 然后又提交了 因此该文件不再位于我的工作副本中 我想查看该文件的内容 但不想真正恢复它 我怎样才能做到这一点 git show HEAD path to file 您可以使用显式提交标识符或HEAD n查看
  • GIT LFS 跟踪旧数据

    我对 GIT LFS 有一个问题 我的项目达到了我正在跟踪 1 5GB 的 LFS 数据的程度 这比我拥有的数据要多得多 没有 LFS 的所有跟踪内容将为 108MB 我开始调查这个问题 看起来自从我开始重构并移动我的文件以来 git lf
  • 在 Jenkins API 中,有没有办法找到上次构建的 git 提交?

    我想编写一个脚本来自动创建热修复的功能分支 为了做到这一点 我需要弄清楚如何查看当前构建中的最后一次提交 有没有办法从 Jenkins API 获取最后一次提交 git checkout b hotfix
  • 如何在 *Windows* 中将 Mercurial 存储库转换为 Git? [复制]

    这个问题在这里已经有答案了 可能的重复 在 Windows 上将 Mercurial hg 存储库转换为 Git 7 https stackoverflow com questions 3267232 converting a mercur
  • Google App Engine 和 Git 最佳实践

    我正在 Google App Engine 上开发一个小型宠物项目 我想使用以下命令将源代码置于源代码控制之下github http www github com 这将允许我的朋友检查和修改源代码 我只有一个PetProject包含所有源的
  • 关闭 Sublime Text 3.2 中的 git 集成

    如果我想关闭 Sublime text 左侧装订线中的 GIT 集成 又名史莱姆绿线 我只需将其切换为 false 26 show git status false 但是 当在首选项中进行设置时 我收到错误 尝试解析设置时出错 意外的字符
  • git | git将旧提交移至另一个分支的过去

    我过去错误地进行了分支 并且在另一个分支的开头留下了一个提交 03431cb HEAD gt bar a2 d332e4d foo b2 9b29ae3 b1 4656a98 a1 6ebca20 master root 我怎样才能移动a1
  • git 别名:多个命令、可变参数

    我经常发现自己输入以下内容 git push remote1 branch1 branch2 tag1 tag2 tag3 git push remote2 branch1 branch2 tag1 tag2 tag3 我更喜欢一个别名 我
  • git:键不包含节

    我使用的是 Git 版本 1 8 4 2 When I press tab to auto complete any command it prints the error below and it also completes the c
  • 创建 Git 标签时自动运行 Git hook

    是否有一个 Git 钩子可以在添加新的 Git 标签时执行 因为我想自动将新的 Git 标签名称写入文本文件 您知道如何执行此操作吗 虽然目前无法使用挂钩 但您始终可以创建一个简单的脚本 mytag sh bin sh z 1 git ta
  • 将远程存储库导入为具有完整历史记录的子目录

    我想将远程存储库作为具有完整历史记录的子目录进行合并和解耦 有多种方法和问题可以实现这一点 我的第一次尝试是使用subtree但它似乎没有重写文件的历史记录 所以我无法查看合并存储库的历史记录 接下来的尝试是手动合并它 就像 Seth Ro
  • git 可以知道你当前的分支是从哪个分支分支出来的吗?

    我想创建一个 git 别名 让我可以从其分支的原始分支同步我的分支 例如 如果我从
  • git jenkins 中未找到存储库

    我正在使用 jenkins 2 64 并安装了最新的插件 我试图在 jenkins 中设置 git 存储库并给出凭据 但给出错误无法连接存储库 状态代码为 128 Cloning repository https github com so

随机推荐

  • ubuntu 中 :dpkg 被中断,您必须手工运行 sudo dpkg --configure -a 解决此问题

    E dpkg 被中断 您必须手工运行 sudo dpkg configure a 解决此问题 sudo rm var lib dpkg updates sudo apt get update 转载于 https www cnblogs co
  • Keil5关于.h文件编译时遇见报错打不开时的解决方案

    添加路径即可
  • Centos设置ssh免密登录

    查看安装的ssh软件 rpm qa查询系统安装的所有软件 对前面rpm查询结果进行搜索ssh rpm qa grep ssh 安装netstat工具查询软件进程的端口号 yum y install net tool 使用netstat查询2
  • 品味树莓派:GPIO口定义、电气特性、启动状态等基础说明

    文章目录 目录 GPIO口定义 电气特性 启动状态 总结 目录 树莓派相比成品化的电脑来说有很多独立的GPIO口可供开发使用 可以方便的实现很多实物相关的功能 本文将对树莓派开放给用户的GPIO口的针脚定义 电气特性 启动状态等基础内容做个
  • svm多分类_数据挖掘算法——常用部分分类算法

    分类算法 分类是在一群已经知道类别标号的样本中 训练一种分类器 让其能够对某种未知的样本进行分类 分类算法属于一种有监督的学习 分类算法的分类过程就是建立一种分类模型来描述预定的数据集或概念集 通过分析由属性描述的数据库元组来构造模型 分类
  • OpenSSL之EVP(一)——数据结构及源码结构介绍

    EVP简介 Openssl EVP提供了丰富的密码学中的各种函数 Openssl 中实现了各种对称算法 摘要算法以及签名 验签算法 EVP 函数将这些具体的算法进行了封装 EVP 主要封装了如下功能函数 1 实现了 base64 编解码 B
  • 新浪期货数据接口

    附注 对于期货数据 一直在寻找互联网上能够获得的比较好的数据源 最近发现了 新浪期货 的数据源 可以提供一分钟的期货K线数据 http hq sinajs cn list TICKER 对于国内期货连续 Ticker为正常Ticker加个0
  • Deep Residual Network

    先阅读者两篇写的比较好的博客 https blog csdn net dulingtingzi article details 79870486 https blog csdn net qq 31050167 article details
  • 高德地图绘制标记点,点击弹出弹框进入第三方地图软件

    需求 根据经纬度绘制标记点 点击标记点弹出弹框和底部按钮 点击顶部弹框进入二级界面 点击底部按钮弹出第三方地图软件选择页 实现跨进程跳转 效果图 项目是公司项目 只放出重要部分代码 final Marker marker1 aMap add
  • 计算机图形学入门(八)-着色(插值、高级纹理映射)

    目录 重心坐标 应用纹理 1 纹理分辨率很小 2 纹理分辨率过大 纹理的应用 颜色 环境贴图 Environment Map 法线贴图 凹凸贴图 位移贴图 三维纹理和三维噪声 着色信息的记录 学习视频来源 GAMES101 现代计算机图形学
  • 【操作系统】进程间通信的五种方式

    引言 1 进程对白 管道 记名管道 套接字 1 管道 2 虫洞 套接字 3 信号 4 信号旗语 信号量 5 进程拥抱 共享内存 引言 进程作为人类的发明 自然免不了脱离人类的习性 也有通信需求 如果进程之间不进行任何通信 那么进程所能完成的
  • 关于你STM32F407片内FLASH擦除失败的问题

    近日 发现STM32F407片内FLASH在写入数据时某些情况下会出现扇区擦除不成功的情况 使用正点原子的代码测试也出一样的情况 网上搜索也没找到较为理想的答案 只有一篇文章遇到同样问题 也是使用了一个不太可靠的办法 但是好在可以解决问题
  • DM8无图形界面安装与使用

    本机实验环境 centos7 9 参考文档 数据库安装 达梦云适配中心文档 dameng com https eco dameng com docs zh cn start install dm linux prepare html 1 系
  • “红山开源”创新论坛

    ChinaOSC 2022 红山开源 创新论坛将于2022年8月20日14 00 17 00在陕西省西安高新国际会议中心召开 红山开源 创新论坛重点聚焦战略科技领域相关需求 邀请知名院士和专家共同探讨战略科研任务开源众创组织模式和项目孵化方
  • 部署tomcat时出现No artifacts marked for deployment

    这种错误主要是因为没有设置导出包 解决方法 File gt Project Structure gt Artifacts 然后点击ok 然后记得apply ok 此时再回到问题所在 点击Fix即可 或者如下
  • JAVA中的正则表达式

    一 正则表达式的构成 1 字符类 abc a b c abc 任何字符 除了a b c a zA Z a到z或A到Z 两头的字母包含在内 范围 2 预定义字符类 任何字符 d 数字 0 9 D 非数字 0 9 s 空白字符 t n x0B
  • Python爬虫JS解密详解,学会直接破解80%的网站(二)!!!

    文章目录 前言 1 网页查看 2 JS解密过程 细心看哦 3 解密答案 完整代码 CSDN独家福利降临 Python爬虫JS解密详解 学会直接破解80 的网站 25个爬虫项目宝藏教程 你值得拥有 前言 Glidedsky这关的JS解密不同于
  • js rsa加密_Python实现RSA(jsencrypt)加密的两种方式

    RSA是一种常用加密算法 经常用在前端向后端传送密码的时候 一 通过运行rsa js文件加密 rsa js文件下载地址 https gitee com youchuanming rsa jsencrypt import urllib pur
  • 常见排序算法的js实现

    常见排序算法的js实现 冒泡排序 选择排序
  • git 笔记/常见命令/as的fetch,pull ,update project的区别/标签管理

    Git概念汇总 头 HEAD 头 HEAD HEAD类似一个 指针 指向当前活动 分支 的 最新版本 工作区 Workspace 就是在电脑里能看到的项目代码库目录 是我们搬砖的地方 在这里我们可以新增文件 修改文件内容 或删除文件 此时的