我无意间把错误的档案 写错给Git 基特,但还没有将承诺推进到服务器上。

我如何解除那些承诺?当地当地仓库?


当前回答

如果存储库是在当地承诺的,但尚未被推到服务器上,那么另一种粗糙/佣人解决它的方法将是:

  1. Git 复制另一个位置的仓库 。
  2. 将修改( 文件/ 目录) 从原始仓库复制到此新仓库。 然后承诺并按下新仓库的修改 。
  3. 将旧仓库替换为此新仓库 。

其他回答

这将添加一个新的承诺, 删除所添加的文件 。

git rm yourfiles/*.class
git commit -a -m "deleted all class files in folder 'yourfiles'"

或者您可以重写历史来撤销最后一项承诺 。

警告警告警告警告:此命令将永久删除对《京都议定书》的修改.java您承诺的文件( 和任何其他文件) -- 从工作目录中删除全部修改 :

git reset --hard HEAD~1

缩略hard resetHEAD-1您的工作副本将在您错误犯罪之前设定为犯罪状态 。

撤消上次承诺 :

git reset --soft HEAD^git reset --soft HEAD~

这将撤销最后一项承诺 。

--soft意思是重置为中位 。

HEAD~HEAD^意思是移动以在 HEAD 之前承诺 。


替换上次承诺的新承诺 :

git commit --amend -m "message"

它将以新承诺取代最后一项承诺 。

主要设想有两种情况:

你还没推动承诺呢

如果问题在于您所做的额外文件( 而您不希望存储库中的文件), 您可以使用git rm并且实践,--amend

git rm <pathToFile>

您也可以以下列方式删除整个目录-r,或甚至与其他巴什命令命令

git rm -r <pathToDirectory>
git rm $(find -name '*.class')

删除文件后, 您可以执行-- amend -- 修正 -- 修正选项选项选项

git commit --amend -C HEAD # the -C option is to use the same commit message

这将重写您最近的本地承诺删除额外文件, 因此, 这些文件将不会被按键发送, 并且 GC 将会从您本地的. git 仓库中删除 。

您已经推进了任务

您可以对其它情景应用相同的解决方案,然后做git push和和-f选项选项,但它是未建议因为它以不同的变化(它会破坏你的仓库) 推翻了遥远的历史。

相反,你必须做承诺--amend(记住关于 - amend : 该选项重写上次承诺的历史) 。

git reset HEAD@{n}将重置您上一个n行动。

用于重设, 对于上一个动作, 使用git reset HEAD@{1}.

您可以以两种方式撤销您的 Git 承诺: 首先, 您可以使用git revert,如果你想保留你的承诺历史:

git revert HEAD~3
git revert <hashcode of commit>

第二,你可以使用git reset,它会删除你所有的承诺历史, 并带来你的头在你想要的地方。

git reset <hashcode of commit>
git reset HEAD~3

您也可以使用--hard关键字,如果有的话,我只推荐它,直到它变得非常必要。