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

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

4
大規模な金融/保険会社がgitやgithubを使用する理由
私は、金融/保険業界の大企業(従業員3万人)で働いています。「IT」は主な焦点ではありませんが、正直に言って、これらは情報主導型の産業であり、技術的優位性のある企業はより早く前進しているようです。 私の会社には多くのソフトウェア開発チームがいます。言語やフレームワークはもちろん、バージョン管理機能を備えたマップ上にあります。何も使用しない(知っている)、PVCSを使用するもの、VSSを使用するもの、SVNを使用するものがあります。 gitを企業に持ち込みたい。具体的には、GitHub(プライベートリポジトリ)を持ち込みます。これについて話すのにふさわしい人は知っていますが、正直言って、このような抜本的な動きは、あいまいなセキュリティの懸念や競合他社がそれを使用していないという事実のために、大企業の環境で通常撃ち落とされます参照としてjQuery、Ruby on Rails、Facebookなどのみを引用してください)。 私の質問はこれです。大企業がPVCS / VSS / SVNからGitHub(プライベートリポジトリ)などのホストされたgitソリューションにゆっくりと慎重に切り替える必要がある理由の最も説得力のある理由は何ですか。もちろん、私の計画の一部には、必須ではない開発プロジェクトのPOCが含まれます。

2
プルリクエストを開始するか、マスターでローカルマージコミットを実行する方が良いですか?
私はGitHubをかなり長い間使用しており、通常は機能ブランチをプッシュしてから、自分でマージしたプルリクエストを開始していました。ブランチをマージした場所を追跡するのに役立つことがわかりました。 しかし最近、Gitの仕組みについてますます読んでおり、マージコミットを使用してブランチをマージするときに参照できることに気付きました。 マスターに機能ブランチをマージするときだから、私は何をすべき: 実行し、マージコミットマスターにして、それが上流押しORローカルブランチを押して、プルリクエストを開始しますか? 2人のチームのプルリクエストの紹介を読みました-自分のリクエストをマージしますか?そしていただきましたプロジェクトの2人との作業の流れと公式レポや私のフォーク上の枝から万一Iオープンプル要求?しかし、彼らは誰も私が探しているものに答えていないようです。

2
複数のチームのGitワークフロー
Gitの使用を開始し(まだ使用していない)、ワークフローを定義します。 4つの異なるグローバルロケーションに4つのチームがあり、同じ製品を一緒に開発しています。各チームは製品のコードの一部を所有していますが、他のチームが所有するコードを変更する必要がある場合もあります。 そのような環境のGitワークフローに推奨事項はありますか? 私はすでにこの記事を見てきましたが、ここでのアプローチは「できるだけまれに追加のブランチを作成する」ことであり、「ユーザーストーリーごとのブランチ」アプローチをより重視しています。 また、この記事は素晴らしいアプローチを提示します。 マスターブランチ、定期的にマスターにマージされる各チームごとの永続的なブランチ、およびチームのブランチにマージされるユーザーストーリーごとのブランチを念頭に置いていました。それは理にかなっていますか、それともうまくいきませんか?

2
git rebaseパラメータの理解と記憶
これまでのところ、gitの最も混乱する部分は、別のブランチにリベースすることです。具体的には、混乱を招くのはコマンドライン引数です。 1つのブランチの小さな部分を別のブランチの先端にリベースするたびに、git rebaseのドキュメントを確認する必要があり、3つの主要な引数のそれぞれが何であるかを理解するのに約5〜10分かかります。 git rebase <upstream> <branch> --onto <newbase> 別のブランチへのリベースの種類が与えられた場合、これらの3つのパラメーターのそれぞれが何に設定されるべきかを覚えるのに役立つ良い経験則は何ですか? 私がgit-rebaseのドキュメントを何度も何度も何度も何度も繰り返したが、(退屈な科学的なホワイトペーパーなど)常に理解するのは難しいことを覚えておいてください。そのため、現時点では、他の人を巻き込んで把握する必要があると感じています。 私の目標は、これらの基本的なパラメータのドキュメントを確認する必要がないことです。今のところ、それらを覚えることはできず、すでに大量のリベースを行っています。したがって、これまでに他のすべてのコマンドとそのパラメーターを記憶できたが、でリベースできないことは少し変わっています--onto。
12 git 

5
Gitコミットは終了していませんが、そのマシンで続行できません
時々、コミットの準備ができていないが別のワークステーションまたはラップトップで完了する必要があるワークステーションで、コミットされていないコードを持つという問題に遭遇します。 「ソフトコミット」や、変更を別のマシンに転送して他の場所で動作させる他の方法など、この問題の解決策はありますか? 適切に実装されていない変更をコミットしてプッシュすることを強制されないようにしたいと思います。
11 git 

