Git 如何从我没有删除的拉取请求中删除文件';t修改
我不太清楚我是如何陷入这种情况的,但我即将向Github中的一个repo提交一个pull请求,但我发现pull请求包括一系列其他提交(15)到另一个与分支无关的文件 我想要保存的文件名为Git 如何从我没有删除的拉取请求中删除文件';t修改,git,github,Git,Github,我不太清楚我是如何陷入这种情况的,但我即将向Github中的一个repo提交一个pull请求,但我发现pull请求包括一系列其他提交(15)到另一个与分支无关的文件 我想要保存的文件名为tutory\u benefit.json,我不想要的文件名为employees.json。如何从我的分支中删除与employees.json相关的所有提交,以便在拉取请求中不考虑它们 我想我在创建新分支(福利查询)时,一定是在与employees.json文件(employees)相关的分支上,而不是在mast
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
将让您更好地了解分支中发生了什么。@Schwern因此,看起来每个不需要的提交都是在my 3之前完成的,这很有意义。有没有办法摆脱这个分支上的那些提交?要验证它是否有效(测试),我需要转到主分支吗?或者我能看到我的分支的效果吗?没关系!它按照我想要的方式工作。谢谢git-log--decoration--graph