gitコマンドの使い方 ~ git push ~

git push コマンド概要

git pushはlocal-repository(ローカルリポジトリ)のブランチが示すcommitをremoto-repository(リモートリポジトリ)に反映するコマンドです。

また、remoto-repository(リモートリポジトリ)のブランチを削除する場合もgit pushコマンドを利用します。

コマンドの使い方

remoto-repository(リモートリポジトリ)にcommitを追加する

git push [remote-repository] [local-branch]:[remote-branch]

remote-repositoryにlocal-branchのcommitを追加し、remote-branchが追加したcommitを示すようにする

remoto-repository(リモートリポジトリ)を指定しない場合はgit remoteで設定されているremote-repositoryにpushされます。

remote-branchとlocal-branchを指定しない場合はremote-tracking-branch(リモート追跡ブランチ)に登録されたブランチにpushされます。

以下の例は、local-repository(ローカルリポジトリ)のmasterブランチにcommitを1つ追加し、git pushでremote-repository(リモートリポジトリ)に追加しています。

(master)
$ git log --oneline --all
7ac450e (HEAD -> master, origin/master) commit-B
3440a70 commit-A

(master)
$ echo 'ccc' > file-C.txt

(master)
$ git add .

(master)
$ git commit -m 'commit-C'
[master 903ddea] commit-C
 1 file changed, 1 insertion(+)
 create mode 100644 file-C.txt

(master)
$ git log --oneline --all
903ddea (HEAD -> master) commit-C
7ac450e (origin/master) commit-B
3440a70 commit-A

(master)
$ git push origin master:master
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 298 bytes | 298.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/xxx/pushtest.git
   7ac450e..903ddea  master -> master

(master)
$ git log --oneline --all
903ddea (HEAD -> master, origin/master) commit-C
7ac450e commit-B
3440a70 commit-A

remote-branch(リモートブランチ)を削除する

git push [remote-repository] :[remote-branch]

remote-repository(リモートリポジトリ)のremote-branchを削除する場合には、local-repository(ローカルリポジトリ)を指定せずにpushすることで削除することができます。

「:」の前にはスペースが必要です。

以下の例は、remote-repository(リモートリポジトリ)のdevelopブランチを削除しています。

(develop)
$ git log --oneline --all
e574e92 (HEAD -> develop, origin/develop) commit-D
903ddea (origin/master, master) commit-C
7ac450e commit-B
3440a70 commit-A

(develop)
$ git push origin :develop
To https://github.com/xxx/pushtest.git
 - [deleted]         develop

(develop)
$ git log --oneline --all
e574e92 (HEAD -> develop) commit-D
903ddea (origin/master, master) commit-C
7ac450e commit-B
3440a70 commit-A

オプション

-u または –set-upstream

git push [-u | --set-upstream] [remote-repository] [local-branch]:[remote-branch]

git pushと同時に上流ブランチ(upstream)にremote-tracking-branch(リモート追跡ブランチ)を設定する場合は-uオプションを指定します。

以下の例は、remote-repository(リモートリポジトリ)にdevelopブランチがない状態で、local-repository(ローカルリポジトリ)側のdevelopブランチをpushしています。

pushする際に-uオプションを指定することで、upstream(上流ブランチ)にorigin/developを設定しています。

設定されていることはgit branch -vvコマンドで確認しています。

(develop)
$ git log --oneline --all
e574e92 (HEAD -> develop) commit-D
903ddea (origin/master, master) commit-C
7ac450e commit-B
3440a70 commit-A

(develop)
$ git push -u origin develop:develop
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 270 bytes | 270.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
remote:
remote: Create a pull request for 'develop' on GitHub by visiting:
remote:      https://github.com/xxx/pushtest/pull/new/develop
remote:
To https://github.com/xxx/pushtest.git
 * [new branch]      develop -> develop
Branch 'develop' set up to track remote branch 'develop' from 'origin'.

(develop)
$ git branch -vv
* develop e574e92 [origin/develop] commit-D
  master  903ddea [origin/master] commit-C

(develop)
$ git log --oneline --all
e574e92 (HEAD -> develop, origin/develop) commit-D
903ddea (origin/master, master) commit-C
7ac450e commit-B
3440a70 commit-A

git push の全てのオプションを確認する方法

以下のコマンドを実行するとブラウザでgit pushのヘルプページが表示される

git push --help

Gitコマンドの使い方一覧

Git設定git config ~Gitリポジトリの設定~
初期化git init ~ローカルリポジトリの構築~
ログ&設定値確認git log ~commitログの履歴確認~
git status ~作業ディレクトリとステージングエリアの更新状態確認~
git diff ~commitやファイルの差分確認~
git show ~commitの内容確認~
git remote ~リモート追跡ブランチのリモートリポジトリの設定確認~
git reflog ~HEADやブランチの移動履歴の確認と整理~
ステージングエリアの操作git add ~ステージングエリア(インデックス)にファイル追加~
git ls-files ~ステージングエリア(インデックス)のファイル一覧表示~
git rm ~ステージングエリア(インデックス)のファイル削除~
ローカルリポジトリの操作git commit ~blobやtreeなどをまとめたcommitを作成~
git merge ~指定したブランチの内容を取り込み新しいcommitを作成~
git rebase ~commitの履歴の整理~
git cherry-pic ~特定のcommitの変更内容だけを取り込む~
git cat-file ~リポジトリのオブジェクト(commit,tree,blob)の内容表示~
git revert ~指定したcommitを取り消すcommitを作成~
commitのエイリアスなどgit branch ~commitツリーの枝(ブランチ)を作成~
git tag ~リリースなどのタイミングで特定のcommitに名前を付ける~
git stash ~commitを作成する前の変更内容を一時保存~
commitの内容をステージングエリアや作業ディレクトリに反映git checkout ~commitをステージングエリアと作業ディレクトリに展開~
git reset ~HEADの位置やステージングエリアと作業ディレクトリの内容を変更~
リモートリポジトリとのやり取りgit clone ~リモートリポジトリからローカルリポジトリ作成~
git fetch ~リモートリポジトリのブランチをローカルリポジトリに反映~
git pull ~git fetchとgit mergeを同時に行う~
git push ~ローカルリポジトリのブランチをリモートリポジトリに反映~