GitHubでGitリポジトリを更新しようとしています。たくさんの変更を加え、それらを追加し、コミットしてからgit Push
を実行しようとしました。応答は、すべてが最新であることを教えてくれますが、明らかにそうではありません。
git remote show Origin
私が期待するリポジトリで応答します。
リポジトリに表示されないローカルコミットがある場合、Gitがリポジトリが最新であると表示するのはなぜですか?
[searchgraph] git status
# On branch develop
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# Capfile
# config/deploy.rb
nothing added to commit but untracked files present (use "git add" to track)
[searchgraph] git add .
[searchgraph] git status
# On branch develop
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: Capfile
# new file: config/deploy.rb
#
[searchgraph] git commit -m "Added Capistrano deployment"
[develop 12e8af7] Added Capistrano deployment
2 files changed, 26 insertions(+), 0 deletions(-)
create mode 100644 Capfile
create mode 100644 config/deploy.rb
[searchgraph] git Push
Everything up-to-date
[searchgraph] git status
# On branch develop
nothing to commit (working directory clean)
これは、ステージング中にSourceTreeアプリケーションがクラッシュしたときに起こりました。また、コマンドラインでは、以前のgit add
が破損しているように見えました。その場合は、次を試してください。
git init
git add -A
git commit -m 'Fix bad repo'
git Push
最後のコマンドで、ブランチを設定する必要がある場合があります。
git Push --all Origin master
分岐などを行っていない場合は、これで十分であることに注意してください。その場合は、git Push Origin develop
などの正しいブランチにプッシュしてください。
試してください:
git Push --all Origin
最後のコミットに移動してからgit Push Origin HEAD:master
を実行してください。
現時点では、開発ブランチにいるように見えます。オリジンに開発ブランチがありますか?そうでない場合は、git Push Origin develop
を試してください。 git Push
は、Originの開発ブランチについて知ると機能します。
さらに読むと、 git-Pushのmanページ 、特に例のセクションをご覧ください。
具体的には、マスターに何かをマージする場合、以下の手順を実行できます。
git add --all // If you want to stage all changes other options also available
git commit -m "Your commit message"
git Push // By default when it clone is sets your Origin to master or you would have set sometime with git Push -u Origin master.
これは、プルリクエストモデルで新しいローカルブランチに作成し、そのブランチをリモートにプッシュする一般的な方法です。そのためには、リモートで変更をプッシュする場所を指定する必要があります。これを行うには、プッシュ時にリモートに言及します。
git Push Origin develop // It will create a remote branch with name "develop".
ローカルブランチ名以外のブランチを作成する場合は、次のコマンドを使用して作成できます。
git Push Origin develop:some-other-name
私の場合、他のソリューションはどれも機能しませんでした。新しい変更されたファイル(git status
で表示)のバックアップを作成し、git reset --hard
を実行する必要がありました。これにより、リモートサーバーとの再調整が可能になりました。新しい変更されたファイルの追加、および実行
git add .
git commit -am "my comment"
git Push
トリックをしました。これが「最後のチャンス」の解決策として誰かを助けることを願っています。
これは、GitHubに^C
の途中でgit Push
したときに私に起こりました。ただし、GitHubは変更が行われたことを示しませんでした。
それを修正するために、作業ツリーに変更を加え、コミットしてから再度プッシュしました。完璧に機能しました。
これは私に起こりました。変更を再コミットしただけで、プッシュされました。
ここで定義したものを含む多くの方法を試しました。私が得たのは、
リポジトリの名前が有効であることを確認してください。最善の方法は、リポジトリサイトからリンクをコピーしてgit bashに貼り付けることです。
選択したファイルをコミットしたことを確認してください。
git commit -m "Your commit here"
両方の手順が機能しない場合は、試してください
git Push -u -f Origin master
サムストークスに感謝します。彼の答えによると、別の方法で問題を解決できます(私はこの方法を使用しました)。開発ディレクトリを更新した後、再初期化する必要があります
git init
その後、更新をコミットしてマスターにプッシュできます
また、正しいブランチにプッシュしていることを確認してください。
代わりに、次を試すことができます。 master
に移動する必要はありません。ブランチ自体から変更を直接プッシュすることができます。
上で説明したように、リベースを行うと、ブランチの履歴が変更されます。その結果、リベース後に通常のgit Push
を実行しようとすると、サーバー上のコミットからブランチ上のコミットへの直接のパスがないため、Gitはそれを拒否します。代わりに、-f
フラグまたは--force
フラグを使用して、Gitに、はい、自分が何をしているのかを本当に知っていることを伝える必要があります。強制プッシュを行う場合、Push.default
config設定をsimpleに設定することを強くお勧めします。これはGit 2.0のデフォルトです。設定が正しいことを確認するには、次を実行します。
$ git config --global Push.default simple
正しくなったら、次を実行できます。
$ git Push -f
プルリクエストを確認します。更新する必要があります!
詳細については、プルリクエストのリベース方法の一番下に移動してください。