タグ付けされた質問 「git」

GitはオープンソースのDVCS(分散バージョン管理システム)です

4
Gitコミュニティがサイドバイサイドの差分を無視するように見えるのはなぜですか[非公開]
以前は、Windows、SVN、Tortoise SVN、およびBeyond Compareを使用していました。コードレビューを行うのに最適な組み合わせでした。 現在、OSXとGitを使用しています。私は、bashスクリプトとGitxおよびDiffMergeを組み合わせて、やっと受け入れられるソリューションを思いつくことができました。 1年以上、このセットアップと同様のセットアップをいじっていました。また、Github diffビューアとGitx diffビューアを使用してみたので、チャンスを与えていないわけではありません。 Gitで素晴らしいことをしている賢い人がたくさんいます。ファイル全体を表示するオプションを使用して、横並びの差分を表示しないのはなぜですか?両方を使用したことがある人にとっては、少なくとも簡単な確認以上に、単一の+/-ビューの方が好きな人はいません。
33 git 

4
GITを使用してプロジェクトで作業している複数の人を管理する
私はGIT / GitHubを初めて使用します(昨日から新しいように)。Githubで同じプロジェクトに取り組んでいる複数の人々を管理するための最良の方法は何かを知りたいです。現在、私は4人の開発者で1つのプロジェクトを管理しています。 ワークフローを実行して、すべてが同期していることを確認するにはどうすればよいですか? (注:すべての開発者は1つのユニバーサルアカウントを持ちます。) 各開発者は異なるブランチにいる必要がありますか? 同じファイルで作業している2人を処理できますか? 詳細な回答を投稿してください。私は恥ずかしがり屋ではありません。これをよく理解する必要があります。
32 git  github 

5
私は、mercurialの分岐に混乱しているgitユーザーです。小さな変化をどのように追跡するのですか?
以前はgitを使用していましたが、Pythonに貢献したいので、今では水銀を学ぶ必要があり、非常にイライラします。 そこで、私はいくつかの小さなパッチを作成し、それらをローカルのMercurialリポジトリでコミットとして追跡したいと考えました。どうやら水銀の分岐を処理する4つの方法があります。1と4は完全にばかげているように見え、名前付きブランチはヘビーウェイトのようで、1コミットの迅速な修正のためにそれらを使用することになっていないので、ブックマークを使用しました。 今、私のパッチは拒否され、ブックマークブランチの1つをリポジトリから削除したいと思います。OK、gitではブランチを強制削除して忘れてしまうので、ブックマークを削除すると次の問題が発生します。 TortoiseHGは、hg logコミットとdefaultブランチに2つのヘッドがあることを示しています。そして、私が正しく理解していれば、追加のプラグインなしでhgのコミットを削除することはできません。 Mercurialにはハッシュだけでなく、リビジョン番号もあります。いくつかのコミットを追加したので、それ以降にプルされたすべてのコミットには、メインの中央リポジトリとは異なるリビジョン番号が付けられています。 ブックマークをhg update引っ張ってmaster最新のコミットに自動的に移動した後、実行しますが、TortoiseHGでそれを行う方法が見つかりませんでした。 何が間違っていますか?これは正常で予想されるもので、これらの問題を無視する必要がありますか?または、ブランチでどのように作業するのですか?

2
Gitを使用する場合、アクティブな開発にmasterブランチを使用することをお勧めしますか?
まず、いくつかの背景として、すべてのプロジェクトチームをgitの使用に移行し、特定のブランチを継続的に統合して監視できるようにリポジトリを編成する方法のガイドラインを策定しています。テストサーバーへの自動展開。現在、開発中の2つのモデルがあります。 最も安定したコードを表すmasterブランチ、最先端のコードの開発ブランチ、およびQAテストの準備ができたコードの統合ブランチでの成功したブランチングに関するnvie.comの記事の影響を大きく受けています。 マスターブランチが最先端の開発コード、QAテストの準備ができているコードの統合ブランチ、および展開の準備ができている安定したコードの本番ブランチを表す代替モデル。 この時点で、masterブランチが何を表すかに関しては部分的にはセマンティクスの問題ですが、masterブランチで積極的な開発を行っているのは実際には良い習慣ですか、それとも実際にはそれほど関係ないのでしょうか?
32 git  branching 

