サーチ…


前書き

Gitを使用してコードを変更、ステージング、およびコミットした後、変更を他の人が利用できるようにするためにはプッシュが必要であり、ローカルの変更をリポジトリサーバーに転送します。このトピックでは、Gitを使用してコードを適切にプッシュする方法について説明します。

構文

  • git push [-f | --force] [-v | --verbose] [<remote> [<refspec> ...]]

パラメーター

パラメータ詳細
- 力あなたのローカルrefに一致するようにリモートrefを上書きします。 リモートリポジトリにコミットが失われる可能性があるため、注意して使用してください
- 詳細冗長に実行します。
<remote> プッシュ操作の宛先であるリモート・リポジトリー。
<refspec> ... どのリモート参照をどのローカル参照またはオブジェクトで更新するかを指定します。

備考

上流および下流

ソース管理の面では、リポジトリからコピー(クローン、チェックアウトなど)するときに「下流」になっています。情報はあなたの「下流」に流れました。

変更を加えるときには、通常、それらを「上流」に戻して、そのリポジトリに入れるようにして、同じソースから取得するすべての人が同じ変更を行っているようにします。これは主に、ソース管理の技術的要件ではなく、どのようにして各自の仕事を調整できるかという社会的問題です。メインプロジェクトに変更を加え、多様な開発ラインを追跡しないようにしたいとします。

場合によっては、パッケージやリリースマネージャー(ツールではなく、人)が "上流"に変更を送信することについて話します。これは通常、元のソースを調整してシステム用のパッケージを作成する必要があることを意味します。彼らはこれらの変更を続けることを望んでいないので、元のソースに "上流"に送る場合、次のリリースで同じ問題に対処する必要はありません。

ソース

押す

git push

既存のアップストリームにコードをプッシュします。プッシュ設定に応じて、現在のブランチからのコード(Git 2.xのデフォルト)またはすべてのブランチ(Git 1.xのデフォルト)からコードをプッシュします。

リモートリポジトリを指定する

gitを使って作業する場合、複数のリモートリポジトリを持つと便利です。プッシュ先のリモートリポジトリを指定するには、その名前をコマンドに追加するだけです。

git push origin

ブランチを指定する

特定のブランチにプッシュするには、 feature_xと言う:

git push origin feature_x

リモートトラッキングブランチを設定する

最初に作業しているブランチがリモートリポジトリから来ていない限り、単にgit pushを使うだけで初めて動作しません。 gitに現在のブランチを特定のリモート/ブランチの組み合わせにプッシュするように指示するには、次のコマンドを実行する必要があります

git push --set-upstream origin master

ここで、 masterはリモートoriginブランチ名です。あなたは--set-upstream短縮形として-uを使うことができます。


新しいリポジトリへのプッシュ

まだ作成していない、または空であるリポジトリにプッシュするには:

  1. GitHubにリポジトリを作成する(該当する場合)
  2. 指定されたURLをhttps://github.com/USERNAME/REPO_NAME.gitの形式でコピーしますhttps://github.com/USERNAME/REPO_NAME.git
  3. あなたのローカルリポジトリに行き、 git remote add origin URLを実行する
    • 追加されたことを確認するには、 git remote -v実行します。
  4. git push origin master実行する

あなたのコードはGitHub上にあるはずです

詳細については、リモートリポジトリの追加を参照してください。


説明

プッシュコードとは、gitがあなたのローカルコミットとリモートの違いを分析し、それらをアップストリームに書き込むように送信することを意味します。プッシュが成功すると、ローカル・リポジトリーとリモート・リポジトリーが同期され、他のユーザーは自分のコミットを見ることができます。

「上流」および「下流」の概念の詳細については、「 備考 」を参照してください。

フォースプッシュ

時には、ローカル変更がリモート変更と互換性がない場合(リモートブランチを早送りできない場合、またはリモートブランチがローカルブランチの直接祖先でない場合)、変更をプッシュする唯一の方法は強制的プッシュです。

git push -f

または

git push --force

重要なメモ

これにより、すべてのリモート変更が上書きされ 、リモートはローカルに一致します。

重要:このコマンドを使用すると、リモート・リポジトリーがコミット失うことがあります。さらに、このリモートリポジトリを他の人と共有する場合は、強制的にプッシュすることを強くお勧めします。これは、その履歴がすべての上書きコミットを保持し、リモートリポジトリとの同期を失うためです。

経験則として、次の場合に強制的に押すだけです:

  • あなたが上書きしようとしている変更を引っ張った以外の誰も
  • あなたは強制的にプッシュした後に誰もが新しいコピーをクローンし、誰でも自分の変更を適用させるようにすることができます(人々はあなたにこれを嫌うかもしれません)。

特定のオブジェクトをリモートブランチにプッシュする

一般的な構文

git push <remotename> <object>:<remotebranchname>

git push origin master:wip-yourname

あなたのマスターブランチを起点のwip-yournameブランチにプッシュします(ほとんどの場合、クローンを作成したリポジトリ)。


リモートブランチを削除する

リモートブランチを削除するのは、空のオブジェクトをそれにプッシュするのと同じです。

git push <remotename> :<remotebranchname>

git push origin :wip-yourname

リモートブランチを削除するwip-yourname

コロンを使用する代わりに、--deleteフラグを使用することもできます。このフラグは、場合によってはより読みやすくなります。

git push origin --delete wip-yourname

単一のコミットをプッシュする

ブランチに1つのコミットがあり、他に何も押さずにリモートにプッシュしたい場合は、以下を使用できます

git push <remotename> <commit SHA>:<remotebranchname>

このようなgitの履歴を仮定すると

eeb32bc Commit 1 - already pushed
347d700 Commit 2 - want to push
e539af8 Commit 3 - only local
5d339db Commit 4 - only local

347d700をリモートマスターにコミットするには、次のコマンドを使用します

git push origin 347d700:master

デフォルトのプッシュ動作の変更

現在は、現在の作業ブランチと名前を共有するリモートリポジトリのブランチを更新します。

git config push.default current

Simpleは上流のブランチにプッシュしますが、上流のブランチが別のものと呼ばれる場合は機能しません。

git config push.default simple

Upstreamは、それが何であるかにかかわらず、上流のブランチにプッシュします。

git config push.default upstream

マッチングは、ローカルとリモートのgit config push.defaultに一致するすべてのブランチをプッシュします。

好みのスタイルを設定したら、

git push 

リモートリポジトリを更新します。

プッシュタグ

git push --tags

リモートリポジトリにないすべてのgit tagsをローカルリポジトリにgit tags



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow