我无意中把错误的文件给了Git, 但还没有把承诺推到服务器上。

我如何从当地存储库撤销这些承诺?


当前回答

视觉演播室代码使得这很容易。

其他回答

主要设想有两种情况:

你还没推动承诺呢

如果问题在于您所做的额外文件( 而您不希望存储库中的文件) , 您可以使用 git rm 来删除文件, 然后用 -- amend 进行 -- amend

git rm <pathToFile>

您也可以用 -r 来删除整个目录, 或甚至与其他 Bash 命令合并

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

删除文件后, 您可以使用 -- amend 选项执行 -- amend 选项

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

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

您已经推进了任务

您可以对其它情景应用相同的解决方案, 然后用 -f 选项进行 Git 推, 但建议不推荐, 因为它以不同的变化覆盖了远程历史( 它会干扰您的仓库 ) 。

相反,您必须在不做 -- amend 的情况下做承诺(记住关于 -amend : 此选项重写上次承诺的历史 ) 。

每次我需要撤销承诺/承诺时,我要做的是:

git 重置 HEADn > // 上次承诺的数量, 我需要撤销 Git 状态 / / 选项 。 所有文件现在都是红色的( 未进入阶段 ) 。 现在, 我可以添加并只承诺需要的文件 :

git 添加 < file name> & git 承诺 - m “ 消息” - m “ 细节”

可以选择:我可以将其它文件的更改(如果需要的话) 推回到它们以前的状态, 并进行退票:

git 检出 < filename>

如果我已经把它推向了遥远的起源, 之前:

git 推源 <branch name> -f // use -f 强制推 。

认为我们已经有了 code. txt 文件。 我们对其做了一些修改并承诺。 我们可以以三种方式撤销此承诺, 但首先, 您应该知道什么是预置文件... 一个预设文件是一个可以承诺的文件。 如果您运行 git 状态, 此文件将会显示为绿色颜色, 如果它没有被预设用于承诺, 将会显示为红色颜色 :

意思是如果您承诺更改, 此文件中的更改没有被保存 。 您可以在您的舞台上添加此文件, 添加 code. txt , 然后进行更改 :

撤消上次承诺 :

现在,如果我们想要在不做其他任何更改的情况下撤销承诺, 我们可以使用 git 重设 -- soft HEAD * 如果我们想要撤销承诺及其更改( THIS 是危险的, 因为您的更改将会丢失) , 我们可以使用 git 重置 -- 硬 HEAD * 如果我们想要撤销承诺并删除舞台上的更改, 我们可以使用 git 重置 -- mixed HEAD* 或短格式的 git 重置 HEAD***

头:

在重置承诺之前, 我们应该知道关于 HEAD... HEAD 在您的工作目录中只是您目前的状况。 它由承诺编号代表 。

Git 承诺 :

在由独有标记表示的一承诺下指定的每项更改。 无法删除提交。 所以, 如果您想要您最后的承诺, 您可以使用 git 重设来跳入它 。

您可以使用两种方法跳入最后一个承诺 :

方法1:(如果不知道承诺编号,但想移动到第一个)

git reset HEAD~1  # It will move your head to last commit

方法2: (如果知道您只需将承诺重置到您已知的承诺上)

git 重置 0xab3 # 提交编号

注意: 如果您想要了解最近一个尝试 git 日志 - p - 1 的最近运行尝试

以下是图形表达式 :

(2015年等)

如果你在视觉工作室无法同步, 因为不允许你按到像“开发”那样的分支, 那么就像我努力的一样, 在视觉工作室NEITHER, REWET NOR(硬的或软的)RESET(硬的或软的)将有效。

答案是用数字标注的:

使用此命令命令 根 你的项目根 核武器 任何试图 被推推:

git reset --hard HEAD~1

备份或拉链你的文件 只是以防你不想失去任何工作,等等...