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

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


当前回答

使用什么,reset --softreset --hard?

@Kyralessa的回答:

如果您不确定该使用什么--soft(我用这个公约来纪念它)s. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

为什么?

如果您选择了--hard你会犯错,你会犯错输 输之前没有的更改。如果您选择--soft犯错后,您也可以得出相同的结果。--hard通过应用附加命令

git reset HEAD file.html
git checkout -- file.html

完整示例

echo "some changes..." > file.html
git add file.html
git commit -m "wrong commit"

# I need to reset
git reset --hard HEAD~1 (cancel changes)
# OR
git reset --soft HEAD~1 # Back to staging
git reset HEAD file.html # back to working directory
git checkout -- file.html # cancel changes

感谢@Kyralessa。

其他回答

类型类型类型git log并发现最后的散列代码,然后输入:

git reset <the previous co>

使用什么,reset --softreset --hard?

@Kyralessa的回答:

如果您不确定该使用什么--soft(我用这个公约来纪念它)s. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

为什么?

如果您选择了--hard你会犯错,你会犯错输 输之前没有的更改。如果您选择--soft犯错后,您也可以得出相同的结果。--hard通过应用附加命令

git reset HEAD file.html
git checkout -- file.html

完整示例

echo "some changes..." > file.html
git add file.html
git commit -m "wrong commit"

# I need to reset
git reset --hard HEAD~1 (cancel changes)
# OR
git reset --soft HEAD~1 # Back to staging
git reset HEAD file.html # back to working directory
git checkout -- file.html # cancel changes

感谢@Kyralessa。

主要设想有两种情况:

你还没推动承诺呢

如果问题在于您所做的额外文件( 而您不希望存储库中的文件), 您可以使用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 命令 :

警告 :不使用 - 硬 如果你不知道自己在做什么, 硬就是太硬危险,它可能会删除您的文件 。

返回 Git 中的承诺的基本命令是 :

$ git reset --hard <COMMIT -ID>

$ git reset --hard HEAD~<n>

协调会 协调会:承诺的代号

n:您想要返回的上次承诺的数

您可以获取下列承诺代号:

$ **git log --oneline**

d81d3f1 function to subtract two numbers

be20eb8 function to add two numbers

bedgfgg function to multiply two numbers

何 地d81d3f1 d81d3f1贝多208执行 ID。

现在,让我们来看看一些案例:

假设您想要返回上次的“ d81d3f1 ” 。 这里有两个选项 :

$ git reset --hard d81d3f1

$ git reset --hard HEAD~1

假设您想要还原“ ebe20eb8” 承诺 :

$ git reset --hard be20eb8

欲了解更详细的信息,请参考并尝试其他命令,将头重置为指定状态:

$ git reset --help

只需撤销最后一项承诺 :

git reset --soft HEAD~

或撤销上次承诺前的时间 :

git reset --soft HEAD~2

或撤销先前的任何承诺 :

git reset --soft <commitID>

(您可以使用git reflog)

当您撤销上一个任务时, 记住要用

git clean

更多信息,请查看以下文件:git- reseet 重置