iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何使用Git工作树对你的代码进行自由实验
  • 770
分享到

如何使用Git工作树对你的代码进行自由实验

2023-06-15 13:06:53 770人浏览 八月长安
摘要

这篇文章给大家分享的是有关如何使用git工作树对你的代码进行自由实验的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。获得自由尝试的权利,同时在你的实验出错时可以安全地拥有一个新的、链接的克隆存储库。Git &nbs

这篇文章给大家分享的是有关如何使用git工作树对你的代码进行自由实验的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

获得自由尝试的权利,同时在你的实验出错时可以安全地拥有一个新的、链接的克隆存储库。

Git  的设计部分是为了进行实验。如果你知道你的工作会被安全地跟踪,并且在出现严重错误时有安全状态存在,你就不会害怕尝试新的想法。不过,创新的部分代价是,你很可能会在这个过程中弄得一团糟。文件会被重新命名、移动、删除、更改、切割成碎片;新的文件被引入;你不打算跟踪的临时文件会在你的工作目录中占据一席之地等等。

简而言之,你的工作空间变成了纸牌屋,在“快好了!”和“哦,不,我做了什么?”之间岌岌可危地平衡着。那么,当你需要把仓库恢复到下午的一个已知状态,以便完成一些真正的工作时,该怎么办?我立刻想到了 git branch 和 git stash 这两个经典命令,但这两个命令都不是用来处理未被跟踪的文件的,而且文件路径的改变和其他重大的转变也会让人困惑,它们只能把工作暂存(stash)起来以备后用。解决这个需求的答案是 Git 工作树。

什么是 Git 工作树

Git 工作树worktree是 Git 仓库的一个链接副本,允许你同时签出多个分支。工作树与主工作副本的路径是分开的,它可以处于不同的状态和不同的分支上。在 Git 中新建工作树的好处是,你可以在不干扰当前工作环境的情况下,做出与当前任务无关的修改、提交修改,然后在以后合并。

直接从 git-worktree 手册中找到了一个典型的例子:当你正在为一个项目做一个令人兴奋的新功能时,你的项目经理告诉你有一个紧急的修复工作。问题是你的工作仓库(你的“工作树”)处于混乱状态,因为你正在开发一个重要的新功能。你不想在当前的冲刺中“偷偷地”进行修复,而且你也不愿意把变更暂存起来,为修复创建一个新的分支。相反,你决定创建一个新的工作树,这样你就可以在那里进行修复:

$ git branch | tee* devtrunk$ git worktree add -b hotfix ~/code/hotfix trunkPreparing ../hotfix (identifier hotfix)HEAD is now at 62a2daf commit

在你的 code 目录中,你现在有一个新的目录叫做 hotfix,它是一个与你的主项目仓库相连的 Git 工作树,它的 HEAD 停在叫做 trunk 的分支上。现在你可以把这个工作树当作你的主工作区来对待。你可以把目录切换到它里面,进行紧急修复、提交、并最终删除这个工作树:

$ cd ~/code/hotfix$ sed -i 's/teh/the/' hello.txt$ git commit --all --message 'urgent hot fix'

一旦你完成了你的紧急工作,你就可以回到你之前的任务。你可以控制你的热修复何时被集成到主项目中。例如,你可以直接将变更从其工作树推送到项目的远程存储库中:

$ git push origin HEAD$ cd ~/code/myproject

或者你可以将工作树存档为 TAR 或 ZIP 文件:

$ cd ~/code/myproject$ git arcHive --fORMat tar --output hotfix.tar master

或者你可以从单独的工作树中获取本地的变化:

$ git worktree list/home/seth/code/myproject  15fca84 [dev]/home/seth/code/hotfix     09e585d [master]

从那里,你可以使用任何最适合你和你的团队的策略合并你的变化。

列出活动工作树

你可以使用 git worktree list 命令获得工作树的列表,并查看每个工作树签出的分支:

$ git worktree list/home/seth/code/myproject  15fca84 [dev]/home/seth/code/hotfix     09e585d [master]

你可以在任何一个工作树中使用这个功能。工作树始终是连接的(除非你手动移动它们,破坏 Git 定位工作树的能力,从而切断连接)。

移动工作树

