GitプルとGitリベース


123

私はGitのでnoobのだ、との違いを学ぶしようとしてgit pull対をgit rebase。どちらも同じ目的を果たしていると思うので、誰かがどのオプションをいつ使用するかの例を提供できますか?


はい、そうしました。プルとリベースの違いは、プルはマージを行うということです。だからあなたの質問への答えは私が貼り付けたリンクにあります。
Thibault D.

1
@ user4943236 1)誰があなたの質問に反対票を投じたのかさえわからない、理由もなく人々を非難しないでください2)それが私の反対票だった場合、私はそれを削除しないでください。ドキュメント
Tim


これはあなたの質問に答えますか?git pull VS git fetch vs git rebase
Shiwangini

回答:


130

git pullそして、git rebase互換性がありませんが、それらは密接に接続されています。

git pullリモートから現在のブランチの最新の変更をフェッチし、それらの変更をブランチのローカルコピーに適用します。通常、これはマージによって行われます。つまり、ローカルの変更がリモートの変更にマージされます。にgit pull似ていgit fetch & git mergeます。

リベースはマージの代替手段です。2つのブランチを組み合わせる新しいコミットを作成する代わりに、一方のブランチのコミットをもう一方のブランチの上に移動します。

マージ(git pull --rebase)の代わりにリベースを使用してプルできます。行ったローカルの変更は、リモートの変更とマージされるのではなく、リモートの変更に基づいてリベースされます。

アトラシアンには、マージとリベースに関する優れたドキュメントがあります。


51

git-pull-別のリポジトリまたはローカルブランチからフェッチして統合する GIT PULL

基本的には、リモートブランチをローカルにプルしています。例:

git pull origin master

マスターブランチをローカルリポジトリにプルします

git-rebase-更新されたアップストリームヘッドGIT REBASEへのフォワードポートローカルコミット

これは、他のユーザーがリモートで行った変更の上にローカルの変更を置きます。例えば:

  • ローカルブランチにいくつかの変更をコミットしました。たとえば、 SOME-FEATURE
  • その間あなたの友人は他の機能に取り組んでいて、彼のブランチをマスターにマージしました

今、あなたは彼とあなたの変更をあなたのローカルブランチで見たいと思っています。それであなたはmasterブランチをチェックアウトします:

git checkout master

それからあなたは引っ張ることができます:

git pull origin master

そしてあなたはあなたのブランチに行きます:

git checkout SOME-FEATURE

そして、リベースmasterして最新の変更を取得し、ブランチのコミットを上に置くことができます:

git rebase master

もう少しはっきりしているといいのですが。


15
マスターをチェックアウトする必要はありません。あなたのブランチに滞在し、実行します。git fetchそれからgit rebase origin/master
アントワーヌマーティン

ローカルマスターをチェックアウトしてから、オリジンマスターをプルすると、ローカルマスターも更新されます。これはベストプラクティスの1つです
アシュワニ

20

一言で言えば :

-> Git Merge:自分とリモートの変更をマージするだけで、別のコミット履歴レコードが作成されます

-> Git Rebase:すべての新しいリモート変更よりも変更が優先され、コミット履歴が書き換えられるため、コミット履歴はgitマージよりもはるかにクリーンになります。リベースは破壊的な操作です。つまり、正しく適用しないと、コミットされた作業が失われたり、他の開発者のリポジトリの一貫性が損なわれたりする可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.