2

誰かが私のリポジトリの状態を説明できますか?持っていないサーバーに変更があるためプッシュできませんが、gitが新しい変更はないと言っているのでリベースできません。

$ git branch
* master

$ git push origin master
To git@github.com:asdf.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:asdf.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

$ git fetch origin master
From github.com:knowitall/nlptools
 * branch            master     -> FETCH_HEAD

$ git rebase origin master
Already on 'master'
Your branch is ahead of 'origin/master' by 3 commits.
Current branch master is up to date.

$ git pull origin master

提案するマージは空です。

Merge branch 'master' of github.com:knowitall/nlptools

# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
# 
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.

ブランチを作成し、origin / masterでリセットしてからブランチをマージして、プッシュできません。

$ git checkout -b backup
$ git checkout master
$ git fetch origin master
$ git reset origin/master --hard
$ git merge backup
$ git push origin master
 ! [rejected]        master -> master (non-fast-forward)

今、私resetpull、の場合、新しいコミットが表示されます。fetch origin masterそもそもなぜこの新しいコミットが見つからなかったのですか?リポジトリのオリジンの表現が最新であることを確認するにはどうすればよいですか?オリジンを最新の状態にするには、プルを成功させる必要があるようです。

4

2 に答える 2

4

問題は不適切なgit fetch使用法にあるようです: refspec としてgit fetch origin master読み取りmaster、通常のフェッチのように動作しません。より具体的にFETCH_HEADは、 remote を指すようにするだけmasterです。

をrefspecfetchなしで使用する+refs/heads/*:refs/remotes/origin/*と、すべての refs を更新するデフォルトとして使用されますorigin/*

git fetch originまたはgit fetch代わりに試してください。

詳細については、こちらのドキュメントをご覧ください: https://git-scm.com/book/th/ch9-5.html

于 2013-02-04T18:24:23.223 に答える
1

するとcheckout -b、新しいブランチで終了します。したがって、リセットしてバックアップにマージします。この方法で試してください:

$ git branch backup
$ git fetch origin master
$ git reset origin/master --hard
$ git merge backup
$ git push origin master

Windowsを使用している場合はposh-git、コマンドライン(PowerShellを使用)で状態の視覚的なフィードバックを取得するように注意してください。

MacまたはLinuxを使用している場合は、dot-filesgithubのリポジトリをチェックアウトして、同様の機能を取得してください。

于 2013-02-04T18:23:07.397 に答える