問題タブ [git]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - 人々が別の作者名でgitcommitをプッシュするのを防ぎますか?
gitでは、ローカルのgit設定ファイルで正しい作成者を指定するのは各ユーザーの責任です。一元化されたベアリポジトリにプッシュすると、リポジトリのコミットメッセージには、自分のリポジトリにコミットするときに使用した作成者名が含まれます。
コミットの既知の作成者のセットが使用されるように強制する方法はありますか?「中央」リポジトリには、ssh経由でアクセスできます。
一部の人が他の人によって行われたコミットをプッシュしている可能性があるという事実によって、これは複雑になっていることを私は知っています。もちろん、信頼できる人だけがリポジトリにプッシュできるようにする必要もありますが、ここでユーザーエラーを防ぐ方法があれば素晴らしいと思います。
gitでこの問題の簡単な解決策はありますか?
svn - Git の履歴を SVN ブランチに移植する
Git リポジトリと SVN リポジトリがあり、どちらも同じソース コードを保持していますが、コミット履歴が異なります。Git リポジトリには、よくコメントされた小さな投稿がたくさんあります... 一方、SVN リポジトリには、「たくさんのもの」のようなコメントが付いたいくつかの大きなコミットがあります。両方の一連のコミットは、コードで行われた同じ変更に従い、ほぼ同等です。
現在の Git リポジトリから詳細な履歴を失うことなく
、
Git-SVN の使用に切り替えたいと考えています。これは、Git リポジトリの履歴をプロジェクトの SVN ブランチ (実際に Git を使い始めた時点から分岐) に「移植」することによって行う必要があります。
どうしてそうするか?(履歴)
少し前に Git で遊び始めました。SVN の管理下にあったプロジェクトに Git リポジトリを設定することから始めました。ちょっとした設定で、Git と SVN の両方を同じソース コードで並行して動作させることができました。
これは、SVN のセーフティ ネットを利用しながら、Git を学び、操作するための優れた方法でした。それは基本的に実際のデータを持つサンドボックスでした。Git を実際に学ぶ時間はありませんでしたが、Git をいじりたいと思っていました。実際、これは私にとって Git を学ぶのにとても良い方法でした。
最初に、いくつかの編集を行った後、SVN にコミットし、次に Git にコミットし、変更が安全に SVN にあることを確認して Git を操作しました。すぐに、私は SVN よりも Git に頻繁にコミットするようになりました... 今では、SVN コミットは、私が時々やらなければならない厄介な雑用に陥っています。
と の違いを学んだときgit revert
、svn revert
私はSVN リポジトリにチェックインしていたことをとてもうれしく思いました。2つが同じように機能すると仮定すると、数週間の作業をほとんど失いました。
私は今、Git-SVN の栄光を知っており、他のいくつかのプロジェクトで喜んで使用しています。私が始めたとき、Git リポジトリを失い、新しいものを「適切に」使用してセットアップする必要があるかもしれないことを完全に理解しましたgit-svn init
...しかし、Git をしばらく使ってみたので、Git の履歴をハッキングする方法があると確信していますSVNに。
git - git バージョン管理システムを使用したバイナリ ファイルのロック
SVN からの切り替えを期待して、1 年半の間、私は git コミュニティに注目してきました。私を妨げている特定の問題の 1 つは、バイナリ ファイルをロックできないことです。過去 1 年間、この問題に関する進展はまだ見られませんでした。ファイルのロックが分散ソース管理の基本原則に反することは理解していますが、バイナリ ファイルの競合の可能性がある場合に、Web 開発会社が git を利用してソース コードとイメージ ファイルの変更を追跡する方法がわかりません。
ロックの効果を得るには、「中央」リポジトリを特定する必要があります。git の分散性に関係なく、ほとんどの企業はソフトウェア プロジェクト用の「中央」リポジトリを持っています。指定されたアドレスで管理 git リポジトリからのロックが必要であることをファイルにマークできるはずです。おそらく、git はファイルではなくファイルの内容を追跡するため、これは難しくなっていますか?
変更する前にロックする必要がある git およびバイナリ ファイルを扱った経験のある人はいますか?
注: Source Gear の新しいオープン ソース分散バージョン管理プロジェクトである Veracity は、ロックを目標の 1 つとしているようです。
windows - Windows 上の Git での無効なファイル記述子の問題
Linux で Git を約 1 年間使用していますが、すべて正常に動作しています。最近、同僚が開発に参加し、Windows を使用しています。そこでもすべて正常に動作しますが、Linux サーバー上のリモート リポジトリ (ベア) に変更をプッシュしようとすると、「無効なファイル記述子」というメッセージが表示されて失敗することがあります。
Linux git を使用して同じリモート リポジトリを問題なく更新します。WinGit 0.2 とMSysGit (今日ダウンロード、Git 1.5.6 を使用) を試しました。どちらも同じ問題を抱えています。
ネットワークは問題なく動作していることに言及する必要があります。リポジトリ全体を最初から再度複製できます。変更をプッシュすることはできません。
誰かが前にこのようなものを見たことがありますか?
git - 分散バージョン管理を使用する場合のビルド シーケンス
現在、バージョン管理には Perforce を使用しています。ビルドを参照するために使用できる厳密に増加する変更番号の便利な機能があります。たとえば、「ビルドが少なくとも 44902 の場合、バグ修正を取得できます」。
分散システム (おそらく git) の使用に切り替えて、ブランチや在宅勤務を容易にしたいと考えています。(どちらもPerforceで完全に可能ですが、gitワークフローにはいくつかの利点があります。)したがって、「トリビュタリ開発」は配布され、共通のリビジョンシーケンスを参照しませんが、すべての変更が行われるマスターgitリポジトリを維持します.ビルドが作成される前にフィードする必要があります。
厳密に増加するビルド ID を保持する最良の方法は何ですか? 私が考えることができる最も簡単な方法は、マスターリポジトリが更新されるたびに起動し、新しいツリーオブジェクト(またはコミットオブジェクト?のハッシュ)を登録する、ある種のポストコミットフックを用意することです。 git) を、ID を配布する集中型データベースと組み合わせて使用します。(「データベース」と言いますが、おそらく git タグを使用して、次に利用可能なタグ番号か何かを探すだけです。つまり、「データベース」は実際には .git/refs/tags/build-id/ になります。 )
これは実行可能ですが、これを達成するためのより簡単な、または既に実装されている、または標準/「ベストプラクティス」の方法があるかどうか疑問に思っています。
windows - Git は Windows で動作しますか?
私は常に Linux で作業していますが、Windows については何も知らず、Windows ボックスさえ持っていません。現在、Git は Windows で動作していますか? それとも、それを使用して Windows 仲間に問題を起こしていますか?
git - Git を使い始める前に知っておくべきことは何ですか?
過去のプロジェクトのソース コード リポジトリを維持するために、「従来の」バージョン管理システムを使用してきました。分散型チームで新しいプロジェクトを開始していますが、分散型システムを使用する利点を理解しています。私は SourceSafe、CVS、および Subversion を理解しています。Git初心者に何か提案はありますか?
svn - git-svn のマージとコミットの詳細
SVN リポジトリのブランチを管理するために git-svn を使用しています。次の問題に直面しています。ユーザー X がブランチで何度もコミットした後、ユーザー Y は git-svn を使用してブランチの変更をトランクにマージしたいと考えています。私たちが目にしている問題は、すべての個々のマージ操作のコミット メッセージがユーザー Y によって行われたかのように見えるのに対し、ブランチの実際の変更はユーザー X によって行われたことです。
マージ時に、マージを行っている人ではなく、特定の変更に対して元のコミット メッセージ/作成者を使用することを git-svn に示す方法はありますか?
git - HTTP プロキシ経由で Git リポジトリからプルするにはどうすればよいですか?
注: 説明されている使用例はプロジェクト内でのサブモジュールの使用に関するものgit clone
ですが、HTTP を介した通常のリポジトリにも同じことが当てはまります。
Git の管理下にあるプロジェクトがあります。サブモジュールを追加したい:
しかし、私は得る
HTTP_PROXY をセットアップしました。
http プロキシ用のグローバル Git 設定もあります。
HTTP フェッチがプロキシ経由で一貫して機能するようになった人はいますか? 本当に奇妙なのは、GitHub のいくつかのプロジェクトが正常に動作することです (awesome_nested_set
たとえば) が、他のプロジェクトは一貫して失敗します (たとえばrails )。
git - gitリベースを元に戻す
gitリベースを簡単に元に戻す方法を知っている人はいますか?
頭に浮かぶ唯一の方法は、手動でそれを行うことです。
- git checkoutは、両方のブランチの親をコミットします
- 次に、そこから一時ブランチを作成します
- チェリーピックすべてのコミットを手作業で
- リベースしたブランチを手動で作成したブランチに置き換えます
私の現在の状況では、両方のブランチからのコミットを簡単に見つけることができるので、これはうまくいくでしょう(1つは私のもので、もう1つは私の同僚のものでした)。
しかし、私のアプローチは、最適ではなく、エラーが発生しやすいと思います(たとえば、自分のブランチを2つ使用してリベースしたとしましょう)。
何か案は?
明確化:私は、コミットの束が再生されたリベースについて話している。1つだけではありません。