簡単に言うと、Intellij Idea(9)とGitを使用するためのベストプラクティスは何ですか?
コンテキスト
最近Intellij ideaバージョン9にアップグレードし、既存のプロジェクトの新機能にGitの使用を開始しました。
ツールをよりよく学習するために、主にgitコマンドラインを使用します。しかし、私たちはHive-mindを選んで、git with ideaのベストプラクティスを見つけようと考えました。
Idea UIはCVSとGitの両方で似ていますが、基礎となる実装は少し異なります。
質問例
例:-CVSでは、製品のリリースが複数あった場合、各自が1-0、2-0、3-0などのブランチのローカルコピーを持ち、それぞれが独自のIntellijファイル(つまり、 .ipr、.iwsなど)。 「git way」には1つのプロジェクトがあり、「git branch」を使用してブランチを切り替えているようです。これは問題ありませんが、ブランチを変更するときに、(チェックインされたjarを含む変更された各ファイルをリロードする必要があるため)アイデアに大きなオーバーヘッドが発生します。だから、あなたはまだ「メジャーリリース」ごとに別個のプロジェクト(.git)を持っていますか、それとも1つのプロジェクトを持って「gitブランチ」を使用していますか?
-Autostashを使用することをお勧めしますか?
-git commitに各変更を自動的に追加しますか?または後で「git add」を使用しますか?
-リベースしますか?
-マージする最良の方法は?
-その他のヒント/ヒント/ what-works-for-youなど.
最終コメント
まだ「cvsで考える」ので、これの一部はgitに慣れています。一部は、GitのIdeaのUiに慣れています。
これらは主にコマンドラインを使用しているため、かなり初歩的な質問です。また、私は10がより良い/より強い/より速いgit統合ツールのアイデアを聞いた
ありがとう
数週間のGit/Ideaの後に見つかったものを以下に示します。これをコミュニティWikiにしました。 2クローネ/ centimos/pfennings/centsを投入してください。
注:これらの使いやすい箇条書きを探したので、私は自分の質問に答えています。
前提条件
アイデアは素晴らしいツールです。ここの誰も不満を言っていません。ただ観察しています。
ベストプラクティス
この時点(9.0.3)では、Git with IdeaはIdeaを使用したSVNよりも使用するのが単純に困難です。一部はGitの複雑さ(vs SVN)に由来します。これは、Ideaのツールがgitの世界ですべてを行うわけではないからです。
したがって、コマンドラインを使用する必要があります
Ideaのマージツールは、コマンドラインマージやmergetool(meldまたはmergetoolを使用)を使用するよりもmuchより優れています。理由:一度に1つのリントを修正するのではなく、「アイデア環境」で作業するはるかに多くの自由があります。
コマンドラインから作業ツリーを更新するときは、Idea(ctrl-alt-y)で同期することを忘れないでください
Gitコンソールを見て、アイデアのgitトリックを学びます。 ideaはそこで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
例:
CVS/SVNから来て、Ideasの便利な差分ツールがポップアップすることを期待していました。いいえ。代わりにgit/ideaが赤い旗を投げ、私は通常「git mergetool」を使用することになります(meld od、Windowsではtortoiesmerge)。
注:おそらくIdeaはより良い方法を提供します。まっすぐにしてください。やる気に注意してください:.gitconfigをセットアップして、Ideaの差分ツールを使用できますか?
スタッシング
Big Old Projects
その他の小さなもの
Gitを既に初期化した場合でも、アイデアメニュー/ UIには「git init ...」が表示されます。紛らわしいですが、無視してください。
GitとCVS/SVNの両方で同じ作業ツリーを使用することはできません(UIはそのように見えるかもしれませんが)。私は、最初の「gitを試して、CVSをバックアップ計画として使用します」フェーズでこれを試しました。うまくいきませんでした
まず、無料のオンラインリファレンスブックでgitに関する多くの情報を確認できます。
注:Gitの「グッドプラクティス」とワークフローは、使用するIDEから完全に独立しています。幸いなことに、IDEAは優れたIDEであり、ほとんどのGitの便利な機能が適切に実装されています(リベース、スタッシュなど)
Git-flowの質問については、集中型VCSのように考えています。
GitはDistributedバージョン管理システムです。そのため、「最初にローカルを考える」必要があります。
コミットの場合、頻繁にコミットするかどうかに関係なく、各ファイルをすぐにインデックスに追加しても、後でインデックスを追加しても、実際には問題になりません。それはあなたの地元の仕事であり、好きなように整理することができます。
重要なのは、作業をPushしようとしているときにクリーンコミットすることです(他の開発者に公開します)。
プッシュしようとしているときは、最後のプッシュ以降のすべての履歴を修正できます(たとえば、リベースを使用)。
例えば(amend以前のコミットを忘れた場合):-コミット "スーパー関数"-コミット "oups:ファイルを忘れた"-コミット "バグ補正"
これらの3つのコミットをプッシュする前に、IDEAでinteractive rebaseを使用して、これらのコミットを融合できます。したがって、最後の2つのコミットは最初のコミットに含まれます。
注:プッシュしていない間に履歴を変更できます。それでもできるが、それは非常に悪い考えです(そして、Gitを強制しない場合、次のプッシュは拒否されます)。同僚の履歴を破壊する可能性があるためです(作業を取得/マージした場合)。
一般的なGitの作業フローについて、この良い記事をお勧めします。 http://nvie.com/posts/a-successful-git-branching-model/