我不小心将本地更改添加到现有文件中,现在想撤销此文件的更改,但不删除本地文件。我只想让它不在拉取请求中显示,而不想创建新分支,因为很多人已经评论了此PR中的其他文件。
如果您更新了一个已经存在的文件,想要将其从PR中移除:
假设您正在staging
分支上工作,并且您向PR提交了一个名为validate_model.py
的文件。
要从PR中删除此文件并撤消其更改,只需执行以下操作:
git checkout staging -- validate_model.py
你可以使用 git reset
取消暂存特定文件,然后修改原始提交:
git reset HEAD^ /path/to/file
git commit --amend --no-edit
git push -f
这不会影响您工作副本中的文件版本。
或者,如果您想要删除多个文件,您可以将分支的头重置为上一个提交并创建一个新的提交:
git reset HEAD^ # move the tip of the branch to the previous commit
git commit -C ORIG_HEAD file1 file2 [...] # list the required files
git push -f
feature-branch
,合并到master
分支。feature-branch
分支中。./abc1.py
做了一些不必要的更改,想让它和master
分支一样。运行以下命令:
git checkout origin/master -- ./abc1.py
现在,如果你运行:
git status
你会得到和master
分支相同的更改。现在你可以提交你的更改并推送。
可能有很多种方法可以撤销或还原您PR中的文件更改。
我没有找到确切的步骤,所以在这里提供以下内容:
场景:
假设您想要从PR中删除的文件是:C:\GitRepos\MyProject\SomeFile.cs
该文件可能已修改,也可能没有更改(与主分支相同),但仍显示在您的PR中。
解决方案:
1) 确保您已经检出了创建该PR的特性分支。
2) 搜索文件的提交历史记录:git log "C:\GitRepos\MyProject\SomeFile.cs"
您将看到多个格式为的记录:
commit <commit id>
Author: <author name>
Date: <Date of the commit>
<commit message>
3) 找到在您对SomeFile.cs
进行任何更改之前的提交。 复制commit id
。
4) 使用先前复制的commit id
检出该提交:
git checkout <commit id> "C:\GitRepos\MyProject\SomeFile.cs"
5) 如果您现在检查git status
,则会看到SomeFile.cs
处于待处理更改状态。
6) 您需要做的最后一件事就是使用以下命令提交这些更改:
git commit -m "从PR中删除SomeFile.cs"
并且推送您的更改。 :)
如果要从您的分支中删除已添加的文件,可按照以下步骤操作:
git reset HEAD^ 文件路径
然后执行修改提交,最后进行强制推送。
如果要从您最新的PR中删除已存在(仅在最新PR中进行了修改)的文件,请按照以下步骤操作:
在任何文本编辑器(如记事本或npp)中打开该文件。 将文件内容替换为未修改的版本(可能从源代码中复制最新更新的内容,或者根本没有您的更改)。 然后对该文件进行暂存和修改提交。最后进行强制推送。
X
和其他文件 Y
, Z
等做了一些更改。现在你只想撤销对 X
的更改,而不想在 push 中显示它(我猜你指的是 push 而不是 pull),所以你不能简单地将 X
编辑回之前的状态(也许你在源文件中意外提交了密码或其他机密信息等)。X
的更改,那么使用 git rebase
来“跳过”该提交就是最简单的方法。假设 previouscommit
是你的更改之前的提交,brokencommit
是你想要删除的提交,则执行以下操作:git rebase --onto previouscommit brokencommit yourbranch
X
的更改跨越了许多提交,并且/或者与其他文件的更改组合在一起,那么(其中previouscommit
是最后一个“好”的提交):git checkourbranch
git -i rebase previouscommit
编辑
操作,并手动将其编辑掉。请参考git help rebase
以获取更多细节信息,尽管应该很容易知道该怎么做。对我来说,这个命令起作用:
git rm -r --cached pathname/filename
我有一个简单的解决方案:
git checkout staging -- validate_model.py
更短更实用。 - Ulysses请前往您已经推送更改的远程/origin分支(而非master分支),删除该特定文件。
在本地,将您的更改暂存,然后从远程分支拉取所有更改,这将删除该文件,然后弹出您的暂存以获取所有更改和已删除的文件。
以下是步骤:
git checkout campaign_post -- tests/api_tests_new/routes/trafficking/campaign/__data__/test_campaign_post.json
- surender pal