web-dev-qa-db-ja.com

SourceTreeの2つのGitコミット間で変更されたすべてのファイルをエクスポートするにはどうすればよいですか?

TortoiseGitとTortoiseSVNでは、ディレクトリ構造を含め、2つのリビジョン間で変更されたすべてのファイルを外部フォルダーにエクスポートできます。

Atlassian SourceTree(Windows用)でこれを行う方法はありますか?

13
Ludwig

これを試して:

git archive --output=test_Zip.zip HEAD $(git diff --diff-filter=ACMRTUXB --name-only hash1 hash2)

例のハッシュ1とハッシュ2を目的のコミットハッシュに置き換え、変更を圧縮するZipファイルに名前を付けるだけです。

わたしにはできる

12
Martin Tonev

カスタムアクションで7Zipを使用するソリューションは次のとおりです(Tools > Options > Custom Actions > Add):

Menu caption: > dist.Zip

[ ] Open in a separate window
[ ] Show Full Output
[X] Run command silently

Script to run: X:\Your\path\to\7-Zip\7z.exe

Parameters: a $REPO\dist.Zip $FILE

(Restart SourceTree after creation for the changes to take effect!)

このアクションは、ログ/履歴からのコミットでステージングされていないファイルと変更されたファイルのコンテキストメニューから機能し(複数のファイル/複数のコミットが選択されている場合でも)、それらのファイルをリポジトリルートの「dist.Zip」に追加します。ファイルを追加する前にファイルが削除されないことに注意してください。最初からやり直す場合は、最初にZipファイルを削除することを忘れないでください。

これにより、ビルドシステムが含まれていないプロジェクトで、変更されたファイルだけでライブシステムを更新することが非常に簡単になりました。それなしでどうしてこんなに長く生きて働くことができたのだろうか。 :-)

1

カスタムアクションとbashスクリプトを使用して、これを実行した方法は次のとおりです。このソリューションはUnix用ですが、これをWindowsの.batスクリプトに複製できるはずです。

スクリプト

これを次のように保存します:archive-commit.sh

#!/bin/sh
HASH1=${1}
HOWMANYCOMMITS=${2:-1}
HASH2=$(git rev-parse $HASH1~$HOWMANYCOMMITS)
DATE="$(date "+%m_%d_%Y_%H%M")"
FILENAME="deploy-$DATE.Zip" # Change this to wherever you want to save the file
git archive -o $FILENAME $HASH2 $(git diff --diff-filter=ACMRTUXB --name-only $HASH1 $HASH2)

たとえば、呼び出す場合:

./archive-commit.sh 17f6ca1993018761f7b936d46d2d600d4ee5ef85

前のコミットと比較して、そのコミットのZipを作成します。

スクリプトは最後の数値引数も取ります。たとえば、次のようにします。

./archive-commit.sh 17f6ca1993018761f7b936d46d2d600d4ee5ef85 3

このコミットの.Zip +前の2つのコミット(合計3つ)が作成されます。

SourceTreeのカスタムアクション

これをSourceTreeに統合するために、次のようなカスタムアクションを作成できます(スクリプトターゲットをスクリプトを保存した場所に変更します)。

enter image description here

複数のコミットを選択した場合、現在SourceTreeは2つのハッシュを取得できないため、複数のアクションを作成する必要があります。

結果

これで、SourceTreeで直接コミットを右クリックしたときにzipをエクスポートする便利な方法が得られます。

enter image description here

0
Edu Wass

ソースツリー内から:

  • 開始する最初のコミットを選択します
  • Shiftキーを押したまま
  • エクスポートする最後のコミットをクリックします
  • マウスで右クリック:パッチの作成を選択
  • 保存するファイルの名前を設定すると、パッチを適用する準備が整います

enter image description here


CLIの使用:

ターミナルを開きます(ソースツリーアイコンバーのアイコン)

次に、次のように入力します。

git diff <sha-1>..HEAD > my_all_commits.diff

指定された範囲内のすべての変更を含むdiffファイルが生成されます。


コミットごとに単一のパッチを生成する方法

git format-patch SHA-1..SHA-1
このコミットは、コミット内のすべての変更を含む、コミットごとのパッチのセットを作成します。次に、それらをすべて使用するか、2番目のリポジトリに適用するものだけを選択するかを選択できます。

幸運を。

0
CodeWizard