web-dev-qa-db-ja.com

「gitstashgit pull git stashpop」の代わりにgitpull --rebaseを使用できますか?

違いは何ですか

git pull --rebase

そして

git stash
git pull
git stash pop
11
Raja

実験的なリポジトリを作成して、コマンドを試してみることをお勧めします。自分で実験すると、学習が容易になります。

コマンドシーケンスgit stash; git pull; git stash pop移動しますコミットされていないマスターブランチの更新されたヘッドに変更します。 (通常のマージも実行されるため、コミットされた変更は、デフォルトのgitconfigを想定して、リベースではなくマージされます)

しかしながら、 git pull -rebaseすでにコミットされているの変更をマスターブランチの更新されたヘッドに移動します。ダーティな作業ツリーでこのコマンドを実行しようとすると、次のエラーメッセージが表示されます。

Cannot pull with rebase: You have unstaged changes.
Please commit or stash them.
9
Alderath

主題のあなたの質問への簡単な答えは「いいえ」です。

git pull --rebasegit pullの違いは、最初はfetch + rebaseを実行し、2番目はfetch + mergeを実行することです。ただし、git pullに実行するように指示するデフォルト以外のgit構成があります。マージの代わりにrebase。その場合、2つのコマンドは同じになります。

これら2つのコマンドの違いは、コミットされていない変更を隠したり隠したりする必要性にはまったく影響しません。ダーティなワークツリーがある場合は両方ともこれが必要です。そうしないとエラーが発生し、変更をコミットまたは隠しておくように指示されます。

4
Vampire

私はこれが1年前の投稿であることを知っていますが...

git pull --rebase

〜vs〜

git stash /git pull /git stash pop

git pull --rebaseは、2つの間のハイブリッドのようなものです。これにより、コミットを保持し、最後にコミットされた(プッシュされた)ファイルを中央リポジトリからプルできます。タイムトラベルみたいだね。爆発音

しかし、質問に答えるために.... Git stashコミットされていない変更を保持し、プルが終了した後にそれらを元に戻します。

つまり、何かが完全に終わっていないが、中央リポジトリに最新のファイルが必要な場合は、次のようにします。

git stashgit pullgit stash pop

しかし、あなたが何かを終えてそれをコミットしたとしましょう-しかし、誰にもたわごとを言わず、ファイルをコミットしてメイン(中央)リポジトリにプッシュした同僚のティミーは、最初に彼のものを取得してから、スタックにコミットを追加する必要があります、およびプッシュ '日。

コミットがあり、変更をメイン(中央)リポジトリにプッシュしておらず、別の開発者がファイルをコミットしてプッシュしたために中央リポジトリで新しいファイルを取得する必要がある場合は、次を使用します。

git pull --rebase

ハンバーガーを作るときと同じですが、バディが試してほしい自家製チーズを試すのを忘れたので、ここで彼はあなたのスライスを持ってきて、このチーズを塗るために一番上のパンを外してから、パンを元に戻す必要があります-ブームバンビン。チーズバーガー。

1
VarJohn