2

マスターブランチとベータブランチがあります。プッシュが拒否される状況があります。

edit2:私はブランチマスターにいます。

$ git push
Counting objects: 9, done.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 669.81 KiB, done.
Total 6 (delta 2), reused 0 (delta 0)
To git@github.com:foobar/codedemo.git
   a5fc71d..64430c1  master -> master
 ! [rejected]        beta -> beta (non-fast forward)
error: failed to push some refs to 'git@github.com:foobar/codedemo.git'

通常、私はベータをチェックアウトし、次にベータをプルします、そしてこれはおそらくそれを解決します。

しかし、これは本番Webサイトであるため、ここでベータ版をチェックアウトすることはできません。チェックアウトせずにベータ版をプルする方法はありますか?

これは生産現場なので、どういうわけか行き詰まっています。

編集:コードは別の場所でもチェックアウトされていますが、ここで問題を解決するために別の場所から何かを行うことはできますか?他の場所でも問題ありません。

Edit3:受け入れられた解決策の助けを借りて、しばらくしてそれを行うことができましたが、2番目のクライアントのない解決策を好みます

4

3 に答える 3

4

ベータ版を他のブランチとしてプッシュしてから、それをチェックアウトして解決できる場所に移動することができます。

git push origin beta:beta-temp
# on a different machine
git fetch
git checkout beta-temp
git rebase origin/beta # puts your new commits on top of the upstream
git push origin beta-temp:beta
git push origin :beta-temp # to delete it
于 2009-10-29T00:46:45.260 に答える
4

奇妙なことを何もしていない場合、これの理由は、リモートにあなたが気付いていないコミットがあり、プッシュの続行を許可すると、そのコミットが完全に無視されるためです。

最初にプルしてみてください。これにより、2つのコミットが自動的にマージされ、その後プッシュできるようになります。

現在チェックアウトされていないブランチをプルしても、マージが作成されると思います。

于 2009-10-29T00:51:37.310 に答える
0

どのブランチをプッシュしようとしていますか?

デフォルトでgit pushは、設定されたすべての追跡されたブランチをプッシュします。

これを試して、現在のブランチだけをプッシュします。

git push origin HEAD

于 2009-10-29T00:41:42.790 に答える