Git プルがファイルを更新しない
この記事では、git pull
コマンドがローカルリポジトリ内のファイルをリモートリポジトリからのファイルで更新できない理由について説明します。
git pull
機能はいくつかの理由で誤動作する可能性があります。よくある理由と、それらを修正する方法を見ていきます。
情報が不足しているために git pull
がファイルを更新しない
Git に十分な情報がない場合は、次のようなエラーメッセージが表示されることがあります。
$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=<remote>/<branch> master
このようなメッセージが表示された場合、Git では、現在のローカルブランチで追跡するリモートブランチを指定する必要があります。git branch --set-upstream-to=<remote>/<branch> master
コマンドを使用してから、git pull
コマンドを実行して、変更元の場所を Git にポイントします。
git pull
ローカルリポジトリ内のコミットされていないファイルが原因でファイルが更新されない
ソースコード管理システムとして、Git はファイルとデータの損失を防ぐために最善を尽くします。このため、Git は、git pull
コマンドを実行するときに、ローカルファイルをリモートリポジトリのファイルとマージすることを拒否する場合があります。
Git には forced git pull
コマンドがないため、システムを呼び出して変更をマージできます。コミットされていない変更がある場合は、次のようなエラーメッセージが表示される可能性があります。
$ git pull
From REPOSITORY_URL
* branch master -> FETCH_HEAD
a152b19..171e4a2 master -> origin/master
Updating a152b19..171e4a2
error: Your local changes to the following files would be overwritten by merge:
file1.txt
file2.txt
Please commit your changes or stash them before you merge.
Aborting
これを修正するには、git pull
コマンドを実行する前に、git stash
コマンドを実行してローカルの変更を隠します。
最後のステップは、git pull
コマンドの後に git stash apply
を実行することです。このコマンドは、隠された変更を作業ディレクトリに適用します。
$ git stash
Saved working directory and index state WIP on master: d91368b Previous commit message
$ git pull
From REPOSITORY_URL
* branch master -> FETCH_HEAD
a152b19..171e4a2 master -> origin/master
Updating a152b19..171e4a2
Fast-forward
file1.txt | 1 +
file2.txt | 1 +
2 files changed, 2 insertions(++)
$ git stash apply
git pull
コマンドを実行する前に変更をコミットすることもできます。
$ git commit -am 'Committing two files before git-pull'
[master d91368b] Committing two files before git-pull
2 files changed, 2 insertions(++)
$ git pull
From REPOSITORY_URL
* branch master -> FETCH_HEAD
a152b19..171e4a2 master -> origin/master
Updating a152b19..171e4a2
Fast-forward
file1.txt | 1 +
file2.txt | 1 +
2 files changed, 2 insertions(++)
ローカルの変更が必要ない場合は、git pull
コマンドを実行する前にそれらを破棄できます。
git rest --hard
コマンドと git clean -fd
コマンドを使用して、追跡されていないファイルを破棄できます。破棄を元に戻すことはできないため、これらの変更は必要ないことを確認してください。
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn