2010-10-06 48 views
37

簡而言之:使用Intellij Idea(9)和Git的最佳實踐是什麼?與Intellij Idea一起使用Git的最佳實踐

語境

我們最近升級到了主意9,並已開始使用Git的對現有項目的新功能。

我們在很大程度上使用git命令行來更好地學習該工具。但我們認爲我們會選擇蜂巢式的頭腦來找出git與想法的最佳實踐。

Idea UI對於CVS和Git都很相似,但底層實現有點不同。

問題示例

例如: - 隨着CVS,當我們有一個產品的多個版本中,我們每個人都將有1-0的本地副本,2-0,3-0等分支機構,每個分支機構都有自己的Intellij文件(即.ipr,.iws等)。 「git方式」似乎有一個項目,並使用「git分支」來切換分支。這很好,但是當您更改分支時,它會爲想法帶來巨大的開銷(因爲它必須重新加載每個更改的文件,包括簽入的jar)。所以:你還有一個單獨的項目(與.git)爲每個「主要版本」或有一個項目,並使用「Git分支」?

- 使用Autostash是一個好主意嗎?

- 您是否自動將每個修改添加到您的git commit?或者稍後使用「git add」?

- 你有沒有變身?

最佳合併方式?

- 任何其他提示/技巧/什麼工作爲你等。

最終意見

我們仍然「認爲,在便利店」所以,這部分已經習慣了Git的;部分已經習慣了Idea的Ui for git。

這些都是相當基本的問題,因爲我們仍然主要使用命令行。此外,我聽說過的想法10具有更好的/強/快git的整合工具

感謝

+3

我想要的一個功能是intellij的緩存系統文件夾取決於源代碼的散列(就像git本身實現)。這種方式可以在切換很多不同的分支之後快速地重新分配緩存閃存......現在,這是一種痛苦。 – ripper234 2011-06-27 13:26:06

回答

15

下面是我們幾個星期的Git /理念後發現。我已經將此作爲社區維基。請投入您的2克朗/釐米/芬尼/美分。

注:我回答我自己的問題,因爲我尋求那些易於使用的項目符號。

預設

想法是偉大的工具。這裏沒有人抱怨。只是觀察。

最佳實踐

  • 此時(9.0.3)GIT中與思想,只是普通難度比SVN使用具有思想。部分原因是Git(vs SVN)的複雜性,部分原因是Idea的工具並沒有在git世界中做所有事情。

  • 因此,你將需要使用命令行

  • 理念的合併工具的工作比命令行合併,甚至使用合併工具(MELD使用或合併工具)更好。原因是:你在'想法環境'中有更多的自由主義精神,而不是每次都要固定一個皮毛。

  • 記得理念(CTRL-ALT-Y)進行同步,當你在命令行

  • 看着Git的控制檯來學習理念的git的招數更新工作樹;想法執行Git命令有(版本控制視圖,控制檯選項卡):

例如:

13:30:58.234: git log -M --follow --name-only --pretty=format:%H%x00%ct%x00%an%x20%x3C%ae%x3E%x00%cn%x20%x3C%ce%x3E%x00%s%n%n%b%x00 --encoding=UTF-8 -- src/jsp/workspaces/include/edit.jsp 
13:31:02.437: cd J:\projects\PE-GIT\pe 
13:31:02.437: git annotate -p -l -t -M HEAD -- src/jsp/workspaces/include/edit.jsp 
  • 不幸的是理念並沒有在9.0「上游提交合並衝突」的好工具0.3

實施例:

  • 愛麗絲做工作,承諾(本地) 文件A,提交文件B,提交文件 Ç
  • 鮑勃做工作,提交文件C,提交文件d,提交文件ē
  • 愛麗絲推她改變
  • 鮑勃拉他的變化

來自CVS/SVN,我期望想法手動差異工具彈出。不是,git/idea會拋出紅旗,我通常最終會使用「git mergetool」(linux上的meld od,windows上的tortoiesmerge)。

注意:Idea可能提供更好的方法。請給我直線。 注意動機:你可以設置.gitconfig來使用Idea的差異化工具嗎?

積攢

  • 點子 「擱置」 功能重複 「的Git藏匿」。兩者似乎相似。兩者都使用補丁。你可能想要使用其中一個。我還沒有想出的優勢,一方或另一方

大舊項目

  • 如果你的工作最近遷移到Git的一個十年的老項目,jar文件簽入單片機(即先前檢查到CVS/SVN,其中的log4j-1.0.jar是分支-2-0和主線有log4j的-9.0.jar),請謹慎如果要籤「2.0版」的你的項目。想法需要卸載所有的「頭部」罐子,並重新加載罐子檢查在2.0。這需要永遠。

其他小東西

  • 的想法菜單/ UI仍然顯示 「混帳初始化......」 即使你已經初始化的Git。這很混亂,但忽略它。

  • 你不能在這兩個Git和CVS/SVN同一工作樹(雖然UI似乎暗示着如此)。我/我們在最初的「讓我們嘗試git並仍然使用CVS作爲備份計劃」階段嘗試了這一點。它沒有工作

+0

我回到了在新的工作環境中使用Intellij和Git,並且正在研究Intellij如何處理隱藏。使用Shelve時,我經常寄存一個或兩個有調試更改的文件,但在Intellij中使用Stash唯一的選擇是隱藏所有更改。 – 2014-08-19 20:52:11

4

首先,你可以瞭解混帳的免費在線參考書很多信息:

注意:Git「良好實踐」和工作流程完全獨立於您使用的IDE。幸運的是,IDEA是一個很棒的IDE,大部分Git有用的功能都已經實現了(rebase,stash等)

關於你的git-flow問題,你在考慮使用集中式VCS。

Git是分佈式版本控制系統。所以,你必須「認爲本地第一」。

對於提交,如果您立即或以後將每個文件添加到索引,並且頻繁提交,則無關緊要。這是你當地的工作,你可以根據自己的喜好進行組織。

什麼是重要的是要有乾淨的承諾,當你正在你的工作(暴露給其他開發人員)。

當您即將推送時,您可以更正自上次推送以來的所有歷史記錄(例如使用rebase)。

例如(如果你忘了修改以前提交): - 承諾「的超級函數」 - 承諾「oups:忘了一個文件」 - 犯「錯誤修正」

推論題之前3提交,您可以使用交互式底圖與IDEA融合這些提交。所以最後2次提交將包含在第一個中。

注意:您可以在未推送的情況下修改歷史記錄。在你仍然可以之後,但這是一個非常糟糕的主意(如果你不強制Git,下一步將被拒絕),因爲它可能會破壞你的同事的歷史(如果他們已經取得/合併你的工作)。

關於共同Git的工作流程,我建議您這樣的好文章:http://nvie.com/posts/a-successful-git-branching-model/

+0

感謝您的稱重。您的意見通常有幫助,分支文章信息。 – user331465 2010-10-07 16:19:12

+5

感謝您的稱重。您的意見通常有幫助,分支文章提供信息。 這就是說,我的問題非常具體地涉及到「使用git和Idea」,而不是「我該如何使用git?」。 我特別尋求關於使用Idea UI-for-git與從命令行使用git的務實觀點,即「技巧與技巧,危險與陷阱」,「最適合你的東西」,「根據你的需要避免什麼體驗「等。 再次感謝您提供的見解。 – user331465 2010-10-07 16:26:03