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

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

5
どのバージョン管理システムがすべての側面を管理できますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 5年前に閉鎖されました。 数ヶ月前、私はSubversionとGITを掘り下げましたが、がっかりしました。ソースコードは正常に処理されますが、他の側面は処理されません。たとえば、バージョン管理下のWebサイトでは、ファイル/ディレクトリの所有権、ファイル/ディレクトリの読み取り/書き込みアクセス、アクセス制御リスト、タイムスタンプ、データベースコンテンツを管理する必要があります。および外部リンク。1か月前のバックアップからリロードするのと同じくらい完璧な復帰を実行できるバージョン管理システムはありますか?

3
マージした変更をすぐにコミットしないのはなぜですか?
私のオフィスでは、バージョン管理にGitとSourceTreeを使用しています。これは、私が参加したときにバージョン管理がゼロであり、SourceTreeしか使用したことがなかったためです。私は決して専門家ではありませんが、同僚の中で最も経験豊富なので、Gitを適切に使用し、間違いを修正するように全員に教える責任がある事実上の専門家です。 GitとSourceTreeを経て、プロセスのすべてのステップを説明するチュートリアルドキュメントを作成しています。プルプロセスでは、SourceTreeダイアログで[マージされた変更をすぐにコミットする]オプションを選択できます。私はこれが何をするのか、なぜそれが役立つのかを理解しています。私が理解していないのは、なぜこの機能を使用したくないのかということです。 マージした変更を自動的にコミットしたくない理由を誰かが説明できますか?私はこの機能の有用性をよりよく説明し、将来どのような落とし穴に注意すべきかを理解できるように、理由を理解しようとしています。 編集:私の質問がリンクされた質問の複製だとは思わない。リンクされた質問は広くコミットする頻度を尋ねています。SourceTreeでのマージのコミットに関連する特定の機能を使用しないことを選択する理由について質問しています。

4
生産ブランチを持っているか、マスターを使用していますか?
私は、Railsアプリケーションに関して他のリモート開発者と小さなチームで仕事をしています。gitワークフローの変更を開始しています。以下のような分岐構造について考えました。 (dev) -> (qa) -> (stag) -> (master) しかし、一部の開発者は、masterで自動的に本番環境にプッシュする可能性のある新しい開発者にとって混乱が少ないと考えています。代わりに、全員がマスターで作業し、本番用に別のブランチを作成すると考えました。 (master) -> (qa) -> (stag) -> (prod) マスターを展開可能な状態に保ち、開発として使用したくないことを教えられました。また、私がマスターをしていた以前の場所からは、常に本番環境に展開できるようになっています。 マスターが開発に積極的に使用され、別のprodブランチがデプロイメントに使用されるブランチ構造を使用する場合の欠点は何ですか?
16 git 

4
ワークフロー:ロックなしでGitでバイナリドキュメント形式を使用する(subversionから移動)
私たちは、さまざまな顧客向けの多数のプロジェクトを持つソフトウェアコンサルタントです。従来はSubversionを使用していましたが、現在Gitへの移行を検討しています。 私たちが作成するドキュメントの大部分はお客様と共有されており(要件、グローバル設計、テスト仕様など)、MS Officeを使用してこれらを作成しています。Subversionでは、「ロック」機能を使用して、同じドキュメントを同時に編集しているユーザーがいないことを確認できます。Gitでは、分散型の性質上、gitにはロックがないため、これを行うことはできません。 ロックは実際には通信メカニズムにすぎませんが、非常に効果的なものです。 現在、私たちのコードと顧客向けのドキュメントは通常、異なるsvnリポジトリの異なるサブフォルダーにあります。gitに移行するときに、私たちが推奨することは何ですか?オプションのセットが表示されます: svnリポジトリをgit 1-on-1に移動します。Officeファイルでロックを使用する代わりに、gitの人々が提案することを行い、何らかの方法でワークフローを変更して修正します。これは、ドキュメント編集のブランチで機能し、オーバーレビューをマージする可能性があります。このアプローチは、プロジェクト管理情報を含むExcelシートなどを分割します。チームメンバーは簡単に編集できますが(これを行うことをお勧めします)、正式なレビュープロセスの対象ではありません コードにはgitを、ドキュメントとプロジェクト管理にはsvnを使用します。これには、よりデザイン性の高い特定のドキュメントが仕様のコードの「近く」にないため、更新を忘れる可能性が高くなるという欠点があります。さらに、誰もが2つのツールセットを使用して理解する必要があります。とはいえ、これはおそらく、顧客と向き合っていない設計ドキュメント用のテキストベースのドキュメントツール(ラテックス、マークダウン、HTMLなど)に移行する絶好の機会です。 1に似git lockていますが、svnロックが行うことを行うコマンドをハックします(読み取り専用フラグを適切に切り替え、何らかの手段でサーバーと同期します)。 DVCSでロックが機能しないという議論は、あなたが完全にオフラインのときでもシステムが機能するはずだからです。SVNロックもオーバーライドできます。それらは通信メカニズムです。なんらかのネットワーク接続がなければ、コンピューターはあまり通信できません。 私svn lockたちのワークフローにどの程度適合しているかに非常に満足しているお店は私たちだけではありませんよね? アイデアやヒントはありますか? /programming/119444/locking-binary-files-using-git-version-control-systemが見つかりましたが、議論はかなり技術的なものです。2人のチームメンバーが同じバイナリファイルを同時に編集するという実際的な問題を解決または回避する方法を探しています。
16 git  svn  dvcs  excel  word 

