3

git の使用方法を理解できないようです。ランダムなコマンドを実行するだけで、最終的には機能します。これは、プッシュしたいときに通常行うことです。

  • アップストリームから取得

  • 専念

  • 上流にプッシュ

ただし、上記の手順がうまくいかない場合があります。たとえば、アップストリームからフェッチすると、ローカル ブランチが更新されません。

リモート ブランチをローカル ブランチにマージするにはどうすればよいですか? プルとフェッチの違いはありますか?

4

3 に答える 3

4

「git pull」は、「git fetch」に続いて「git merge」と同等です。

あなたがしたいことは次のとおりです。

git commit -am "your message here"

これにより、現在の変更がローカルでコミットされ、ローカルでのみコミットされます。ここで、ブランチ「foo」を想定します。

git pull origin foo

これにより、「git fetch」に続いて「git merge」が実行されます。この手順はすべてローカル ブランチに対して行われますが、リモート ブランチには影響しません。git のセットアップ方法によっては、ブランチを指定する必要がある場合があります。

マージの競合が発生した場合は、リストされているファイルを修正してから追加し直す必要があります。

git add path/to/resolved.file

完了したら、ローカルの変更内容をすべてリモート サーバーにプッシュします。

git push origin foo

コミットする前にプルすると、ローカル ブランチが更新されない可能性があります。

tl;dr、プルする前に必ずコミットしてください!

于 2012-08-20T22:43:22.857 に答える
2

git fetch と git pull の違いをよく理解するには、こちらをご覧ください。

簡単に言うと、「git pull」は「git fetch」の後に「git merge」を実行します。

いつでも「git fetch」を実行して、リモート ブランチのローカル コピーを更新できます。この操作は、自分のブランチを変更することはなく、作業コピーを変更せずに安全に実行できます。バックグラウンドで cron ジョブで定期的に「git fetch」を実行している人もいます (ただし、これを行うことはお勧めしません)。

Eclipse で git を操作するのは少し難しいかもしれませんが、git の基本を理解していれば対処できるはずです。gitチュートリアルのいずれかを読むことをお勧めします。これにより、基本的な git 操作を理解できるようになります。

于 2012-08-20T22:46:57.080 に答える
1

git を学ぶための最初のステップ: egit を使用しないでください。

これで、アップストリームからフェッチしてプルしています。複数の人が同じリポジトリへの書き込みアクセス権を持っていると思われるので、履歴を複雑にするために大量のマージを行いたくないでしょう。これを行うのが最善でしょう。コミット中に他の誰かによってプッシュされmasterたリポジトリに配置したい変更または一連の変更をローカルブランチに既にコミットしていると仮定しています。upstream

まず、新しい変更を取得しますが、まだ使用していません。upstream/masterこれにより、上流masterブランチの新しいヘッドが更新されます。

git fetch upstream master

ここで、これらの変更を取り込む必要があります。このコマンドは履歴を書き換えますが、変更をまだどこにも公開していないと想定しています。

git rebase upstream/master master

変更を公開した場合は、この厄介なコマンドを使用する必要があります (両方を使用しないでください。これを使用してください!)

git merge upstream/master master

これで、次をプッシュできます。

git push upstream master

最初の 2 つのステップは、それぞれおよびバージョンに対してgit pull --rebaseおよびに短縮できます。git pullrebasemerge

すでにmasterブランチにいる場合、これらの 2 番目の引数のほとんどは不必要ですが、わかりやすくするために書きました。git-rebase特に、 orに2 番目の引数を与えるとgit-merge、操作を実行する前に単にそのブランチをチェックアウトします。andmasterへの供給は、マスターを自動的に取得してプッシュするように参照を設定していない場合にのみ必要です。fetchpush

于 2012-08-20T22:56:42.510 に答える