2011-09-02 79 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

一旦你的可視化你會發現它更容易 - 直到你改變它,故事情節牆仍然有它的一切。