3
異なるサーバーの異なるコードベースでGitを使用するにはどうすればよいですか?
背景:私は最近会社で一連のプロジェクトを継承しており、それらの処理方法に関するいくつかの基本的な問題を整理しようとしています。つまり、以前の開発者(もはや会社にいない)は、いかなる形式のソース管理も使用せず、ほとんどドキュメントを作成せず、実際には適切な開発プロセスもありませんでした。 そのため、私は3つのサーバーに相当するプロジェクト(開発、ステージング、プロダクション)を手に入れました。これらは、主にWebサイト、アプリケーション、および使用するサードパーティアプリケーションとAPI用に構築されたツールから成り立っています。私が最初に考えたのは、変更と修正が行われる前にこれらすべてをGitに取り込むことでしたが、それを行う最善の方法を見つけるのは困難です。 これまでの多くの開発は、運用サーバーで直接行われたため、各サーバーのコードベースに格差が生じました。すべての違いがどこにあるのかすぐにはわかりません-開発/ステージングに引き継がれないバグ修正と、ステージング/プロダクションに移行していない開発の新機能が見られます。 質問:これらを整理してGitに移動する最良の方法は何でしょうか?コードの違いに対応するためにレポジトリ/ブランチをどのように構成しますか? 実稼働サーバーコードのクローンから開発を継続し、開発/ステージングコードベースを履歴参照として保持することを検討しました。とにかく開発/ステージングコードについて何も知らないことを考えると、これは潜在的に最初のポイントになるでしょうか?各Webサイト、ツール、スクリプトセットなどの本番サーバーのリポジトリを作成し、既存の開発/ステージングコードのブランチを作成するだけで、新しい開発は本番サーバーのコードベースから分岐します。これは理にかなっていますか?

3
ファイルの1つのバージョンをプライベートに保つためのgithub戦略
私は学生のためにコーディングの問題を書く講師です。私がやりたいのは、生徒が完了すべき機能のプレースホルダーを含む定型コードを生徒に与えることです。これを複製するために、学生にプライベートgithubリポジトリへのアクセスを許可します。 ただし、サンプルソリューションを備えたバージョンのコードベースも必要です。明らかに、生徒にソリューションへのアクセス権を与えたくありません(課題が終了するまで)。 私はブランチについて考えましたが、私の知る限り、1つのブランチをプライベートに保つことはできません。 プロジェクトを別のプライベートリポジトリにフォークすることもできますが、プロジェクトをsnycに(ソリューションを含むファイルは別として)保持する方法はわかりません。 この状況のワークフローはありますか?
11 git  github 

6
gitでは、ダースのライブラリのバージョニングを行う方法がすべて並行して動作しました
私たちはプロジェクトを行っていますが、プロジェクト間で多くのコードを再利用し、共通のコードを含むライブラリをたくさん持っています。新しいプロジェクトを実装するにつれて、一般的なコードを抽出してライブラリに追加する方法が増えています。ライブラリは互いに依存し、プロジェクトはライブラリに依存します。各プロジェクト、およびそのプロジェクトで使用されるすべてのライブラリは、参照しているすべてのライブラリの同じバージョンを使用する必要があります。ソフトウェアをリリースする場合、バグを修正する必要があり、長年、場合によっては数十年にわたって新しい機能を追加する必要があるかもしれません。約12のライブラリがあり、変更は多くの場合2つ以上にまたがり、複数のチームが複数のプロジェクトを並行して作業し、これらすべてのライブラリに同時に変更を加えます。 最近、gitに切り替えて、各ライブラリおよび各プロジェクトのリポジトリを設定しました。stashを共通のリポジトリとして使用し、機能ブランチで新しい作業を行い、プルリクエストを作成し、レビュー後にのみそれらをマージします。 プロジェクトで対処しなければならない問題の多くは、いくつかのライブラリとプロジェクト固有のコードを変更する必要があります。多くの場合、ライブラリインターフェイスの変更が含まれますが、その一部には互換性がありません。(これが怪しいと思うなら、私たちはハードウェアとインターフェイスし、特定のハードウェアを汎用インターフェイスの後ろに隠します。他のベンダーのハードウェアを統合するたびに、現在のインターフェイスが予期しなかったケースに遭遇するため、それらを改良する必要があります。)たとえば、プロジェクトを想像しP1たライブラリを使用してL1、L2とL3。L1また、使用していますL2とL3、とL2用途L3にも。依存関係グラフは次のようになります。 <-------L1<--+ P1 <----+ ^ | <-+ | | | | +--L2 | | ^ | | | | +-----L3---+ ここで、このプロジェクトの機能に変更が必要でP1ありL3、のインターフェースを変更することを想像してくださいL3。これらのライブラリを参照するプロジェクトP2をP3ミックスに追加します。それらをすべて新しいインターフェイスに切り替え、すべてのテストを実行し、新しいソフトウェアを展開する余裕はありません。それでは、代替手段は何ですか? 新しいインターフェースを実装する L3 プルリクエストをL3してレビューを待ちます 変更をマージする の新しいリリースを作成する L3 の新しいリリースをP1参照することで機能の作業を開始し、機能のブランチにL3機能を実装しますP1 プルリクエストを行い、これをレビューして、マージします (私はちょうど私がスイッチに忘れたことに気づいたL1とL2新しいリリースに。そしてそれはと並行して行われる必要があるので、私も、どこでこれを固執するかわかりませんP1...) これは、この機能を実装するための退屈でエラーが発生しやすい非常に長いプロセスであり、独立したレビューが必要であり(レビューがはるかに困難になります)、スケーリングがまったく行われず、私たちがビジネスを停止する可能性がありますプロセスが行き詰まってしまい、何もできなくなります。 しかし、あまり多くのオーバーヘッドなしで新しいプロジェクトに新しい機能を実装できるプロセスを作成するために、どのように分岐とタグ付けを使用するのでしょうか?

