web-dev-qa-db-ja.com

Android Studio Update Project:Merge vs Rebase vs Branch Default

Merge vs Rebaseに関してかなりの質問があることを知っているのでこれが冗長に思えるかもしれませんが、 'Branch Default'をスローするものはないようです。

複数の人が同時に何か(つまり、Android St​​udioのAndroidアプリ)で作業している場合があります。誰かがマスターブランチにプッシュし、まだ作業中の作業を上書きしないように新しいマスターをプルしたい場合、プロジェクト/プルを更新する最良のオプションは何ですか? Android St​​udioは、[プロジェクトの更新]をクリックすると、[マージ]、[リベース]、および[ブランチのデフォルト]をリストします。それがどのように聞こえるかから、私は「リベース」(「マージ」が続く?)をしたいと思うだろうが、私は完全にはわからない。

54
Kurt Wagner

スタッシング

ここで重要なのは、保存したいコミットされていない作業があることです。何かをマージしようとする前に、 変更を隠しておく にして、コミットされていない変更を保存し、作業ディレクトリを消去する必要があります。

実行git stash変更を隠します。そうすれば、問題なく変更をプルできるはずです。

正常にプルした後、git stash applyプル前に行った変更を再適用します。

マージとリベース

変更の保留は、uncommitted変更のみがある場合にのみ機能します。ある時点でコミットしたがプッシュしなかった場合は、リベースまたはマージする必要があります。

このStackOverflowの投稿 には、違いに関する優れた情報があります。

一般に、マージは簡単ですが、一部の人は、マージコミットでgit履歴を「汚染」すると考えています。

リベースには追加の作業が必要ですが、マージコミットがないため、マージは基本的に非表示になります。

繰り返しますが、あなたの場合、マージまたはリベースする必要はありません。単に隠して、引っ張ってから、隠してください。すべてうまくいくはずです。

40
Tanis.7x

enter image description here

IntelliJ IDEAによると documnetatition

更新タイプ

  • Merge:このオプションを選択すると、マージ戦略が適用されます。結果は、git fetch ; git mergeまたはgit pull --no-rebaseを実行した場合と同じです。
  • Rebase:リベース戦略を適用するには、このオプションを選択します。結果は、git fetch ; git rebaseまたはgit pull --rebaseを実行した場合と同じです。
  • Branch Default:このオプションを選択すると、ブランチのデフォルトコマンドが適用されます。デフォルトのコマンドは、branch.<name>構成ファイルの.git/configセクションで指定されます。

更新前に作業ツリーをクリーンアップします

この領域では、更新前に作業ツリーをクリーンアップしながら変更を保存する方法を指定します。更新が完了すると、変更が復元されます。利用可能なオプションは次のとおりです。

  • Stashの使用:このオプションを選択すると、変更がGitスタッシュに保存されます。 Git自体によって生成されます。を使用して
  • Shelve:変更をシェルフに保存するには、このオプションを選択します。棚上げはIntelliJ IDEA内部操作であり、棚上げされた変更から生成されたパッチは通常IntelliJ IDEA内に適用(棚上げ解除)されます。保留された変更をIntelliJ IDEAの外部に適用することも可能ですが、追加の手順が必要です。
17

Googleのドキュメントにはこの質問(つまり、ワークフロー)に対する答えが見つかりませんでした。そこで、Android St​​udioとGitをUIから完全に使用した私の実際の経験を次に示します。

(コマンドラインとIDEの切り替えを考えて吐きます-IDEが不足していることを意味します!)

  1. 変更をStashする:Project-> Git-> Repository-> Stash Changesを右クリックします。名前を付けてください。
  2. 同僚が行った更新をプルします。プロジェクトを右クリック-> Git->リポジトリ->プル
  3. コードの変更をマージします。プロジェクトを右クリック-> Git->リポジトリ->変更をアンスタッシュ->スタッシュを適用
  4. その後、「競合でマージされたファイル」UIが表示されます。ここでファイルを選択し、選択的にマージします。

[〜#〜] warning [〜#〜]

手動マージの「リビジョンのマージ」UIは[〜#〜] terrible [〜#〜]です。一度試してみると、意味がわかります。 「同期スクロール」を実際に機能させようとして頑張ってください。このUIが2015年の最初の数週間以内に解決されることを心から願っています。

6

ドキュメント によると:

Merge:更新中に merge を実行するには、このオプションを選択します。これは実行と同等です
git fetch、次にgit merge、またはgit pull --no-rebase

Rebase:更新中に rebase を実行するには、このオプションを選択します。これは実行と同等です
git fetch、次にgit rebase、または `git pull --rebase(すべてのローカルコミットは、更新されたアップストリームヘッドの上に配置されます)。

Branch Default:異なるブランチに異なる更新戦略を適用する場合は、このオプションを選択します。 branch.<name>構成ファイルの.git/configセクションで、各ブランチのデフォルトの更新タイプを指定できます。

マージとリベース

続きを読む こちら

3
yoAlex5

Androidスタジオ端末)でGitプロジェクトを更新

  1. git add。
  2. git commit -m "anything"
  3. git Push Originマスター

これは私があなたの投稿から答えを見つけたいと思っていたものです。だから、私はこの答えを書いているのです。

0
Deepak Ror