3
マスターから作業ブランチに変更をプルしますか?
私たち2人が何かに取り組んでいます。このブランチ構造を使用しています 主人 dev-A dev-B 私たちは両方とも別々のブランチ(dev-A、B)で作業し、作業が完了するたびに、変更をマスターにプロモートします。 しかし、これの欠点は、他の開発者が行った変更を取得できないことです。すべてがマスターツリーに存在しますが、他の開発者が行った最新の更新を取得することはできません。 これを解決する方法はありますか、ブランチ構造を変更する必要がありますか(機能ごとに)?
16 git 

3
Git:2つのブランチに影響するバグの修正
私はGitリポジトリを成功したGit分岐モデルに基づいており、この状況になったらどうなるのかと考えていました。 2つの機能ブランチAとBで開発しており、BにはAからのコードが必要であるとします。Xノードは機能AにブランチBに影響するエラーを導入しますが、機能AとBがマージされたノードYでは検出されず、テストは、再び分岐して次の反復に取り組む前に実施されました。 その結果、機能Bで作業している人々がノードZでバグを見つけました。この段階で、バグ修正が必要であると判断されました。この修正は両方の機能に適用する必要があります。これは、機能の一部であるため、機能Aで作業している人々もバグを修正する必要があるためです。 バグ修正ブランチを最新の機能Aノード(ノードYから分岐するノード)から作成し、機能Aとマージする必要がありますか?その後、両方の機能が再び開発にマージされ、分岐する前にテストされますか? この問題は、問題を解決するために両方のブランチをマージする必要があることです。フィーチャーBはフィーチャーAのコードに触れないため、修正を実装し、フィーチャーBブランチをマージせずにフィーチャーAの修正コードを保持することにより、ノードYの履歴を変更する方法はありますか? 軽度の関連:Gitバグの分岐規則
16 git  bug  branching 


2
失敗したテストをどこにプッシュしますか?
GitHubリポジトリのブランチ設定を変更したばかりなので、[次の]ブランチではプルリクエストでCIビルドを渡す必要があります。 テストの失敗について、多くのチームメンバーとの議論が続きました。 コンテキストのために... リポジトリには、リリースがあるときにのみPRされる[master]ブランチがあるため、[master]には、メジャー、マイナー、ホットフィックス、ベータ、アルファ/アルファに関係なく、最後のリリース時点のコードが含まれます。プレリリースビルド。 [次の]ブランチは「デフォルト」ブランチで、「リリース準備完了」コードを保持するつもりです。技術的には、そのブランチはいつでも[マスター]にPRされ、リリースされます。 個々のフォークには独自の開発ブランチがあり、貢献者は[次へ] PRを行います。 自明ではないPRをレビューするとき、貢献者のdevブランチを「レビュー」ブランチにマージし、すぐに修正できるものを見つけたら、変更と新しい(時々失敗する)テストをコミット/プッシュし、PR貢献者の開発ブランチに戻ります。彼らが私の変更をマージするとき、新しい失敗したテストをパスさせてプッシュし、それらのPRが同期します。それからPRを[次へ]にマージします。 しかし、この質問はテストに合格することではなく、失敗するテストに関するものです。 テストに失敗すると、修正する必要があるものが文書化されます。 既知のバグにはテストが記述されている必要があります。これにより、何が機能していないかがわかります。 技術的には、GitHubの問題リスト(バグやクリティカル ラベルに対してフィルター処理されています)も同様です。バグを文書化するために多数の失敗したテストを用意することは良い習慣ですか? [次へ]上の障害のビルドは、私たちがリリースする準備ができていないという意味では...しかし、その後、「リリース用であることは、」ビット子供を持って「準備ができている」のようなものでしょう-あなたは決してならない、非常にこのための準備ができて、何か、どこかで(変数の重要性が)リリースで必然的にうまくいかないでしょう。 したがって、合格したテストを[次へ]にプッシュするだけです。失敗したテストをどこにプッシュしますか?つまり、PR /レビュープロセスの外ですか? たとえば、ユーザーが問題リストに新しいバグを報告し、失敗したテストスイートを作成したい-何をする必要があるか、どこで行うかを指定して、新しい貢献者がピックアップしやすくする最終的にはPRを修正します。 これらの失敗したテストをどこにプッシュすればよいですか?または、失敗したテストをどこかにプッシュすることをお勧めしますか?