13
GITにジャンプする前にSVNを理解する必要がありますか?[閉まっている]
私は、自分自身を含めて誰もソース管理を使用したことがない部署で働いています。 私はコンセプトをプッシュしようとしています。SVNの調査に少し時間を費やしました。いくつかの基本を学びました。コマンドラインおよびTortoiseから作成/更新/チェックアウト/コミットできます。私はタグ付けと分岐の方法を学び始めていますが、それでも分岐とトランクなどの間の競合については多くの混乱を覚えています。書籍/チュートリアルと試行錯誤からのすべて。 私がオンラインで読んだgitことから、知るほうが良いように思えますが、より複雑です。自分を圧倒したくありません。gitに移動する前にsvnをマスターし続ける必要がありますか、それともgitにジャンプする方が賢明でしょうか? 両方のアプローチに賛否両論はありますか?
31 svn  git 

4
コミットにバージョンタグを付けないのはいつですか?
コンテキスト:最近、セマンティックバージョニングについて知り、自分のプロジェクトで実際にそれを最適に使用する方法を決定しようとしています。 semverがバージョニングのために大きな変更、小さな変更、およびパッチを考慮に入れていることを考えると、いつコミットに更新されたバージョンのタグを付けるべきではないでしょうか?すべての変更がこれらのカテゴリのいずれかに収まるように思えるので、すべての変更をバージョン管理する必要がありますが、GitHubで人気のあるさまざまなプロジェクトを見ると、これは物事が行われる方法ではないようです(大規模なプロジェクトには数万件のコミットがあり、タグは数百件しかありません)。

3
ホットフィックスの処理中の複数のアクティブなリリースに対する適切なGitワークフロー
私の製品に最適なGitワークフローを選択しようとしています。パラメーターは次のとおりです。 年に数回のメジャーリリースを行っています。 製品の複数のバージョンが同時にアクティブになっています(v10.1、v11.2など)。 同時に複数のリリースで作業できるようにする必要があります(v12.1で作業できるようになりましたが、リリースの終わりに達すると、v12.2で作業を開始します) 重大なバグが見つかった場合、リリースを修正できる必要があります これまでのところ、ここで私はそれがうまくいくと思う方法です: 単一のリモートリポジトリが使用されます マスターからブランチ12.1を作成します 12.1に基づいて機能ブランチを作成し、コミットして12.1にマージしてプッシュ 将来のリリースで作業を開始する必要がある場合は、12.1に基づいて新しいブランチ12.2を作成します その後、12.1の機能で作業する場合、12.1からブランチを作成し、変更をコミットし、12.1と12.2の両方にマージします 12.2の機能で作業している場合、12.2からブランチを作成し、変更をコミットし、12.2にのみマージします リリース12.1が完了したら、それをマスターにマージし、12.1でマスターブランチにタグ付けします 修正プログラムが必要な場合は、それを必要とする最も古いリリースブランチから修正プログラムブランチを作成し、変更をコミットし、そのリリースと影響を受ける可能性がある将来のリリースのすべてのリリースブランチにマージします。最新の安定版リリースブランチが影響を受けた場合は、マスターにマージします。 私はいくつかの懸念があります: 特に多くの重複する変更があった場合、古いブランチから新しいブランチへのホットフィックスのマージがスムーズなプロセスになるかどうかはわかりません。競合があるように見える場合は、各ブランチで手動で修正プログラムを適用する方が賢明でしょうか 私が見たワークフローモデルは、リリースブランチがあまり生き残っていないようです。いったんリリースがマスターにマージされ、タグが付けられ、削除されます。私の問題は、マスターのタグがすべてある場合、リリースの状態を管理する方法がわからないことです。ブランチで修正する方が簡単なようで、いつでも戻ることができるリリースがあります最新の修正プログラムが含まれています(リリースの修正プログラムにタグを付けることもできます)。マスター内に戻って、修正プログラムが適用されたリリースのコピーを適用し、そのタグを更新する方法があるかどうかはわかりません。 私が見落としているかもしれないことや、私が指定した要件を考慮して物事を達成するより良い方法についてのコメントを歓迎します。

