サーチ…
前書き
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
を使うことができます。
新しいリポジトリへのプッシュ
まだ作成していない、または空であるリポジトリにプッシュするには:
- GitHubにリポジトリを作成する(該当する場合)
- 指定されたURLを
https://github.com/USERNAME/REPO_NAME.git
の形式でコピーしますhttps://github.com/USERNAME/REPO_NAME.git
- あなたのローカルリポジトリに行き、
git remote add origin URL
を実行する- 追加されたことを確認するには、
git remote -v
実行します。
- 追加されたことを確認するには、
-
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
。