3
長時間実行される未リリースコードのGit分岐戦略
私たちのチームでは、個々の作業単位(ストーリー)に加えて、より長時間実行される作業テーマ(叙事詩)があります。複数のストーリーが壮大です。 従来、各ストーリーに機能ブランチがあり、それらがQAに合格したときにそれらを直接マスターにマージしました。ただし、Epicが「機能完了」と見なされるまで、Epicで完了したストーリーのリリースを控えたいと思います。これらの機能は、Epic全体が閉じられたときにのみ本番環境にリリースされます。さらに、ナイトリービルドサーバーがあります-すべての閉じられたストーリー(不完全なEpicsの一部を含む)がこのナイトリーサーバーに自動的にデプロイされるようにします。 これを達成するためのレポの管理方法に関する提案はありますか?「エピックブランチ」を導入することを検討しました。ここでは、クローズドストーリーをマスターに直接ではなく、関連するエピックブランチにマージしますが、私の懸念は次のとおりです。 壮大なブランチを長時間開いたままにしておくと、マージの競合が心配です ナイトリービルドでは、すべてのエピックブランチを「ナイトリービルド」ブランチにマージする必要があります。繰り返しますが、マージの競合が発生する可能性があり、これは自動的に行われます

5
大規模なプルリクエストの処理
現在、gitワークフローを使用しているチームとプロジェクトに取り組んでいます。マスターはデプロイ可能な状態であり、機能とホットフィックスを作成するためにブランチが使用される必要があります。機能またはバグ修正が完了してテストされたら、できるだけ早くマスターに移行します。アイデアは、ブランチをできるだけ小さくして、それらをマスターにマージしやすくすることです。masterブランチにプッシュされたコードはデプロイ可能な状態にして、テストに合格するというポリシーがあります。 開発者の1人が1つのブランチで多くの作業(数か月分)を行っており、このブランチがまだマスターにマージされていない状況があります。現在、このブランチにはいくつかの別個の機能と多数のコミットがあります。本質的に、このブランチは実際には数回ですでにマージされているはずですが、今のところそうではありません。ほとんどのコードは、マスターに戻すことができる単体テストで良好な状態にありますが、最新の変更は、完了しておらずテストされていないため、確かにそうではありません。 あるブランチが他のブランチから本当に遠く離れているような状況に対処する最良の方法は何ですか?将来、ブランチがマスターから非常に多くのコミットを取得するのを避ける方法はありますか?
15 git  workflows 

2
Gitリポジトリの構造
これが重複する場合は申し訳ありませんが、私は見た。 Gitに移行します。Subversionでは、\ trunk、\ branches、および\ tagsフォルダを使用することに慣れています。 Gitを使用すると、ブランチを切り替えると作業ディレクトリの内容が置き換えられるため、以前の作業方法がGitに当てはまらないと仮定するのは正しいでしょうか? 私の推測では、gitignoreとreadme.txtを含むレポフォルダーがあり、それからレポを構成するプロジェクトのフォルダーがあります。

