5

私は 3 つの異なるワークステーションで仕事をしています。コーディング セッションの途中でワークステーションを離れ、後で別のワークステーションでこの作業を再開できるようにしたいと考えています。コードがリモートの git リポジトリを介して共有されていることを考えると、git を使用してこの未完成の作業を共有したいと考えています。

実際には、未完成の作業とは、

  • 変更されたファイルがあり、
  • 新しい追跡されていないファイルがあり、
  • 削除されたファイルがあります。

ほとんどの場合、これらの変更は一時的なものです。すべての変更と追跡されていないファイルのほとんどが最終コミットで終了するわけではありません。追跡されていないファイルの例は、テスト目的で 20 のわずかに異なる変更を加えて複製されたテスト ファイルです。これらのファイルはすべて、特定の問題に取り組んでいる間だけ気にしますが、別のワークステーションに切り替えるときにそれらを再生成する時間を無駄にしたくありません。

これらの変更をプッシュするためにブランチを使用する他の質問と解決策を見てきました: 私はこれで問題ありませんが、これらのブランチが毎回書き換えられるという問題があり、git push --force(私はあまり好きではありません--force) またはそれらがなることができます。時間の経過とともに非常に面倒です。

私が欲しいのは、git履歴を「い​​じりすぎる」ことなく作業ディレクトリの現在の状態を保存できる単純なコマンドまたはgitエイリアスです。これらの一時的な変更を他のワークステーションからダウンロードできるようにするための簡単なコマンドまたは git エイリアスが必要です。

4

4 に答える 4

4

git stash を使用して、変更をファイルに保存します。

git stash
git stash show -p > myPatchFile

他のコンピューターでそれらを適用します

git apply myPatchFile
于 2015-11-11T23:29:07.053 に答える
1
  1. git add -A削除したファイルを削除して新しいファイルを追加するために使用できます。次に、 say という名前のブランチにコミットしますmy_current_work。を使用してリモートリポジトリ経由で交換し--forceます。メインリポジトリをよりクリーンにするためだけの新しいリモートを共有できます。または、ワークステーション間にネットワーク リンクがある場合は、ワークステーション間で変更を直接プッシュ/プルできます。作業を master ブランチにマージする前に、rebase -iコミット履歴をクリーンアップします。

  2. 交換用のリモート リポジトリの代わりに、電子メールでパッチを送信できます ( git-send-email)。

于 2012-04-19T12:21:59.380 に答える
0

おそらくスタッシュを使用できますが、それが適合するかどうかはよくわかりません。

1つのオプションは、必要なすべてのファイルを追加するコミットを作成し、必要なときにそれをチェリーピックして、パブリックリポジトリにプッシュする前にインタラクティブリベースを使用して削除することです.

于 2012-04-19T11:05:43.653 に答える
0

個人的なフィーチャー ブランチを (できれば個人のリポジトリに) 保持し、すべてをコミットし、履歴を書き換えず、git commit --fixup=<commit>コミットによって導入された不要な変更を変更するために使用し、1 日の作業またはフィーチャーが終了したら、git rebase -iこのブランチだけをメインのフィーチャー ブランチにします。またはマスターブランチ。

于 2012-04-19T12:00:06.567 に答える