Git 会跟踪项目 .git 目录下工作树的位置和状态:

$ cat ~/code/myproject/.git/worktrees/hotfix/gitdir/home/seth/code/hotfix/.git

如果你需要重定位一个工作树,必须使用 git worktree move;否则,当 Git 试图更新工作树的状态时,就会失败:

$ mkdir ~/Temp$ git worktree move hotfix ~/Temp$ git worktree list/home/seth/code/myproject  15fca84 [dev]/home/seth/Temp/hotfix     09e585d [master]

移除工作树

当你完成你的工作时,你可以用 remove 子命令删除它:

$ git worktree remove hotfix$ git worktree list/home/seth/code/myproject  15fca84 [dev]

为了确保你的 .git 目录是干净的,在删除工作树后使用 prune 子命令:

$ git worktree remove prune

感谢各位的阅读!关于“如何使用Git工作树对你的代码进行自由实验”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: 如何使用Git工作树对你的代码进行自由实验

本文链接: https://www.lsjlt.com/news/280390.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用Git工作树对你的代码进行自由实验
    这篇文章给大家分享的是有关如何使用Git工作树对你的代码进行自由实验的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。获得自由尝试的权利,同时在你的实验出错时可以安全地拥有一个新的、链接的克隆存储库。Git &nbs...
    99+
    2023-06-15
  • PHP Git 实战:如何使用 Git 进行代码审查?
    答案: 是,可以通过 git 进行代码审查。详细描述:设置 git 环境:安装 git 并初始化一个本地 git 仓库。创建分支:创建一个新分支进行修改,并切换到该分支。推送代码:将代码...
    99+
    2024-05-13
    php git 本地仓库
  • PHP Git 实战:如何使用 Git 进行远程协作?
    PHP Git 实战:使用 Git 进行远程协作 Git 是一个分布式版本控制系统,可帮助团队有效地协作。它使团队成员可以跟踪文件的更改、管理分支,并在必要时回滚或合并更改。 初始化 ...
    99+
    2024-05-14
    php git
  • 如何使用springboot对各层的代码进行测试
    小编给大家分享一下如何使用springboot对各层的代码进行测试,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  因为近段时间在一个系统,后端代码使用的技术栈是...
    99+
    2023-06-04
  • 如何在 ASP 项目中使用 Git 进行代码管理?
    随着软件开发的不断发展和进步,代码管理变得越来越重要。而Git作为一个流行的代码版本控制工具,受到了越来越多开发者的青睐。本文将介绍如何在ASP项目中使用Git进行代码管理。 一、Git的基本概念 1.1 Git的工作原理 Git的工作原...
    99+
    2023-11-01
    关键字 git 大数据
  • 如何使用BenchmarkDotNet对C#代码进行基准测试
    这篇文章给大家分享的是有关如何使用BenchmarkDotNet对C#代码进行基准测试的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。BenchmarkDotNet 是一个轻量级,开源的,强大的 .NET 工具包,...
    99+
    2023-06-14
  • 如何在ASP容器中使用Git进行实时协作?
    在现代软件开发中,团队协作已经成为了一种必不可少的方式。而Git作为一个强大的版本控制工具,也成为了各大团队协作的首选。本文将介绍如何在ASP容器中使用Git进行实时协作。 ASP容器是一种用于托管ASP.NET应用程序的容器。它可以运行...
    99+
    2023-08-28
    容器 实时 git
  • 如何使用 PHP 内置函数对代码进行调试?
    php 内置调试函数:var_dump() 显示变量详细信息,类型、值、结构。print_r() 以更佳可读格式打印信息,适用于调试复杂数据结构。error_log() 记录消息到错误日...
    99+
    2024-04-22
    调试 php
  • 如何在Python教程中使用git来load你的代码?
    在Python教程中,使用Git来管理代码和版本控制是非常重要的技能。在这篇文章中,我们将学习如何使用Git来load你的代码,并在Python项目中使用它。 Git是一个版本控制系统,可以跟踪你的代码更改并帮助你管理代码库。它可以帮助你在...
    99+
    2023-06-26
    教程 load git
  • 如何使用git来load你的Python教程资料和代码?
    随着Python编程语言的流行,越来越多的人开始学习Python。而在学习过程中,我们需要查看大量的教程资料和代码示例。而Git是一个非常强大的版本控制工具,可以帮助我们管理和分享我们的Python代码。本文将介绍如何使用Git来加载你的P...
    99+
    2023-06-26
    教程 load git
  • 如何使用PHP对象POPO来优化你的代码
    目录我们有如下的问题结论我们有如下的问题 1.那么在另一种编程语言中 POJO 的名字是什么呢? 关于普通旧对象的约定是 “普通旧编程语言对象”。如果你在 Ruby 上,你可以调用 ...
    99+
    2024-04-02
  • 你知道如何使用numpy对象来进行自然语言处理吗?
    自然语言处理(NLP)是人工智能领域的一个热门话题,它涉及到计算机对人类语言进行分析和处理的技术。在NLP中,numpy(Numerical Python)是一个非常强大的工具,它可以用于各种不同的NLP任务,包括文本分类、情感分析、文本相...
    99+
    2023-06-23
    numpy 对象 自然语言处理
  • Golang开发经验分享:如何进行高效的代码复用
    Golang作为一门现代化的编程语言,以其高效的性能和简洁的语法受到了广泛的关注和使用。在Golang开发过程中,代码复用是一个非常重要的概念。它可以提高代码的可维护性、减少重复开发和代码冗余。本文将分享一些关于如何进行高效的代码复用的经验...
    99+
    2023-11-22
    Golang 代码复用 高效开发
  • 你知道如何使用numpy对象进行自然语言处理的预测吗?
    当我们谈论自然语言处理(NLP)时,通常会想到使用Python编程语言中的工具。其中,NumPy是Python中最流行的科学计算库之一,主要用于处理多维数组和矩阵。在这篇文章中,我们将讨论如何使用NumPy对象进行自然语言处理的预测。 首先...
    99+
    2023-06-23
    numpy 对象 自然语言处理
  • 如何使用 Git 进行 Java 项目的版本控制和协作?
    Git 是一种分布式版本控制系统,它可以帮助我们更好地管理和协作开发 Java 项目。本文将介绍如何使用 Git 进行 Java 项目的版本控制和协作。 一、Git 简介 Git 是一种分布式版本控制系统,它最初由 Linus Torval...
    99+
    2023-09-04
    git apache windows
  • Python教程必备:如何使用git来load和管理你的代码?
    在Python编程中,git是一个非常重要的工具,它可以帮助我们管理代码,协作开发和版本控制。在这篇文章中,我们将介绍如何使用git来load和管理你的代码。 第一步:安装git 在使用git之前,你需要在你的计算机上安装它。你可以在gi...
    99+
    2023-06-26
    教程 load git
  • Go语言、Git和NPM:如何协同工作以实现卓越的代码质量?
    在现代软件开发中,协同工作是非常重要的。一个团队中的每个人都需要协同工作,以实现卓越的代码质量。在本文中,我们将探讨如何使用Go语言、Git和NPM协同工作,以实现卓越的代码质量。 Go语言是一种快速的、静态类型的编程语言。它被设计用于处...
    99+
    2023-11-01
    git 分布式 npm
  • 使用python对视频文件分辨率进行分组的实例代码
    在平时的工作中,我们的目录有很多的视频文件,如果你没有一个好的视频分类习惯,在找视频素材的时候会很费时,通过对视频的分辨路进行分类可以在需要的时候快速找到你想要的视频分辨率。当然人工...
    99+
    2024-04-02
  • 如何使用 GO 对象进行高效的自然语言处理?
    自然语言处理(Natural Language Processing,NLP)是人工智能领域中的一个重要领域,它涉及到对人类语言的理解和生成。在实际应用中,自然语言处理技术已经广泛应用于搜索引擎、文本分类、机器翻译、问答系统等领域。在本文中...
    99+
    2023-09-05
    自然语言处理 shell 对象
  • 使用Hibernate如何实现对数据库进行增删改查操作
    使用Hibernate如何实现对数据库进行增删改查操作?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Hibernate对数据删除操作删除User表中个一条数据,是需要更具U...
    99+
    2023-05-31
    hibernate 数据库 增删改查
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作