問題タブ [git-patch]
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 - Gitの別のブランチから変更を選択的にマージまたは選択するにはどうすればよいですか?
私はGitを、2つの並行する(ただし現在は実験的な)開発ブランチを持つ新しいプロジェクトで使用しています。
master
:既存のコードベースのインポートに加えて、私が一般的に確信しているいくつかの変更exp1
:実験ブランチ#1exp2
:実験ブランチ#2
exp1
そして、exp2
2つの非常に異なるアーキテクチャアプローチを表しています。さらに進むまで、どちらが機能するか(どちらかがあれば)を知る方法はありません。一方のブランチで進歩を遂げていると、もう一方のブランチで役立つ編集があり、それらだけをマージしたい場合があります。
他のすべてを残したまま、ある開発ブランチから別の開発ブランチへの選択的な変更をマージするための最良の方法は何ですか?
私が検討したアプローチ:
git merge --no-commit
続いて、ブランチ間で共通にしたくない多数の編集を手動でアンステージします。共通ファイルを一時ディレクトリに
git checkout
手動でコピーした後、他のブランチに移動し、さらに手動で一時ディレクトリから作業ツリーにコピーします。上記のバリエーション。今のところブランチを放棄し、
exp
実験のために2つの追加のローカルリポジトリを使用します。これにより、ファイルの手動コピーがはるかに簡単になります。
これらの3つのアプローチはすべて、面倒でエラーが発生しやすいようです。より良いアプローチがあることを願っています。git-merge
より選択的になるフィルターパスパラメーターに似たもの。
git - git am が変更されたファイルを放置するのはなぜですか? ワークフローを改善するにはどうすればよいですか?
長くなりますが、ご容赦いただければ幸いです。
チームのソース コードをバージョン管理下に置くために git を使用しようとしています。自分に合ったさまざまなアプローチを見つけようとした後、最終的にgit format-patch
機能を使用することにしました。FWIW、製品は Windows で実行されている ASP.NET Web アプリケーションであり、現在msysgitを使用しています。
背景:
すべての aspx ファイルを含むステージング サーバー (ミラー運用サーバー) があります。次に、ルート フォルダー内でinit-dbを使用して git リポジトリを作成し、git add .
すべてのファイルを追跡しました。
ラップトップにローカル コピーを作成するために、ステージング サーバーから ".git" フォルダーを圧縮し、ローカル マシンに FTP 接続しました。名前を「staging.git」に変更git clone staging.git webappfolder
し、開発を行うために実行しました。
feature1 と feature2 に対して 2 つのコミットを行った後、変更をステージング サーバーに適用します。git format-patch -2
ファイル0001blah.patch
とに出力するを実行しました0002blah.patch
。
次に、これら 2 つのパッチ ファイルがステージング サーバーに送信さgit am 0001blah.patch
れ、ステージング サーバー自体で を実行しました。agit log
を実行すると、コミットが完了したことが示されます。しかし、私がするときgit status
、それは示していますChanged but not updated: modified: file1.aspx
。
それは正確にはどういう意味ですか?私もやってみましたgit apply 0001blah.patch
が、私が得たのはerror" patch failed: file1.aspx: patch does not apply
.
ワークフローに問題はありますか? 適切な方法やヘルプに関する洞察は非常に役立ちます。繰り返しになりますが、SSH サーバーをすぐにセットアップする予定はないため、現時点ではパッチ適用モデルが最も実行可能です。
git - あるリポジトリから別のリポジトリにgitパッチを適用するにはどうすればよいですか?
2つのリポジトリがあります。1つはライブラリのメインリポジトリで、もう1つはそのライブラリを使用するプロジェクトです。
subservientプロジェクトで修正を加えた場合、そのパッチをアップストリームに適用する簡単な方法が必要です。
ファイルの場所はリポジトリごとに異なります。
- メインレポ:
www.playdar.org/static/playdar.js
- 計画:
playlick.com/lib/playdar.js
git format-patch -- lib/playdar.js
playlickプロジェクトで使用してgit am
から、メインのplaydarリポジトリで使用してみましたが、パッチファイル内のファイルの場所が異なるとエラーが発生しました。
特定のファイルの特定のコミットから別の任意のファイルにパッチを適用する簡単な方法はありますか?
ボーナスポイントについては、パッチを適用するファイルがgitリポジトリにない場合はどうなりますか?
git - 隠したものでパッチをフォーマットするにはどうすればよいですか
git では、変更を隠しておきます。隠し持っているものでパッチを作成できる可能性はありますか? そして、そのパッチを他のリポジトリ (私の同僚のもの) に適用しますか?
私は知ってgit format-patch -1
いますが、それは私がコミットしたことのためだと思います。しかし、隠した変更に対して同じものを探しています。
また、他のリポジトリにパッチを適用するにはどうすればよいですか?
git - git を使用してパッチをサインオフする方法
私は、何人かの人々が私に git パッチを送ってくれるプロジェクトに取り組んでおり、それらのパッチを検証してコミットを承認する必要があります。
を使用してパッチを作成しています
ファイルが郵送されてきたら、パッチを検証します。このために、新しいブランチを作成し、次を使用してそれにパッチを適用します
次に、コミットの内容を検証し、それが正しい場合は、パッチから各コミットにサインオフを追加する必要があります。
パッチ適用時にサインオフを追加できる git -am コマンドを見てきました。
パッチ適用後にコミットを追加することはできますか?
ありがとうございました
git - 現在の作業ディレクトリでコミットされていない変更からgitパッチを作成します
作業ディレクトリにコミットされていない変更があるとします。コミットを作成せずにそれらからパッチを作成するにはどうすればよいですか?
git - GIT パッチ - または - プッシュ?
新しいプロジェクトで git を使用するための 2 つの方法を検討しています。
開発者はパッチをメンテナー (おそらく最終的には開発者の 1 人になるでしょう) に送り、彼はそれらを適用し、テストして統合します
開発者はコミットを公開の「開発者」ブランチ (プロジェクトの各サブモジュールのブランチ) にプッシュし、メンテナーはプッシュに関するメール通知を受け取り、レビュー\テスト\統合できます。
最終結果は同じです - 開発者のコミットを含む最新のブランチに基づいています。
だから - 私の質問は、どちらが良いですか? 少人数のグループによる非オープン ソース プロジェクトの開発者で使用する必要がありますか? (私の隣に座っている男にメールでパッチを送るのは奇妙に思えます)
git - プッシュまたはプルできない場合の Git ワークフロー
これは私にとって繰り返しの質問ですが、繰り返したいと思います。
私の状況を簡単に説明してください。私は、git サーバーも、共有パーティションも、コーダー間の共通点もない環境にいます。持たない、持たない、持てない。限目。
私はワークフロー ソリューションを考え出そうとしています。私たちが管理しているその環境でも、担当者が合理的な同期を維持できるようにしています。
私が現在試しているソリューションは、ディスカッション グループを使用してパッチを配布し、2 つのメイン ブランチと一見短いワークフローを使用しています。
- 枝は
marster
、yours
master
は同期ブランチであり、最新の状態に保ち、他の開発者がまだあなたのコードを持っていないものを追跡します。yours
が新しいマスターになり、最終的なコードがあるべき場所になります。あなたは で働いていませんmaster
。- 全員がディスカッション リストにパッチを送ります。
- 2 人が同じファイルで作業することはめったにないと考えています。
ワークフローには、次の 2 つの主要なアクションがあります。
パッチを生成します。
- に行きました
yours
master
(git format-patch master
)からパッチを生成- に行く
master
yours
にマージmaster
- >
yours
に進み、作業を続けますyours
パッチを適用します。
master
支店に行く- 受信したパッチを適用する
yours
支店に行くmaster
にマージyours
- >作業を続行
yours
master
うまくいけば、ブランチは他のすべての人と合理的に同期するはずです。
ブランチは、yours
他の人が持っているものと持っていないものを追跡するためだけのものではありません。
面倒すぎるかどうかを把握しようとしている問題がいくつかあります。
- パッチの適用順序
- 誰かがパッチを逃したことを回避し、検出する方法は?
- 誰かがパッチを見逃した場合、どの程度の問題になる可能性がありますか?
- これが私が考えもしなかった他の問題を引き起こす可能性がありますか?
ありがとう!
git - git であなたの仕事を人質に取っていますか?
これが状況です...
git リポジトリ ブランチを特定の時点にリベースし、その時点以降のコミットを削除 (および隠したり保持したり) できるようにする必要があります。すべてのものを再適用する機能を保持します...しかし、それらをリモートリポジトリに保存することはできません...
理由(おそらくもっと良い解決策があるでしょう)
数か月間取り組んできた契約の仕事がありますが、彼らは支払いを拒否しています... レポを自分の関与の最初に巻き戻し、自分の仕事を削除 (および保存) できるようにしたい支払い時に再適用..
複雑な問題は、他のユーザーが並行してコミットしていて、それらを削除したくないということですが、断続的なコミットをヤンクして同じ時点でレポを実行しようとすると明らかに壊れます (アクティブコピーを巻き戻さない) )。
アイデア?(テクニカル) ... git パッチを使用することを考えましたか?
git - 異なるリポジトリ間の git マージ
大きな svn リポジトリ (git svn clone) から git-svn でリポジトリを作成しました。私のgitリポジトリには、svnにプッシュする必要のないローカルコミットがいくつかありますが、そこから更新を取得する必要があります。
これで、ローカル リポジトリに svn 履歴全体が必要ないことに気付きました。これは、スペースが多すぎるため (数 Gb)、クローン コマンドで -r オプションを使用して開始点を選択する必要があったためです。
新しいリポジトリで最初からやり直してから、古いリポジトリからすべてのローカル コミットをマージするようにリンクしますが、これを行う簡単な方法があるかどうかはわかりません。
状況は次のとおりです。
古いリポジトリのログ:
- ローカルコミット 10
- ローカルコミット 9 ...
- ローカルコミット 1
- svn リビジョン X
- svn リビジョン X-1 ...
- svn リビジョン 1
新しいリポジトリには、svn リポジトリのリビジョン X の競合に対応するコミットが 1 つだけあります。
format-patch および apply コマンドを使用しようとしましたが、これを行う方法がわかりません。
必要なことを行う方法はありますか?
助けてくれてありがとう