Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git推送主机仅在给定提交之后_Git_Github_Git Push - Fatal编程技术网

Git推送主机仅在给定提交之后

Git推送主机仅在给定提交之后,git,github,git-push,Git,Github,Git Push,我有一个本地git项目,我想通过推动公共Github回购来开源。假设这是本地项目历史: F-G [feature-1] / \ A-B-C-D-E H-I-J [master] ^ \(first public ready commit) 然而,我有一个问题:在原型设计过程中,我硬编码了一些敏感数据。假设在提交D之前,代码中有我不希望任何人看到的数据 如何在本地回购协议中保留变更历史记录,但仅从E开始发布

我有一个本地git项目,我想通过推动公共Github回购来开源。假设这是本地项目历史:

          F-G [feature-1]
         /   \
A-B-C-D-E     H-I-J   [master]
        ^
         \(first public ready commit) 
然而,我有一个问题:在原型设计过程中,我硬编码了一些敏感数据。假设在提交D之前,代码中有我不希望任何人看到的数据

如何在本地回购协议中保留变更历史记录,但仅从
E
开始发布

我正在考虑两种方法:

  • E
    之前挤压提交,这将使
    E
    成为初始版本
  • 创建某种发布分支,该分支将在
    主控
    稍晚一点开始

  • 欢迎使用命令行代码段

    在这种情况下,我会使用移植文件并重写:

    首先,标记D和E。从这里开始,我假设它们可以被称为D和E

    现在,伪造E的历史记录,使其没有父对象:

    git rev-parse E >.git/info/grafts
    
    然后,重写提交以反映此历史记录:

    git filter-branch -- --all
    
    现在,您有一个指向敏感数据的本地标记D和一个指向干净数据的本地标记E作为初始提交:

    F'-G' [feature-1] / \ E' H'-I'-J' [master] A-B-C-D 请注意,您现在不想运行
    git过滤器分支

    在本地,您的历史记录如下所示:

    F'-G' [feature-1] / \ A-B-C-D-E' H'-I'-J' [master] F'-G'[特征-1] / \ A-B-C-D-E'H'-I'-J'[母版] 但是如果你推,你会推真正的E',它没有父对象,那么远,你只能得到

    F'-G' [feature-1] / \ E' H'-I'-J' [master] F'-G'[特征-1] / \ E'H'-I'-J'[母版]
    在这种情况下,我会使用移植文件并重写:

    首先,标记D和E。从这里开始,我假设它们可以被称为D和E

    现在,伪造E的历史记录,使其没有父对象:

    git rev-parse E >.git/info/grafts
    
    然后,重写提交以反映此历史记录:

    git filter-branch -- --all
    
    现在,您有一个指向敏感数据的本地标记D和一个指向干净数据的本地标记E作为初始提交:

    F'-G' [feature-1] / \ E' H'-I'-J' [master] A-B-C-D 请注意,您现在不想运行
    git过滤器分支

    在本地,您的历史记录如下所示:

    F'-G' [feature-1] / \ A-B-C-D-E' H'-I'-J' [master] F'-G'[特征-1] / \ A-B-C-D-E'H'-I'-J'[母版] 但是如果你推,你会推真正的E',它没有父对象,那么远,你只能得到

    F'-G' [feature-1] / \ E' H'-I'-J' [master] F'-G'[特征-1] / \ E'H'-I'-J'[母版]
    在这种情况下,我会使用移植文件并重写:

    首先,标记D和E。从这里开始,我假设它们可以被称为D和E

    现在,伪造E的历史记录,使其没有父对象:

    git rev-parse E >.git/info/grafts
    
    然后,重写提交以反映此历史记录:

    git filter-branch -- --all
    
    现在,您有一个指向敏感数据的本地标记D和一个指向干净数据的本地标记E作为初始提交:

    F'-G' [feature-1] / \ E' H'-I'-J' [master] A-B-C-D 请注意,您现在不想运行
    git过滤器分支

    在本地,您的历史记录如下所示:

    F'-G' [feature-1] / \ A-B-C-D-E' H'-I'-J' [master] F'-G'[特征-1] / \ A-B-C-D-E'H'-I'-J'[母版] 但是如果你推,你会推真正的E',它没有父对象,那么远,你只能得到

    F'-G' [feature-1] / \ E' H'-I'-J' [master] F'-G'[特征-1] / \ E'H'-I'-J'[母版]
    在这种情况下,我会使用移植文件并重写:

    首先,标记D和E。从这里开始,我假设它们可以被称为D和E

    现在,伪造E的历史记录,使其没有父对象:

    git rev-parse E >.git/info/grafts
    
    然后,重写提交以反映此历史记录:

    git filter-branch -- --all
    
    现在,您有一个指向敏感数据的本地标记D和一个指向干净数据的本地标记E作为初始提交:

    F'-G' [feature-1] / \ E' H'-I'-J' [master] A-B-C-D 请注意,您现在不想运行
    git过滤器分支

    在本地,您的历史记录如下所示:

    F'-G' [feature-1] / \ A-B-C-D-E' H'-I'-J' [master] F'-G'[特征-1] / \ A-B-C-D-E'H'-I'-J'[母版] 但是如果你推,你会推真正的E',它没有父对象,那么远,你只能得到

    F'-G' [feature-1] / \ E' H'-I'-J' [master] F'-G'[特征-1] / \ E'H'-I'-J'[母版]
    我将@hvd的答案作为被接受的答案,因为太棒了

    然而,由于我的特定用例用于删除敏感数据,因此我采用了中概述的路线。特别是通过使用:


    对于任何试图做类似事情的人来说,这只是一次机会,但我肯定会在未来坚持使用BFG。

    我将把@hvd的答案作为公认答案,因为它太棒了

    然而,由于我的特定用例用于删除敏感数据,因此我采用了中概述的路线。特别是通过使用:


    对于任何试图做类似事情的人来说,这只是一次机会,但我肯定会在未来坚持使用BFG。

    我将把@hvd的答案作为公认答案,因为它太棒了

    然而,由于我的特定用例用于删除敏感数据,因此我采用了中概述的路线。特别是通过使用:


    对于任何试图做类似事情的人来说,这只是一次机会,但我肯定会在未来坚持使用BFG。

    我将把@hvd的答案作为公认答案,因为它太棒了

    然而,由于我的特定用例用于删除敏感数据,因此我采用了中概述的路线。特别是通过使用:

    对于任何想做类似事情的人来说,这只是一次机会,但我肯定会在未来坚持BFG