3
複数のサブプロジェクトでプロジェクトを分離する場合
私が取り組んでいるプロジェクトを1つではなく2つのリポジトリに分割することが理にかなっているかどうかを知りたいです。 私が言えることから: フロントエンドはhtml + jsで記述されます .netのバックエンド バックエンドはフロントエンドに依存せず、フロントエンドはバックエンドに依存しません フロントエンドは、バックエンドに実装された安らかなAPIを使用します。 フロントエンドは、任意の静的httpサーバーでホストできます。 現在、リポジトリは次の構造を持っています。 ルート: フロントエンド/* バックエンド/ * 両方のプロジェクトを同じリポジトリに保持するのは間違いだと思います。両方のプロジェクトは相互に依存関係を持たないため、個々のリポジトリと、必要に応じてサブモジュールを持つ親リポジトリに属する​​必要があります。 私はそれは無意味であり、それを行うことで利益を得ることはないと言われました。 私の議論のいくつかを以下に示します。 相互に依存しない2つのモジュールがあります。 長期的に両方のプロジェクトのソース履歴があると事態が複雑になる可能性があります(探しているバグとはまったく関係のないコミットの半分がある間にフロントエンドで何かを探してみてください) 競合とマージ(これは起こらないはずですが、誰かがバックエンドにプッシュすると、他の開発者がバックエンドの変更をプルしてフロントエンドの変更をプッシュすることになります。) 1人の開発者はバックエンドでのみ作業するかもしれませんが、常にフロントエンドを引っ張る必要があります。 長い目で見れば、いつ配備するのか。何らかの方法で、フロントエンドを複数の静的サーバーにデプロイし、バックエンドサーバーを1つ持つことができます。いずれの場合も、バックエンド全体を複製するか、すべてのサーバーにフロントエンドのみをプッシュするか、バックエンドを削除するカスタムスクリプトを作成する必要があります。1つだけが必要な場合は、両方よりもフロントエンドまたはバックエンドのみをプッシュ/プルする方が簡単です。 反論(1人が両方のプロジェクトで作業する可能性があります)、サブモジュールで3番目のレポを作成し、それで開発します。履歴は個々のモジュールに分けられており、バックエンド/フロントエンドのバージョンが同期して実際に連携するタグをいつでも作成できます。フロントエンドとバックエンドの両方を1つのリポジトリにまとめても、それらが連携して機能するわけではありません。両方の履歴を1つの大きなレポにマージしているだけです。 サブモジュールとしてフロントエンド/バックエンドを使用すると、プロジェクトにフリーランサーを追加する場合に物事が簡単になります。場合によっては、コードベースへの完全なアクセス権を実際に与えたくないことがあります。「外部者」が表示/編集できるものを制限したい場合、1つの大きなモジュールがあると事態が難しくなります。 バグの紹介とバグの修正のために、フロントエンドに新しいバグを挿入しました。その後、誰かがバックエンドのバグを修正します。1つのリポジトリで、新しいバグの前にロールバックすると、バックエンドもロールバックされ、修正が困難になる可能性があります。フロントエンドのバグを修正しながらバックエンドを動作させるには、別のフォルダにバックエンドをクローンする必要があります...その後、物事を再マージしようとします... 1つのリポジトリのHEADを移動するので、2つのリポジトリを作成するのは簡単です他を変更しないでください。また、異なるバージョンのバックエンドに対するテストは簡単です。 誰かが私を説得するためにもっと議論をすることができますか、少なくともプロジェクトを2つのサブモジュールに分けるのが無意味な(より複雑な)理由を教えてください。プロジェクトは新しく、コードベースは数日前のものなので、修正するのに早すぎません。

2
Git Flowのようなマージ戦略は本当にアンチパターンですか?
私の会社はGitを使用しており、独特の分岐スキームを使用しています-作業はマスターで行われ、分岐はリリース用に予約されています。これは、反復で行われたすべての作業がブランチに行われる限り正常に機能しますが、重大な生産上の問題が発生した場合、作業が何らかの方法で両方のブランチに行われるようにする必要があります。 最近、私たちはそれらのブランチで「楽しい」ことをしてきました。これは管理上の頭痛の種であり、すべての作業がすべてのブランチに反映され、1つのブランチで修正された一部のバグは、誰かが指摘するまでマスターになりません。 しばらく前にGit Flowに出会いましたが、それが私たちの問題の解決策だと感じています-コードがリリースまで浸透していないか、ずっと下に浸透していません。唯一の問題は、私のリードがこの種の開発はアンチパターンであると述べていることです。つまり、2週間にわたって猛烈に開発し、マージの競合を解決するために3を費やしました。 同意するかどうかは定かではありませんが、それを育ててから、仕事は通常のように再開しました。ごく最近になって、これに関していくつかの大きな問題がありました。 私は知りたい-なぜこの種の開発スキームはアンチパターンと見なされるのですか? で、それは本当にアンチパターン?

3
書き換えのバージョン管理の実践
製品(プロトタイプ)P_OLDを言語Xで開発し、現在は言語YでP_NEWとして最初から書き直しています。 P_NEWとP_OLDは同じ製品であるため: P_NEWは古いP_OLDのブランチである必要がありますか、それとも独自のリポジトリである必要がありますか? バージョン管理の観点からこのような大きな変更を処理する通常の方法は何ですか?

6
SVNマージの難しさは何ですか?
可能性のある重複: 私はSubversionオタクですが、なぜMercurial、Git、またはその他のDVCSを検討する必要があるのですか? 時々、誰かが分散バージョン管理(Git、HG)は集中管理(SVNなど)よりも優れていると言うのを耳にします。SVNではマージが困難で苦痛だからです。実は、SVNでのマージに問題はなかったし、実際のSVNユーザーによるものではなく、DVCS支持者による主張だけを聞いたことがあるので、TVでの不快なコマーシャルを思い出す傾向があるあなたがすでに持っていてうまく動作するものは使用するのが信じられないほど難しいとふりをすることによって、あなたが必要のないものをあなたに売ろうとします。 そして、常に発生するユースケースはブランチを再マージすることです。これは、これらのストローマン製品の広告を思い出させます。自分が何をしているのかわかっているなら、そもそもブランチを再マージするべきではありません(また、その必要はありません)。(もちろん、根本的に間違っていて愚かなことをしているときは難しいです!) だから、ばかげたストローマンのユースケースを割り引いて、DVCSシステムでのマージよりも本質的に難しいSVNマージには何がありますか?
28 git  svn  mercurial  dvcs  merging 


6
バージョン履歴は本当に神聖なものですか、それともリベースする方が良いのでしょうか?
私はMercurialのマントラ1に常に同意していましたが、Mercurialがリベース拡張機能にバンドルされ、gitで一般的なプラクティスであるため、本当に「悪いプラクティス」と見なされるかどうかは疑問です。使用を避けるのに十分なほど悪い。いずれにせよ、プッシュ後のリベースが危険であることは承知しています。 OTOH、私は5つのコミットを1つにパッケージ化して見栄えを良くすることを目指しています(特に本番ブランチで)が、個人的にはいくつかの機能の一部のコミットを見ることができる方が良いと思いますたとえ気の利いたものでなくても、実験は行われますが、「Xでやってみましたが、結局Yほど最適ではありません。ZをベースとしてZを行う」のようなものを見ると、勉強している人にとっては価値がありますコードベースを作成し、開発者の一連の思考に従ってください。 私の非常に意見のある(馬鹿げた、内臓、偏った)視点は、プログラマーがミスを隠すためにリベースを好むということです... ですから、私の質問は次のとおりです。実際にそのような「有機コミット」(つまり、改ざんされていない履歴)を実際に使用する価値があると思いましたか?どちらを選んでも、なぜそれがあなたのために働くのですか?(履歴を保持するために他のチームメンバーを使用するか、代わりに履歴を変更します) 1あたりGoogleのDVCS分析は、のMercurialに「歴史は聖なるです」。
26 git  mercurial  dvcs 

11
分散型バージョン管理システムのビジネスケース
git / mercurial / bazzrシステムが集中システム(subversion、perforce)よりも優れている理由を検索しましたが、ビジネス上の理由は見つかりませんでした。 DVCSを非技術者に販売しようとした場合、DVCS が利益を上げるためにどのような議論を提供しますか。 私はまもなくマネージャーにgitを売り込みます。subversionリポジトリーの変換には少し時間がかかり、smartgitライセンスの購入にはいくらかの費用がかかります。 編集私はこの質問を集中型と分散型の一般的な議論にしようとしましたが、必然的にgit vs subversionに変わりました。確かに、転覆よりも優れた集中システムがあります。

6
新しいプロジェクトのマスターへのコミットをいつ停止する必要がありますか?
新しいプロジェクトを開始するときはいつでも、「安定した」何かを得るまでマスターに直接コミットすることから始めて、ブランチで作業を開始するのが通常理にかなっています。 少なくとも、これは私が通常行う方法です。2番目のコミットからすぐにブランチを開始する方法はありますか?このようにするのは理にかなっていますか?明らかに、「初期コミット」は常にマスターになりますが、その後、いつ新しい機能のブランチを作成するのが適切なタイミングであるかがわかりますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.