7
未解決の変更をコミットしてみませんか?
従来のVCSでは、ビルドを壊す可能性があるため、未解決のファイルをコミットしない理由を理解できます。ただし、DVCSで未解決のファイルをコミットしない理由を理解できません(実際には、ファイルのコミットを妨げるものもあります)。 代わりに、リポジトリをプッシュおよびプルからロックする必要がありますが、コミットしないでください。 マージプロセス中にコミットできることには、いくつかの利点があります(私が見ているように)。 実際のマージの変更は履歴にあります。 マージが非常に大きい場合は、定期的なコミットを行うことができます。 間違えた場合、(マージ全体をやり直すことなく)ロールバックするのがはるかに簡単になります。 ファイルは、解決済みとしてマークされるまで未解決としてフラグを立てたままにすることができます。これにより、プッシュ/プルが防止されます。 単一の変更セットではなく、変更セットのセットをマージとして機能させることもできます。これにより、などのツールを引き続き使用できますgit rerere。 それでは、なぜ未解決のファイルで眉をひそめたり、予防したりするのですか?伝統以外の理由はありますか?

1
Git / Mercurialリポジトリが使用するスペースが少ないのはなぜですか?
ここでのいくつかの議論と、DVCSリポジトリが中央のカウンターパートとほぼ同じ、またはそれより少ないスペースを使用することについて読んだことがあります。私はそれを見逃したかもしれませんが、私はそれがなぜであるかの良い説明を見つけていません。知ってる?

2
多くの小さなスクリプト、1つのリポジトリ、または複数ですか?
同僚と私は、複数の意見を持っている問題に遭遇しました。 現在、すべてのcronジョブを保持しているgitリポジトリがあります。約20のcronがあり、それらはすべて小さなpythonスクリプトであり、いくつかのアクティビティに不可欠であるという事実を除き、実際には関連していません。すべてのスクリプトの要件fabric.pyを展開するrequirements.txtファイルと管理するファイルを使用しています。 私たちの問題は、基本的に、これらのスクリプトをすべて1つのgitリポジトリに保持するのか、それとも独自のリポジトリに分離する必要があるのか​​、ということです。それらを1つのリポジトリに保持することで、1つのサーバーに簡単に展開できます。すべてのスクリプトに1つのcronファイルを使用できます。 ただし、20個のcronジョブは論理的に関連していないため、これは間違っていると感じています。さらに、requirements.txtすべてのスクリプトに1つのファイルを使用する場合、特定のスクリプトの依存関係を把握するのは困難であり、それらはすべて同じバージョンのパッケージを使用する必要があります。 すべてのスクリプトを独自のリポジトリに分離することもできますが、これにより20の異なるリポジトリが作成され、それらを覚えて処理する必要があります。これらのスクリプトのほとんどはそれほど大きくなく、その解決策は行き過ぎているようです。 関連する質問は、すべてのcronジョブに1つの大きなcrontabファイルを使用しますか、それとも個別のファイルを使用しますか?それぞれが独自のものを持っている場合、あるcrontabのインストールは他の19の上書きをどのように回避しますか?これはまた、20種類のcronファイルを追跡する必要があるため、苦痛のように思えます。 要するに、私たちの主な質問と問題は、それらをすべて1つのリポジトリとして密接にバンドルしたままにするのか、それとも独自のrequirements.txtとfabfile.pyを使用して独自のリポジトリに分けるのですか?私たちは、おそらくいくつかの本当に簡単な解決策も検討しているように感じます。この問題に対処する簡単な方法はありますか?

2
gitリポジトリが著作権で保護されたメディアを歴史上持っているプロジェクトをオープンソースにする方法は?
無料のライセンスでオーディオフィンガープリントソフトウェアプロジェクトをリリースしたいのですが、リポジトリには著作権で保護されたオーディオファイルが含まれています。現在、テストケースではこれらのファイルも使用しています。最大のバージョン履歴で、著作権を侵害せずにコードを公開するにはどうすればよいですか? 詳細: コードはgitでバージョン管理されています。リリース前にすべてを1つのブランチに戻します。 400 MBのオーディオデータがあります。一部のファイルは、たとえばJamendoの無料ライセンス音楽であり、その他のファイルは私たちの個人コレクションのMP3です。 どのようなアプローチをとっても、プロジェクトの履歴を破壊しないように、常に元のリポジトリの不変のコピーを保持します。 主な質問:パブリックリリースの処理方法 問題のファイルのすべての履歴をgitリポジトリから消去し、変更されたリポジトリをリリースします。(v64 はこれを行う方法を指摘しました。) または、コードの現在の状態のスナップショットを取得し、プレリリースコードの公開履歴を気にすることさえしません。 副次的な質問:プロジェクトの初期段階でプライベートコードまたはメディアが必要になる場合があるので、そもそもこのジレンマをどのように回避できたでしょうか?

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