Git checkout 某个版本到指定文件夹下

这篇具有很好参考价值的文章主要介绍了Git checkout 某个版本到指定文件夹下。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

场景说明

  • 我不想checkout到覆盖本地工作区的文件,
    而是想把该
  • 版本checkout到另外一个文件夹下,检出看看,这个文件夹不被git管理

方案一:git archive 最简单省事

# `git archive` 创建对应版本 当前目录下的文件为一个tar文件
# `tar -x -C` 加压文件到指定位置
git archive <commit_hash> | tar -x -C <new_folder>

将 <commit_hash> 替换为你想要检出的具体commit的哈希值,<new_folder> 替换为你想要保存文件的新文件夹路径。

这条命令会创建一个对应版本的tar临时归档文件,并将其解压到指定的新文件夹中,保持原来的文件结构。

注意:

  • 执行这条命令应在git仓库的根目录下,否则得到的只有当前目录下的文件
  • 你需要确保 <new_folder> 不存在,或者是一个空文件夹,否则会报错。

如果打包时不想对某些文件/文件夹打包,可以创建一个.gitattributes文件(但是只有含有这个文件的commit,打包时才能忽略,对历史版本打包时无效),并在其中添加export-ignore属性,比如:

# 这三个东西打包时将被忽略
.gitignore        export-ignore
.gitattributes    export-ignore
/result           export-ignore

方案二:git show 最灵活, 但文件较多时麻烦

另一个方案是利用git show结合重定向>逐个检出文件,比如:git show 94119e2:test.py > test_v1.0.py,有多个文件的话就逐个执行。

方案三:git --work-tree 有bug

方案:通过指定--work-tree=/path/to/dist 可实现目标功能
	git --work-tree=/d/mycode/test_git/labs/2053 checkout 3d9862a -- .
	
其中:
	• git checkout 3d9862a -- .
		○ 检出指定版本的所有文件
		○ `.`表示所有文件, 也可以换成某个文件/文件夹
		
	• --work-tree=/d/mycode/test_git/labs/2053
		○ 用于指定检出到的位置,该路径必须存在
		○ 如果该路径下已有文件,则会直接覆盖

执行这个命令之后会把你的文件变成not staged for commit, 然后执行git add就可以了,不需要再commit.文章来源地址https://www.toymoban.com/news/detail-717201.html

到了这里,关于Git checkout 某个版本到指定文件夹下的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • git 提交代码某个文件夹一直提交不上去

    问题描述: 这个文件夹是直接拷贝过去的,在提交到远程仓库是出现了问题。 问题分析: 直接拷贝过去的文件夹里面有个 .git 的文件,所以在执行 git status 的时候出现 modified: test (modified content, untracked content) 提示,这个提示存在的原因是 xxx目录是一个空目录,且里面有一个

    2024年03月15日
    浏览(77)
  • git如何仅合并项目下的某个文件夹

    假设目前在做的一个项目名为demoproject,目前版本为v1.0.0,标准开发都是在demoproject上进行的,但是有一个客户需要做定制化,需要将项目中的一些信息改为客户的,于是基于demoproject拉了一个v1.0.0-custom,然后将这个v1.0.0-custom交付给了客户。 过了一段时间,客户又提了新的需

    2024年01月21日
    浏览(76)
  • Git 忽略指定文件或文件夹

    1. 在.gitignore中添加忽略的文件 2. 然后在该目录执行  注意: .gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。 正确的做法是在每个clone下来的仓库中手动设置不要检查特定文件的更改情况。  

    2024年02月11日
    浏览(60)
  • git clone代码到本地指定文件夹

    1、进入创建指定文件夹: mkdir xxx 2、初始化本地git仓库 git init 3、关联远程仓库 git remote add -f origin 地址 git add . git commit -m ‘首次提交’ git push -u origin “master” 4、执行拉取代码 git pull origin master 方式二:

    2024年02月15日
    浏览(73)
  • git 指定更新文件/文件夹(2行命令 用户临时这次)

    效果如下: 可能用到的:

    2024年02月13日
    浏览(44)
  • Git克隆远程仓库中的指定文件或者文件夹

    我们在日常需求中,可能会仅仅只想拉去某个仓库中的指定文件或者文件夹到本地的需求,这里记录一下操作方法 1、创建文件夹 一般来说,在克隆远程仓库之前会在自己电脑本地新建一个文件夹用于存放,可以自己手动新建一个文件夹,也可以使用命令: 2、进入到创建的

    2024年02月11日
    浏览(79)
  • git拉取指定的单个或多个文件或文件夹

    直接上步骤 初始化仓库 拉取远程仓库信息,省略号为仓库地址 开启 sparse clone 配置需要拉取的文件夹 有一个指定一个,有多个指定多个,路径写对即可! 注意:路径问题,举例说明 路径位置要从项目的最开始文件夹开始,一级级往下配置。 5. 拉取仓库指定位置 注意 :指

    2023年04月11日
    浏览(52)
  • Git clone到自己指定的文件夹中

    github上有三种保存网址  常用的是HTTPS,SSH的也能使用,最后一种我没用,因为我尝试了前面两种都成功了,就不再用第三种。下面简要介绍一下我的保存方法。 首先,你要保证自己电脑上下载了Git,即在电脑桌面上右击会出现以下两个图标  然后你打开git快捷方式,或者直

    2024年02月04日
    浏览(79)
  • 限制Linux指定用户访问某个文件夹,禁止其访问指定文件夹

         默认情况下用户本身就只能读写执行自己目录下自己创建的文件,自己主目录以外的文件都没有写权限、执行权限;自己主目录以外的目录,则只有r和x权限,没有w权限,对于合法的ssh用户,这样的权限就已经足够了。 否则如果去该系统目录和文件的权限,可能会引起

    2024年02月06日
    浏览(73)
  • Git基础教程:配置.gitignore文件以忽略指定的文件和文件夹(嵌入式)

    Git基础教程:配置.gitignore文件以忽略指定的文件和文件夹(嵌入式) 在进行Git版本控制时,经常需要忽略某些文件或文件夹,以避免将它们包含在版本控制中。这在嵌入式系统开发中尤其重要,因为项目中可能包含大量生成的文件、临时文件和编译输出等,这些文件不应该

    2024年02月08日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包