私はSVNの使用に慣れており、最近になってGitHubに切り替えました。
GitHubリポジトリでいくつかのファイルを更新しようとしていますが、次のメッセージが表示されます。
To https://github.com/.../
! [rejected] master -> master (non-fast-forward)
error: failed to Push some refs to 'https://github.com/.../'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git Push --help' for details.
git fetch Origin
やgit pull
などのコマンドを試しましたが、これらのコマンドはどれも実行しないため、現在のブランチは遅れていません。
SVNでは、svn update
を実行してから、変更をコミットします。
私もgit pull Origin
を試しましたが、奇妙なテキストメッセージがポップアップ表示され、それとインターフェイスする方法がわかりません: Githubリポジトリからの変更によるローカルリポジトリの更新
次のコマンドで現在のブランチを確認します。
git branch
名前の横にアスタリスク(*)が付いた現在のブランチ名が表示されます。
次に、ローカルブランチをリモートブランチで更新します。
git pull Origin branchname(これはアスタリスク付きのブランチ名です)
次のコマンドを使用してローカルの変更を既にコミットしている場合は、コードをリモートリポジトリにプッシュできます。
git Push Origin branchname
まだコミットしていない場合は、最初にcommitを実行し、次にgit pullおよびPushを実行します。
Gitがプルするときにエディターを開くのは正常です。これは、リモートからの変更をマージするがローカルブランチにいるためです。
プルすると、gitはローカルブランチをリモートブランチとマージする必要があるかどうかを検出します。マージが必要な場合は、マージを行い、マージコミット用のカスタムメッセージを作成する機会を提供します。その時点で、エディターを閉じるだけで、gitはプロセスを終了します。
基本的に、あなたがしなければならなかったのはエディターを閉じるであり、これで完了です。
基本的に、gitは次のことを行っています。
#Download all the commits from the remote
git fetch Origin
# Merge in the commits from the remote to your local branch
# If anything needs merging, this will open a text editor
git merge Origin/master master