web-dev-qa-db-ja.com

マスターでローカルリポジトリを更新する方法は?

私は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 Origingit pullなどのコマンドを試しましたが、これらのコマンドはどれも実行しないため、現在のブランチは遅れていません。

SVNでは、svn updateを実行してから、変更をコミットします。

私もgit pull Originを試しましたが、奇妙なテキストメッセージがポップアップ表示され、それとインターフェイスする方法がわかりません: Githubリポジトリからの変更によるローカルリポジトリの更新

9
user3898238
  1. 次のコマンドで現在のブランチを確認します。

    git branch

    名前の横にアスタリスク(*)が付いた現在のブランチ名が表示されます。

  2. 次に、ローカルブランチをリモートブランチで更新します。

    git pull Origin branchname(これはアスタリスク付きのブランチ名です)

  3. 次のコマンドを使用してローカルの変更を既にコミットしている場合は、コードをリモートリポジトリにプッシュできます。

    git Push Origin branchname

まだコミットしていない場合は、最初にcommitを実行し、次にgit pullおよびPushを実行します。

22
Breen ho

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
4
Justin Howard