1

我想要一个执行此操作的 git 命令:无论我处于什么状态 - 我可能在我的更改列表中有本地未推送的提交、未暂存的提交或其他内容,或者我可能处于变基或合并的中间,或者我处于某些状态奇怪的状态,它这样做:

  1. 删除所有未跟踪的文件,如果我处于 rebase/merge 的中间,则重置,核对所有未推送的提交,恢复我所有的本地更改等
  2. 将我重置为该分支远程的 HEAD

每隔一段时间,我就会陷入一种我只想说“Ok git,请让我回到一个看起来与我对 repo 进行新克隆并执行 git checkout -b 的状态完全相同的状态”的情况分支我(或者如果我在变基中间)在“

4

3 回答 3

1

没有“1 答案”的解决方案,因为可能性的数量很大,对一种情况有利的对另一种情况不利。因此,正如@twalberg 所说,您应该学习各种命令以及做什么和为什么。

话虽如此....我通常使用以下内容:

git reset --hard HEAD # 删除我在本地所做的一切并返回使用我最初提取的分支版本(或自我上次提交以来)。其他开发人员也这样git reset --hard origin/the_branch_name做。

git checkout -b new_branch# 对新分支执行此操作,并且当您对分支进行了大量更改时,然后意识到您打算在新分支中执行此工作。另外,在进行合并和变基之前,我了解到从 new_branch 中执行 checkout -b new_new_branch_name 以进行变基和合并是很好的。这样,如果它搞砸了,您可以删除该分支并重新开始,而不会产生不良影响.

git rebase -i HEAD~10意味着交互式地重新设置过去的 10 次提交。这意味着对所做的历史提交进行更改(当前状态本身不会改变)。
这会打开一个编辑器,允许您在提交历史记录中压缩、重新排序或删除提交。这可能是一个非常有用的命令,用于整理不同提交中的许多不同更改,以便将其分组到更少的提交中。我们总是在代码审查之前尝试压缩(如果需要)。
注意事项:交互式 rebase 最适合用于尚未推送到远程的分支,尤其是在有其他协作者的情况下(如果不小心,您可能会弄乱他们的历史)。基本上,最好在您仍然在本地或已推送到远程但您知道没有其他人在该分支上工作时使用。

git checkout path_to/and_file_at/myfile.rb 这是将单个文件恢复到上次提交时的任何状态。基本上它会丢弃您的本地(未提交)更改。

git clean- 从当前目录开始递归删除不受版本控制的文件。

于 2012-09-25T20:08:11.447 回答
0

找到了我正在寻找的东西:https ://github.com/mapmeld/gitjk

于 2014-05-27T18:28:00.853 回答
0

您想要git reset,请参阅此页面以获取有关您想要做什么的示例。

正如评论中所指出的,git clean将从树中删除未跟踪的文件,有关其工作原理的详细信息,请参阅此页面

如果您真的只希望它是一个命令,您可以编写一个别名或其他东西来一起执行这两个命令。

于 2012-09-25T19:34:53.440 回答