1
以前のコミットを修正する場合、別の修正コミットをリベースまたは追加する必要がありますか?
ソフトウェア開発の一般的なシナリオは、誰かのコードをレビューするコードです。これを行う一般的なツールは、プルリクエストを開くことです。 私の質問は、レビューで問題が見つかったときに、変更すべきかどうかです 個別にコミットする(新しいコミット) または、既存のコミットを変更する必要があります(以前のコミットから誰もブランチしていないと仮定します...共有ブランチからの履歴を書き換えることは悪いニュースです)。 最初のシナリオでは、コミット履歴にノイズを追加しますが、増分の変更を追跡するのは簡単です。2番目のオプションには、長所と短所が逆になっています。

2
雇用主固有の変更を伴うオープンソースプロジェクトで作業するための最高のGitワークフローは何ですか?
私の現在の雇用者では、Githubでホストされているオープンソースプロジェクトをアプリケーションのコンポーネントとして使用しています。私はこのプロジェクトに取り組んでおり、必要な機能を追加したり、ビルドシステムと統合したりしています。私のマネージャーと私は、このコンポーネントに関する作業を、オープンソースプロジェクトに合理的な範囲で提出することに同意します。私の質問は、オープンソースプロジェクトに追加する意味のあるもの-バグ修正と十分に一般的な新機能-を簡単に分離できるように、Gitコミットを維持するための最良のワークフロー/テクニックについてです。ビルドの場所やアプリケーションの定数など、プロジェクトに固有のものから。 これまで行ってきたことは、適切な粒度ですべての変更をコミットするプライベートGitブランチを維持することです。次にcherry-pick、オープンソースのコミットをmasterブランチに追加し、Githubに送信します。 私はこれを行うためにマージを使用する必要があるようです。そのため、同じ内容の個別のコミットを作成し続けることはできませんが、会社固有のコミットを除外して合理的なワークフローを維持しながらこれを行う方法はわかりません。 たとえば、マスターでオープンソース可能なものとプライベートブランチで会社固有のものをコミットし、必要に応じてマスターをそのブランチにマージし、マージ前にマスターブランチがコミットを指すようにして、オープンソース可能なものを再度コミットしてから、再度マージします。このワークフローで厄介なように思えるのは、どのブランチに属しているかを行うすべてのことを事前に決定し、完了したと思われるものに取り組んでから、テストしてからコミットしてマージする必要があることです。Gitで私が本当に気に入っていることの1つは、アプリケーションを機能させるために必要なことを何でもすることが簡単で、後で変更をコミットする方法と場所を決めることです。私が知る限り、あなたが現在ブランチにいて、何らかの作業を行っている場合、 私は長期的な貢献のために合理的なワークフローを行っていますか?誰かがより良いかもしれない別のワークフローを推奨できますか?なぜそれが良いですか?
11 git 

1
複数のリポジトリにまたがるプロジェクトのGitHub組織?
GitHubで少なくとも3つのリポジトリを含むプロジェクトを開始しました。 リポジトリの1つは、一般的なドキュメントとサンプルのダンプであり、他の2つのリポジトリには、プロジェクトのバックボーンを形成する2つのプログラムの実装が含まれています。 このような構成を処理するためにGitHub組織を使用する必要がありますか?または、完全に無関係な他の12個のリポジトリとともに、すべてを自分のアカウントにすべてダンプする必要がありますか?

