我已经对git进行了一些自学,因为它已集成在atom中,因此我可以轻松地还原所做的提交,而不必一直对我的代码进行备份(如果我正确地理解了GIT)。 />
这些有关GIT的教程大多数都讨论了Github,然后您可以在其中发布您的master分支。但我想在本地开发所有内容,而不发布任何内容。因此,github不是一个选择。我只想使用GIT。
在Atom中,还原已完成提交的唯一方法是以github用户的身份执行PUSH和PULL工作流程。由于我没有使用atom登录到github,因此除了在目录中初始化git,“暂存”特定的文件/更改并提交它们之外,我无能为力。
我还从官方网页上下载了git并将其配置为cmd。我如何能够(通过atom)在本地还原提交?
答案 0 :(得分:0)
通过atom或命令行界面
我将向您展示两个命令行界面选项。
让我们从一个新的存储库开始。
$ mkdir how_to_undo_stuff_in_git
$ cd how_to_undo_stuff_in_git
$ git init # Initialize git (only needed once)
首先,我们将创建一个文件myfile
,其内容为foo
。
$ echo foo > myfile
$ git add myfile
$ git commit -m "Add foo content"
下一步,我们将应用第二个要撤消的提交。
$ echo bar >> myfile
$ git add bar
$ git commit -m "Add bar content (bad commit)"
git revert
命令可以为您“取消”提交。它是通过应用新的提交来完成的,而且还可以还原更改。
只需运行
$ git revert HEAD
您现在可以检查myfile
的内容,并看到“ bar”字符串消失了。您也可以运行git log
,它应该看起来像这样
Author: Alan Turing <alan@hotmail.com>
Date: Sat Mar 9 15:28:51 2019 +0000
Revert "bar content"
This reverts commit bc483fc6fd069c70f6822a8b840f74ced64d32c8.
commit bc483fc6fd069c70f6822a8b840f74ced64d32c8
Author: Alan Turing <alan@hotmail.com>
Date: Sat Mar 9 15:28:35 2019 +0000
bar content
commit f6450431be631220210eb83c152d907058a6337d
Author: Alan Turing <alan@hotmail.com>
Date: Sat Mar 9 15:27:23 2019 +0000
foo content
git
还提供了真正“擦除”提交的选项,而不是创建一个取消先前提交的新提交。运行git reset
时要小心,因为当您不小心提供错误的参数时,您可能真的会松散工作的一部分。摘自:https://ohshitgit.com/#accidental-commit-master
$ git reset HEAD~ --hard
这将删除上一次提交。
答案 1 :(得分:0)
这里的挑战之一是,除了基本功能之外,git 几乎总是需要使用命令行。我并不介意太多,因为它迫使您更多地了解每个函数的具体作用,如果误用,几个 git 函数可能会对存储库造成严重破坏。长话短说,如果您打算广泛使用 git,您可能希望尽早熟悉命令行。
更直接地解决您的问题:
撤消一个(或多个)提交时,典型的解决方案是使用 git revert
或 git reset
覆盖/回滚提交。 (有关这两个命令的更多信息,请参阅 Matt 的回答)
然而,查看评论,您似乎正在寻找一种直接内置于 Atom 的方法来执行此操作。幸运的是,github 包看起来确实包含一个撤销按钮。它位于 git 面板右下角的提交历史记录中。通过使用它一两次,它看起来像是重置为之前的提交,同时还保留和暂存“撤消”提交的更改。这似乎是你想要的。但是,如果在已经推送到远程的提交上使用它,请小心。您可能需要合并任何进一步的更改,并且强烈建议不要重置远程提交(尽可能)。
如果您问得更笼统(超出 git revert
/git remove
),那么您有几个额外的选择:
首先,您有 git-plus 和 git-control 之类的包,它们在 Atom 中实现了额外的 git 函数。 git-plus 不需要你打开终端,但它似乎需要对函数的工作原理和需要哪些参数有基本的了解。
此外,如果您决定要开始使用命令行,可以使用 Atom 中的一些软件包来实现终端。 This 是我使用的那个。这是我所知道的唯一一种能够直接从 Atom 使用 git 到其容量范围的方法。