如何以透明的方式从另一个 git 分支获取目录的副本?

     2023-02-24     73

关键词:

【中文标题】如何以透明的方式从另一个 git 分支获取目录的副本?【英文标题】:How to get a copy of a directory from another git branch in a transparent way? 【发布时间】:2011-08-12 08:57:15 【问题描述】:

如何在不 git 跟踪文件的情况下将目录从 git 分支复制到另一个

我的目标是为一个项目拥有不同的分支,并且能够将每个分支的一部分导入到单个目录中进行打包?每个分支都包含特定 Python 版本的代码,但包必须包含 所有 Python 版本的代码,因此在打包之前必须将所有版本特定分支的代码复制到主分支中。

这是一个例子:

git 控制的主分支目录包含:

uncertainties/

我要导入python-pre-2.5分支中包含的uncertainties/的版本,这样最终的目录是:

uncertainties/  # Should not be touched
uncertainties-py23/  # Imported from the python-pre-2.5 branch

关键点是我不希望git status 报告任何更改(如果一开始没有更改)。也就是说,目录导入过程对git来说应该是不可见的。

通过使用git checkout python-pre-2.5 -- uncertainties 和各种重命名组合(mvgit mv),我没有成功满足最后一个“git 透明度”要求。如何实现?

【问题讨论】:

【参考方案1】:

只需将uncertainties-py23/ 放入.gitignore

【讨论】:

谢谢!这几乎可以工作:git status 报告更改的文件。但是,git commit -a 没有找到任何要提交的文件。我怎样才能让git status 不报告更改的文件? uncertainties/ 中的文件被标记为正在修改并暂存等待提交,但 git 引用了它们导入的python-pre-2.5 版本;同时,git status 还报告了对原始(主分支)文件的修改,以及未暂存的更改。 git diff 报告更改(而git commit -a 不想提交任何内容!)。 啊,我认为问题在于git checkout 让 git 认为它现在在那个分支上。见***.com/questions/160608/…【参考方案2】:

来自主人,

git archive python-pre-2.5 uncertanties > uncertanties-py23.tar
mkdir uncertainties-py23
tar xf uncertanties-py23.tar --strip-components=1 -C uncertanties-py23

然后添加uncertanties-*/ 或类似你的.gitignore。

【讨论】:

git archive 命令很高兴知道:谢谢!我实际上做了tar -C /tmp -xf uncertainties-py23.tar; mv /tmp/uncertainties uncertainties-py23(不需要mkdir--strip-components=1)。 PS:git archive --output uncertainties-py23.tar … 也是一种替代方案,它不依赖于 shell 如何处理文件破坏(> 在 sh 中,>! 是 zsh,...)。

git-如何从另一个分支获取一个文件

Iamusinggitandworkingonmasterbranch.Thisbranchhasafilecalledapp.js.IhaveanexperimentbranchinwhichImadeabunchofchangesandtonsofcommit.NowIwanttobringallthechangesdoneonlytoapp.jsfromexperimenttomasterb 查看详情

如何从远程仓库中的 master 删除 GIT 分支并从另一个分支启动新分支?

】如何从远程仓库中的master删除GIT分支并从另一个分支启动新分支?【英文标题】:HowtodeleteGITbranchfrommasterinremoterepoandstartanewbranchfromanotherbranch?【发布时间】:2021-05-0407:10:24【问题描述】:我不小心从origin的master分支创建了一个... 查看详情

git获取远程分支的代码

...库的master分支,无法clone所有分支,解决办法如下:1.找一个干净目录,假设是git_work2.cdgit_work3.gitclonehttp://myrepo.xxx.com/project/.git,这样在git_work目录下得到一个project子目录4.cdproject5.gitbranch-a,列出所有分支名称如下:remot 查看详情

git常用命令

...sh:将本地分支的更新推送到远程主机gitpushoriginmastergitpull:从另一个存储库或本地分支获取并集成/整合:取回远程主机某个分支的更新再与本地的指定分支合并gitpulloriginmastergitlog:查看日志gitloggitrm:从工作区和索引中删除文件gitrmt... 查看详情

如何将远程分支添加到我的本地仓库?