3
小規模チーム向けのGitワークフロー
私は、小さなチームで実装するgitワークフローに取り組んでいます。ワークフローのコアアイデア: すべてのチームメンバーが書き込み可能な共有プロジェクトマスターがあります すべての開発は機能ブランチでのみ行われます 機能ブランチは、ブランチ作成者以外のチームメンバーによってコードレビューされます 機能ブランチは最終的に共有マスターにマージされ、サイクルが再び開始されます この記事では、このサイクルの手順について詳しく説明します。 https://github.com/janosgyerik/git-workflows-book/blob/small-team-workflow/chapter05.md これは理にかなっていますか、何か不足していますか?

3
Gitには履歴の書き換えを防ぐための「セーフモード」がありますか?
Git(および一般的にDVCS)を使い始めて、履歴書き換えの変更を検討し始めたとき、リポジトリがローカルのみの場合は安全ですが、リモートで作業してみようとすると問題が発生する可能性がありますそのような変更をプッシュします。 私が期待している機能は、「セーフモード」を有効にする機能です。これにより、基本的に、私がすべきでないことは何もできなくなります。そして、それはどういう意味ですか?つまり、すでにオリジンにプッシュされたものの履歴書き換えの変更を意味します。正確に定義することはできませんが、これには次のようなケースが含まれます。 commit --amend HEADがすでにプッシュされている場合 rebase 非ローカルブランチの reset プッシュされたブランチの これらは、おそらく次のpush失敗をもたらす状況の例です(IIRCは早送りではないため)。そのうちのいくつかを偶然に作成し、リモートでブランチを再作成する必要がありました。そして、私はこれを十分に速く実行できたので、私が書き直した歴史を誰も引き出せなかったのは幸運でした。 この種の変更を特定し、必要に応じて、ユーザーがそれらを変更できないようにすることは可能だと思います。おそらくそのためのオプションはありますか? 存在しない場合、作成しようとする価値があると思いますか?そのような「危険な変化」を特定する方法を正確に定義してみませんか?
11 git  dvcs 

3
単一開発者のGITワークフロー(単純なFTPから移行)
VCSに移行するのが賢明かどうかを判断しようとしています。私は小さな組織(5人)の単一のWeb開発者です。VCS(Git)は、バージョン管理、オフサイトバックアップ、集中コードリポジトリ(自宅からアクセス可能)などの理由で考えています。 現時点では、一般的にライブサーバーで作業しています。FTPで入力し、編集して保存し、再アップロードして更新します。通常、編集はCMSのテーマ/プラグインファイル(concrete5またはWordpressなど)に対して行われます。これはうまく機能しますが、バックアップもバージョン管理も提供しません。 VCSをこの手順にどのように統合するのが最善か疑問に思っています。会社のWebサーバーにGitサーバーをセットアップすることを想定していますが、クライアントアカウント(通常は同じサーバー上のVPS)に変更をプッシュする方法は明確ではありません-現時点では、詳細を指定してSFTPにログインし、変更を直接。 また、何がリポジトリを賢明に表現するのか分かりません-各クライアントのウェブサイトは独自のものを取得しますか? 洞察や経験は本当に役立つでしょう。どうしてもGitのフルパワーが必要だとは思いませんが、基本的なバージョン管理と事実上のクラウドアクセスは本当に便利です。 編集:私はそれを最も理にかなっていると思われる2つのオプションに絞り込みました。1つ目はZweiBlumenの回答に基づいており、編集はライブサーバーで行われ、そこから(外部の)Gitサーバーにコミットされます。これには、私のワークフローがあまり変わらないという利点があります(コミットを行うための追加のステップがありますが、それ以外は同じです)。 2番目のオプションは、XAMPPを使用してローカルで作業し、ローカルマシンから変更をコミットすることです。サイトがライブになったときのみ、完成した記事をローカルマシンからWebサーバーにアップロードします(Gitへの最終コミットの直後)。これは理論上は問題ないように見えますが、その後サイトが修正を必要とし、ライブサーバーでそれらを作成する場合(通常どおり)、ローカルリポジトリの変更されたファイルを手動でコピーし、それらの変更をGitサーバー。これは過度に複雑に思えますが、おそらく私の現在のワークフローからはかけ離れすぎています。 私は、オプション1を試してみて、どうやってうまくいくかをバランスよく考えます。

2
GitリポジトリとMercurialを同じディレクトリに配置する
私の問題を説明します 現在、gitを使用したgitoriousの社内インストールを使用しています。水銀を使用するフォグクリークのFogBugzとKilnのテストを開始したいと思います。少なくとも短期間、両方のソリューションを使用して開発を続けたいと思います。 同じディレクトリにgitとmercurialレポを置くことの長期的な深刻な影響を誰もが知っていますか?または、gitとmercurialサーバーの同期を維持するより良い方法がありますか。 テストリポジトリで試しましたが、問題は見られませんでした。 助けてくれてありがとう。
11 git  mercurial 

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