相关疑难解决方法(0)

如何取消删除以前在git历史记录中删除的文件?

在另一个问题上使用Chris的答案,我可以将快照历史记录添加到我的git存储库中.由于其中一个文件不是我的历史记录的一部分,而只是在快照中,因此第一个原始提交现在也包含此文件的删除.我该怎么撤消?

起初我认为这与我如何从git的历史记录中删除敏感文件相反,但实际上我不想将文件插入历史记录,只是从历史记录中删除删除.

git history repository undelete

45
推荐指数
2
解决办法
3万
查看次数

如何将过去添加到git存储库?

我收到了一些源代码并决定使用git,因为我的同事使用了mkdir $VERSION等方法.虽然代码的过去目前似乎并不重要,但我仍然希望将其置于git控制之下以更好地理解开发过程.所以:

将这些过去的版本放入我现有的git仓库的简便方法是什么?目前没有远程仓库,所以我不介意重写历史记录,但考虑到远程存储库的解决方案当然是首选,除非它更复杂.基于目录或基于档案文件的历史记录,不需要任何更多交互的脚本的加分点.

git

25
推荐指数
1
解决办法
3927
查看次数

当git使用一些共享历史记录重新定义两个分支时,是否有一种简单的方法可以使共同历史保持常见?

假设我们有以下修订图:

A-X-Z--B
     \
      \-C
Run Code Online (Sandbox Code Playgroud)

在B和C之前使用A.进一步假设我从上游重新绑定A,创建一个新的提交A*,然后将B和C重新绑定到A*上.生成的修订图如下:

A*-X'-Z'-B
 \
  \-X"-Z"-C
Run Code Online (Sandbox Code Playgroud)

请注意,不再共享共享历史记录.有没有一种简单的方法可以解决这个问题,除了说,重新定义B然后明确地将C重新定位到Z'.换句话说,是否有更好的方法可以同时自动修改多个分支以保留共享历史记录?只是人为地在分割点放置一个标记,或者手动检查图形以找出修改C以保留共享历史记录的提交的sha1似乎有点尴尬,更不用说开放可能性了错误,特别是因为我必须在每次改变时都这样做,直到我检查上游分支的变化.

git git-rebase

19
推荐指数
1
解决办法
6396
查看次数

为什么git-filter-branch没有重写标签?

我需要将我的git repo分成两部分.我使用了这里显示的步骤:Detach(move)子目录到单独的Git存储库中

我使用的命令是:

 git filter-branch --subdirectory-filter ABC HEAD -- --all
Run Code Online (Sandbox Code Playgroud)

这似乎很好,并留下了ABC作为根.

但是现在,如果我尝试检查在拆分回购之前存在的标记:

 git checkout an-old-tagname
Run Code Online (Sandbox Code Playgroud)

它正在重新创建旧的目录结构 - 所以重新创建ABC作为子目录,以及XYZ1和XYZ2.

我知道回购真正看到了那个时间点 - 但我希望标签只引用ABC位,好像它们当时已经在根部.我认为这是filter-branch在重写历史时所做的事情,但显然我并没有正确地理解它.

如何重新编写标签,以便我可以回到过去,同时仍然将ABC作为回购的根源?

git git-filter-branch

9
推荐指数
1
解决办法
4103
查看次数