什么是一个单独的git命令来解除我自己的责任?

时间:2012-09-25 19:30:40

标签: git github dvcs

我想要一个执行此操作的git命令:无论我处于什么状态 - 我可能在我的更改列表中有本地未提交的提交,或者未提交的提交或事情,或者我可能正处于rebase或merge中间或者我我处于一种奇怪的状态,它是这样做的:

  1. 删除所有未跟踪的文件,如果我处于rebase / merge中间,则重置,核对所有未提交的提交,还原所有本地更改等等。
  2. 将我重置为该分支的遥控器的HEAD
  3. 每隔一段时间,我就会陷入一种情况,我只想说“Ok git,请把我放回一个看起来与我做了一个新的克隆回购并完成git结账的状态 - 我是(或者如果我在变基的中间)b的分支“

3 个答案:

答案 0 :(得分: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 - 从当前目录开始递归删除不受版本控制的文件。

答案 1 :(得分:0)

您想要git reset,请参阅this page了解您要执行的操作的示例。

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

如果你真的只想让它成为一个命令,你可以写一个别名或者别的东西来做这两个命令。

答案 2 :(得分:0)

找到我正在寻找的内容:https://github.com/mapmeld/gitjk