1. ホーム
  2. git

[解決済み] Gitのプッシュが何もしない(すべて最新)

2022-10-01 01:42:30

質問

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)

どのように解決するのですか?

git push は、すべてのローカルブランチをプッシュするわけではありません。どのリモートブランチにプッシュすればいいのか、どうやって知ることができるでしょうか? 特定のリモートブランチにプッシュするよう設定されたローカルブランチのみをプッシュします。

私のバージョンの Git (1.6.5.3) で git remote show origin を実行すると、どのブランチがプッシュされるように設定されているかが実際に表示されます。

Local refs configured for 'git push':
  master pushes to master (up to date)
  quux   pushes to quux   (fast forwardable)

Q. しかし、私はに押すことができます。 master を気にせず押せますね。

あなたが git clone を設定すると、デフォルトではローカルの master ブランチを設定し、リモートの master ブランチ (ローカルでは origin/master ) にコミットする場合、もし master にしかコミットしないのであれば、単純な git push は常に変更をプッシュバックします。

しかし、あなたが投稿した出力スニペットでは、あなたがいるブランチは develop というブランチにおり、これは何かにプッシュするように設定されていないのでしょう。 そこで git push を引数なしで実行しても、そのブランチのコミットはプッシュされません。

"Everything up-to-date" とあるのは、"あなたがプッシュする方法を教えてくれたブランチはすべて最新です" という意味です。

Q. では、どのようにすれば自分のコミットをプッシュできるのでしょうか?

もし、あなたがしたいことは、あなたの変更を develop から origin/master にマージした後、ローカルの master にマージして、それをプッシュしてください。

git checkout master
git merge develop
git push             # will push 'master'

もし、あなたが欲しいものが develop とは別に、リモートに master とは別に、引数を git push :

git push origin develop

という名前の新しいブランチをリモートに作成します。 develop ; そのブランチをローカルの develop ブランチに更新します。 セット develop にプッシュします。 origin/develop というように、将来的には git push を引数なしで となります。 プッシュ develop を自動的にプッシュします。

をプッシュしたい場合は、ローカルの develop というリモートブランチにプッシュしたい場合 以外の develop と、言うことができます。

git push origin develop:something-else

しかし、そのフォーム にはなりません。 を設定します。 develop に常にプッシュするように origin/something-else にプッシュします。