git の使用方法を理解できないようです。ランダムなコマンドを実行するだけで、最終的には機能します。これは、プッシュしたいときに通常行うことです。
アップストリームから取得
専念
上流にプッシュ
ただし、上記の手順がうまくいかない場合があります。たとえば、アップストリームからフェッチすると、ローカル ブランチが更新されません。
リモート ブランチをローカル ブランチにマージするにはどうすればよいですか? プルとフェッチの違いはありますか?
「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、プルする前に必ずコミットしてください!
git fetch と git pull の違いをよく理解するには、こちらをご覧ください。
簡単に言うと、「git pull」は「git fetch」の後に「git merge」を実行します。
いつでも「git fetch」を実行して、リモート ブランチのローカル コピーを更新できます。この操作は、自分のブランチを変更することはなく、作業コピーを変更せずに安全に実行できます。バックグラウンドで cron ジョブで定期的に「git fetch」を実行している人もいます (ただし、これを行うことはお勧めしません)。
Eclipse で git を操作するのは少し難しいかもしれませんが、git の基本を理解していれば対処できるはずです。gitチュートリアルのいずれかを読むことをお勧めします。これにより、基本的な git 操作を理解できるようになります。
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 pull
rebase
merge
すでにmaster
ブランチにいる場合、これらの 2 番目の引数のほとんどは不必要ですが、わかりやすくするために書きました。git-rebase
特に、 orに2 番目の引数を与えるとgit-merge
、操作を実行する前に単にそのブランチをチェックアウトします。andmaster
への供給は、マスターを自動的に取得してプッシュするように参照を設定していない場合にのみ必要です。fetch
push