首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有办法从git根节点删除额外的源文件吗?

有办法从git根节点删除额外的源文件吗?
EN

Stack Overflow用户
提问于 2018-11-01 15:34:32
回答 1查看 27关注 0票数 0

我有一个孤立根节点,其中包含来自另一个根节点的额外文件。是否有一种方法可以移除孤立根节点中的额外文件,就好像它们从来不存在,但不触及主根节点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-01 17:37:14

这里有几个要点将指导你:

  • 提交由其唯一的散列ID标识。分支名称只包含一个特定提交的散列ID,将其视为该分支的最后一次提交。每个提交存储其父级的散列ID。
  • 每个提交都是一个完整的快照。也就是说,提交不包含更改,所以根提交没有什么特别之处,只是它没有父级。
  • 任何提交的任何部分都不能更改。
  • 但是,任何提交都可以提取(将其解冻到索引中,通常也可以进入工作树)。可以修改提取的、未冻结的提交,并且可以使用新的索引进行新的提交,这当然会有不同的哈希ID。

因此,如果你有:

代码语言:javascript
运行
复制
A  <-B  <-C   <-- master1

D  <-E   <-- master2

而且您不喜欢提交D中的快照,您只需提取提交D并在没有父级的情况下创建一个新提交F,这样F就是一个新的根提交:

代码语言:javascript
运行
复制
$ git checkout master2
$ git checkout --orphan master3
$ git rm ...
$ git commit -m 'make commit F'

其结果是:

代码语言:javascript
运行
复制
A  <-B  <-C   <-- master1

D  <-E   <-- master2

F   <-- master3

注意,如果要用E替换master2,则现在必须复制提交master3的效果。

代码语言:javascript
运行
复制
$ git cherry-pick master2

给予:

代码语言:javascript
运行
复制
A  <-B  <-C   <-- master1

D  <-E   <-- master2

F  <-E'  <-- master3

现在可以删除master2并将master3重命名为master2。对于没有注意散列it的人来说,只看分支名称,现在似乎修改了提交D。(您不知道,任何关注散列ID的人(就像Git一样)都会知道这一点。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53104475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档