2011-09-02 81 views
2

我是Git的新手。我真的恨使用命令行,所以我使用SmartGit。Git Staged - 它有文件历史?

我有一些关于git阶段的新手问题。

  • 正确的工作流程是:stage -> commit -> synchronize。用本地提交,我有文件的历史。但是,在舞台上,我没有它?像这种情况下使用:
    • 我提出了一个修复。然后长时间工作,并保存在另一个阶段的过程。但我想回到第一阶段。我可以做这个?或者我失去了这段历史?
  • staged就像一个ROM(只读存储器),所以我可以重写所有的文件,老人丢失?
  • 为什么阶段是好事?我所拥有的Commit没有?
+0

您可能可以配置SmartGit始终提交所有更改(更精确地跟踪所有更改)。在命令行中,它将是'git commit -a'(带** - a **选项)。 –

回答

6

舞台区域存在的原因是,您可以准备提交。例如,如果您对两个不同文件或同一文件的不同部分进行了无关的更改,则可以只分阶段执行其中一个,然后执行另一个阶段,然后提交(使用不同的提交消息)。

关于你提到的具体问题:

因为舞台有只为您准备提交,这不是版本本身。所以,是的,一旦你演出另一个版本,旧版本就会丢失(它在技术上可能仍然作为存储库中的一个对象存在,但它并不容易实现)。

它不像ROM,因为你可以写信给它。

注意:临时区域也在合并期间使用,所以准备提交并不是唯一的用途。但从用户的角度来看,这是主要的。

0
  • 如果要在索引中保留各个阶段的版本,则需要发出提交。

  • 如果以后要合并的最后一次提交,并在索引中的新变化,您可以使用git commit --amendgit commit;git rebase --interactive HEAD^^

  • 的git的指数是不是ROM。它将通过执行git resetgit add进行修改。

  • git索引是一个很棒的功能。它允许您从部分当前更改中创建提交。如果你不想使用它,你不需要。只要你修改的文件已经被git跟踪了,你基本上可以用提交代码git commit --all来跳过索引。对于任何新的文件,你可以添加,然后前与git add --all

0

提交的“临时区域/索引”有两个用途。一个是在合并期间“隐藏”所有临时文件,我相信你会在稍后谈到。对于新用户来说,它的另一个角色是主要的角色,那就是在您提交之前准备好所有工作的地方。获得可视化效果非常重要!

不同之处在于它与您的工作目录保持不同。它几乎就像一个“外箱”文件夹,我的另一个可视化就是您可能在电影中看到的关于杂志创作的“故事板”墙。

当您将add文件放入集结区时,将它们放入出箱/放在故事板上,然后它们会一直存在,直到您将它们取出/移出。

当你使用commit时,系统(git)获取临时区域的正确副本,并将其放入回购站中,并附上提交消息。如addrm(删除),(交换到不同的)branch

一旦你的可视化你会发现它更容易 - 直到你改变它,故事情节墙仍然有它的一切。