】如何将远程分支添加到我的本地仓库?【英文标题】:Howtoaddaremotebranchtomylocalrepo?【发布时间】:2021-05-2123:20:40【问题描述】:所以我还没有找到任何答案以我理解的方式解释这一点。那么如何使用git将远程分支添加到本地仓... 查看详情

text[git]完全从另一个分支替换git中的master分支(代码片段)

查看详情

如何在 git 中获取最后一个合并的分支名称

】如何在git中获取最后一个合并的分支名称【英文标题】:HowcanIgetthelastmergedbranchnameingit【发布时间】:2021-06-1918:04:07【问题描述】:如何从远程获取git中最后合并的分支名称试过gitlog--first-parent--merges-1--oneline但没有得到分支名... 查看详情

如何在 Git 分支中搜索文件或目录?

】如何在Git分支中搜索文件或目录?【英文标题】:HowcanIsearchGitbranchesforafileordirectory?【发布时间】:2010-09-2705:09:48【问题描述】:在Git中,我如何通过多个分支的路径搜索文件或目录?我在一个分支中写了一些东西,但我不记... 查看详情

如何以编程方式获取 Git 的版本?

】如何以编程方式获取Git的版本?【英文标题】:HowtogettheversionofGitprogrammatically?【发布时间】:2021-08-2023:53:59【问题描述】:如HowcanIfindoutwhatversionofgitI\'mrunning?中详述,您可以通过以下方式获取git版本$gitversiongitversion2.30.0但看... 查看详情

如何在git中合并具有不同目录层次结构的两个分支?

】如何在git中合并具有不同目录层次结构的两个分支?【英文标题】:Howtomergetwobrancheswithdifferentdirectoryhierarchiesingit?【发布时间】:2011-06-1023:32:45【问题描述】:我开始将Maven与Web应用程序项目一起使用,因此目录层次结构发生... 查看详情

如何从另一个文件中获取查询以返回布尔值?

】如何从另一个文件中获取查询以返回布尔值?【英文标题】:HowdoIgetaqueryfromanotherfiletoreturnabool?【发布时间】:2022-01-2216:41:44【问题描述】:我正在将以下系统集成到我的待办事项应用程序中:每次用户打开应用程序时,它应... 查看详情

如何创建一个新的git分支

参考技术A1.进入本地git仓库目录下,打开gitbash环境2.使用gitbranch命令可以查看到,当前目录只有一个master分支3.使用命令:gitcheckout-bdev_newstyle(分支名)创建一个名为dev_newstyle的分支,同时切换到该分支。4.使用命令gitpushorigindev_new... 查看详情

IOS - 如何以编程方式阻止从另一个应用程序打开一个应用程序?

】IOS-如何以编程方式阻止从另一个应用程序打开一个应用程序?【英文标题】:IOS-HowdoIblockopenoneappfromanotherappprogrammatically?【发布时间】:2018-08-0315:25:56【问题描述】:我正在尝试在我的应用程序的UIWebView本身中观看youtube视频... 查看详情

批处理文件以循环通过远程 Git 分支并将每个分支中的类似 CSV 文件复制到本地目录

...为了详细说明我的问题,在许多不同的远程git分支中都有一个特定的文件,每个cs 查看详情

git分支管理(代码片段)

...sting现在我们可以看到,有了一个新分支testing。当你以此方式在上次提交更新之后创建了新分支,如果后来又有更新提交,然后又切换到了"testing"分支,Git将还原 查看详情

如何创建新分支?

】如何创建新分支?【英文标题】:HowdoIcreateanewbranch?【发布时间】:2011-03-0420:15:45【问题描述】:如何使用TortoiseSVN用我的工作副本创建一个新分支?我看到了分支选项,但我没有看到以某种方式命名它的方法。【问题讨论】... 查看详情

gitlab重命名分支并从另一个重新开始(代码片段)

...什么办法可以将master分支重命名为origindevelop,并以某种方式使用原始版本的应用程序创建一 查看详情

初学者:如何以编程方式从另一个视图呈现 UITableView

】初学者:如何以编程方式从另一个视图呈现UITableView【英文标题】:Beginner:HowtopresentUITableViewprogrammaticallyfromanotherview【发布时间】:2012-02-2615:06:50【问题描述】:我已经使用Storyboard和InterfaceBuilder创建了嵌入在NavigatorController中... 查看详情