2012-12-07 27 views
5

這裏時隱藏或忽略的文件是我的問題(例如通過步):gitignore - 結賬

  • 我有一個Git回購有兩個不同的分支(branchA和branchB),這是目前相同。
  • 簽出到branchB並創建一個新文件「foo.txt」。
  • 將該文件添加到該分支的「.gitignore」,以便在分支B中成功忽略它。
  • 創建另一個文件「hello.txt」,階段並提交它。
  • 結帳到branchA。
  • foo.txt出現在branchA中,但是hello.txt沒有。

爲什麼foo.txt出現在branchA中而沒有像hello.txt那樣得到「隱藏」?

從我的角度來看,這是一個很大的煩惱,看起來像一個錯誤/功能請求,但是Git被設計成這樣嗎?我很驚訝地發現沒有其他人抱怨這件事。

回答

0

簡單的回答:

  • hello.txt的不是「潛伏」,它一直致力於branchB,因此,你不會看到branchA直到您合併或衍合branchB到branchA
  • 相同碰巧.gitignore。如果你向branchB提交了.gitignore(我猜你是這麼做的),然後結賬branchA,那麼branchA沒有.gitignore文件,這就是爲什麼你看到foo.txt。再一次,你需要合併或分支branchB到分支A
+0

我已經知道了,但無論如何感謝。 無論branchA是否具有相同或不同的.gitignore文件,我的觀點是:我相信忽略文件應該像在分級文件一樣在結帳時消失/重新出現。 – freshquiz

4

這不是一個錯誤。要了解它是如何工作的,你需要知道幾件事情。

  • .gitignore並非「自動」應用於全局。你需要提交它。
  • 任何未提交的文件都將在每個分支中可見。當切換分支時,你應該是commit的文件,或者你可以stash它。

而且,這個問題已經前問,但我不怪你在搜索沒有找到它。 Working on two unrelated files in separate git branches

+0

我有一種感覺,這不是一個錯誤,我很抱歉,我以前沒有找到它。 你可以看到它可能會令人討厭嗎? 我有我不想承諾的文件(因爲它們是操作系統特定的),但我不希望它們在我的所有分支中。 我從來沒有用過存儲過,但從朋友告訴我這似乎不是理想的解決方案,似乎有點哈克,但我感謝你的建議,但我會(無論如何,我會放棄它)。 – freshquiz

+0

在閱讀您鏈接的帖子的答案後,您可以看到克里斯托弗似乎正在思考與我藏起來相同的思路。 我認爲這應該是Git的功能請求的標題。 我在想爲什麼你不想被忽略的文件消失/重新出現與結帳的原因,我真的想不出任何。 – freshquiz

+0

@freshquiz我知道這可能有點煩人。你不用'藏匿',你總是可以使用'commit'。請注意,您的'commit'只會更新您的本地克隆,並且以後您可以隨時返回分支時始終撤銷提交。另外,不要擔心沒有找到以前的問題。搜索並不總是完美的。 :) –

1

foo.txt沒有出現在branchA中,它只是不再被忽略,因爲當您檢出branchA時,對.gitignore的更改(我認爲您將這些更改提交給branchB)會丟失。 foo.txt只是一個未跟蹤的文件。當你切換到branchA時foo.txt「消失」是說你想從你的工作目錄中刪除該文件。這與忽略文件非常不同。

無論您使用$ GIT_DIR/info/exclude文件檢出哪個分支,都可以指定影響整個存儲庫的忽略模式。儘管這對你的版本庫是本地的,所以忽略在這個文件中指定的模式不會被傳播到其他版本庫。見gitignore(5)。