Gitリポジトリは、ディレクトリとファイルのツリーだけでなく、それらのツリーの履歴も格納することを理解する必要があります。これには、ブランチとマージが含まれる場合があります。
リポジトリからフェッチするときは、すべてまたは一部のブランチをリポジトリにコピーします。これらは、「リモートトラッキングブランチ」としてリポジトリにありますremotes/origin/master
。
リモートリポジトリから新しいコミットを取得しても、ローカルの作業コピーについては何も変更されません。
作業コピーには通常、と呼ばれるコミットがチェックアウトされていHEAD
ます。このコミットは通常、ローカルブランチの先端です。
ローカルブランチ(またはおそらくすべてのローカルブランチ?)を対応するリモートブランチに更新して、最新のブランチをチェックアウトしたいと思います。
作業コピー(ローカルで変更されている可能性があります)との競合を回避するには、まず、バージョン管理されていないものすべてを(を使用してgit clean
)クリーンアップします。次に、更新先のリモートブランチに対応するローカルブランチをチェックアウトし、git reset
それを使用してフェッチしたリモートブランチに切り替えます。(git pull
ローカルブランチにリモートブランチのすべての更新が組み込まれます。これは同じことを行う場合があります。または、ローカルコミットがある場合はマージコミットを作成します。)
(ただし、作業コピーとローカルコミットの両方で、ローカルの変更はすべて失われます。本当にこれが必要であることを確認してください。そうでない場合は、新しいブランチを使用すると、ローカルコミットが保存されます。git stash
さらに、まだコミットされていない変更を保存するために使用します。。)
編集:
ローカルブランチが1つしかなく、1つのリモートブランチを追跡している場合、必要なのは
git pull
作業ディレクトリ内から。
これにより、追跡されているすべてのリモートブランチの現在のバージョンがフェッチされ、現在のブランチ(および作業ディレクトリ)が、追跡しているリモートブランチの現在のバージョンに更新されます。