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
Git 如何从我没有删除的拉取请求中删除文件';t修改_Git_Github - Fatal编程技术网

Git 如何从我没有删除的拉取请求中删除文件';t修改

Git 如何从我没有删除的拉取请求中删除文件';t修改,git,github,Git,Github,我不太清楚我是如何陷入这种情况的,但我即将向Github中的一个repo提交一个pull请求,但我发现pull请求包括一系列其他提交(15)到另一个与分支无关的文件 我想要保存的文件名为tutory\u benefit.json,我不想要的文件名为employees.json。如何从我的分支中删除与employees.json相关的所有提交,以便在拉取请求中不考虑它们 我想我在创建新分支(福利查询)时,一定是在与employees.json文件(employees)相关的分支上,而不是在mast

我不太清楚我是如何陷入这种情况的,但我即将向Github中的一个repo提交一个pull请求,但我发现pull请求包括一系列其他提交(15)到另一个与分支无关的文件

我想要保存的文件名为
tutory\u benefit.json
,我不想要的文件名为
employees.json
。如何从我的分支中删除与
employees.json
相关的所有提交,以便在拉取请求中不考虑它们

我想我在创建新分支(
福利查询
)时,一定是在与
employees.json
文件(
employees
)相关的分支上,而不是在
master
上创建此新文件

我在这个新分支上只做了3次提交,拉请求中指定的其他15次提交都与另一个文件相关,我从未在这个分支上修改过这个文件

但是我发现pull请求包含一系列其他提交(15),这些提交到与分支无关的另一个文件

这可能表示您在其他分支的顶部打开了分支,或者您有一个本地修改的
master
分支并从该分支分支

无论哪种方式,您的存储库都是这样的

A - B - C [origin/master]
         \
          D - E - F [others]
                   \
                    G - H - I [yours]
          G - H - I [yours]
         /
A - B - C [origin/master]
         \
          D - E - F [others]
您可以通过git log--decoration--graph看到这一点

origin/master
是向上游看的
master
分支<代码>您的是您要提交的分支<代码>其他人代表您的分支
您的
来源;这可能是您本地修改的
master
或其他分支。只有提交
G-H-I
与您的PR相关

您想要的是您的工作从
源代码/master
这样分支出来

A - B - C [origin/master]
         \
          D - E - F [others]
                   \
                    G - H - I [yours]
          G - H - I [yours]
         /
A - B - C [origin/master]
         \
          D - E - F [others]
您可以通过在
origin/master
的基础上重播
G-H-I
来实现这一点。但是一个简单的
git-rebase-origin/master
就不行了。如果您这样做,Git将替换
您的
源代码/主代码
之间的所有内容,包括
D-E-F
来自
其他
的内容。您需要告诉它忽略
D-E-F
。您可以使用
git-rebase--on
实现这一点

这将获取从(但不包括)
其他
到(包括)
您的
的所有提交,并将它们重写到
原始/主
。那是
G-H-I
。那你就要这个了

          G1 - H1 - I1 [yours]
         /
A - B - C [origin/master]
         \
          D - E - F [others]
请注意,它是G1-H1-I1。这是因为
rebase
不重写历史,而是创建新的历史。这些是新的承诺。当您尝试
git推送时
将被拒绝,因为这不是您的
的简单更新
。您必须
git push--force

总之

  • git fetch
    (获取最新的
    origin/master
  • git签出您的
  • 检查
    git log--decoration--graph
    以确定工作从何处开始

  • git-rebase--on-origin/master
    git-log--decoration--graph
    将让您更好地了解分支中发生了什么。@Schwern因此,看起来每个不需要的提交都是在my 3之前完成的,这很有意义。有没有办法摆脱这个分支上的那些提交?要验证它是否有效(测试),我需要转到主分支吗?或者我能看到我的分支的效果吗?没关系!它按照我想要的方式工作。谢谢