如何删除git push之前已经提交的不必要的文件

时间:2016-08-26 16:11:44

标签: git

让我在这里解释一下这个问题: -

1)我创建了一个新分支:

git checkout -b <newbranch>

2)我在这个分支中修改了file1.tcl并提交了它(直到现在都没有推送)

3)现在我必须处理另外两个单独的文件,我应该为它创建一个单独的分支但是我错误地开始处理同一个<newbranch>并且同时提交了这两个文件(file2.tcl和file3) .tcl)来自同一个分支

4)所以我在这一点上意识到自己的错误,我创建了一个新的独立分支,并从这里对file2.tcl和file3.tcl进行了修改(只有少数几个)并提交了它们,甚至做了一个git push。所以现在file2.tcl和file3.tcl所需的更改就位并推送到github

5)现在回到<newbranch>,因为我想从这里推送file1.tcl中所做的更改,问题是我可以看到,如果我现在推送file1.tcl ... file2 .tcl和file3.tcl也会进入PUSH。所以我想以某种方式从我的git-push堆栈中取出这两个文件

gourabm@lb4b13-pc-01(eRx)$ git diff --stat --cached origin/master
 eRx/lib/file1.tcl | 3348       +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------------------------
 eRx/bin/file2.tcl |    1 -
 eRx/lib/file3.tcl |   75 +++---
 3 files changed, 1978 insertions(+), 1446 deletions(-)

请建议我一个简单而安全的方法从我的git-push列表中取出这两个文件,这样他们就不会进行推送,只有一个file1.tcl进入推送

2 个答案:

答案 0 :(得分:1)

newbranch 中的

git reset --hard HEAD^1将删除file2.tcl和file3.tcl中包含更改的提交。现在

  1. 您将在file1.tcl和
  2. 中进行更改
  3. 第二个分支将提交其他两个文件中的更改。

答案 1 :(得分:0)

你试过吗

git revert {commit-that-changed-file2.tcl}
git revert {commit-that-changed-file3.tcl}
git commit -m "undoing extra changes"

根据我的理解,git应该撤消这些提交中的更改,并允许您在推送之前重新提交这些更改,因此您的遥控器应保持不受影响。