16
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

リモートリポジトリの登録とデフォルトリモートブランチの設定

Posted at

はじめに

リモートリポジトリ(Git Hub)を登録および、デフォルトリモートブランチの
設定について解説しています。

リモートリポジトリの登録

事前にGit Hub側でリポジトリを作成しておき、以降の作業は
手元のローカルリポジトリ上で作業を進めます。

# git blanch -l
* master
  
# touch README.md

# git add README.md
# git commit -m "First commit"

この時点での".git/config"は下記の状態です

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true

手元の開発環境のリモートリポジトリとして、Git Hub側のリポジトリを登録します。
ここでは、リモートリポジトリ名をoriginalとします。

$ git remote add original git@github.com:hoge/test.git

この時点での".git/config"は下記の状態です。

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "original"] <-- originalという名前のリモートリポジトリが登録された
        url = git@github.com:hoge/test.git
        fetch = +refs/heads/*:refs/remotes/original/*

デフォルトリモートブランチの設定

git pushコマンド実行時に-uオプションを指定することで
ローカルリポジトリのブランチとリモートリポジトのブランチの対応付けが行われます。
これにより、2回目以降はpullの場合はgit pull、pushの場合はgit pushコマンド
とするだけでOKになります。

# git blanch -l
* master
  
$ git push -u original master
Enter passphrase for key '/home/hoge/.ssh/id_rsa': 
Counting objects: 3, done.
Writing objects: 100% (3/3), 257 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:hoge/test.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from original.

この時点での".git/config"は下記の状態です

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "original"]
        url = git@github.com:hoge/test.git
        fetch = +refs/heads/*:refs/remotes/original/*
[branch "master"] <-- これが追加された
        remote = original
        merge = refs/heads/master

他ブランチの設定

先ほどの例ではmasterブランチ上でデフォルトリモートブランチを
作成しましたが、今度はローカルリポジトリ上で新たにnew_branch
作成し、デフォルトリモートブランチを作成します。

$ git checkout -b new_branch
Switched to a new branch 'new_branch'

$ git branch
  master
* new_branch

$ git push -u original new_branch
Enter passphrase for key '/home/hoge/.ssh/id_rsa': 
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:hoge/test.git
 * [new branch]      new_branch -> new_branch
Branch new_branch set up to track remote branch new_branch from original.

$ cat .git/config
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "original"]
        url = git@github.com:hoge/test.git
        fetch = +refs/heads/*:refs/remotes/original/*
[branch "master"]
        remote = original
        merge = refs/heads/master
[branch "new_branch"] <--新しく追加されている
        remote = original
        merge = refs/heads/new_branch

ローカルリポジトリとリモートリポジトリのブランチ名が異なる場合の登録

これまでの説明ではローカルリポジトリとリモートリポジトリのブランチ名が
同じであることを前提にして説明していました。

ローカルリポジトリとリモートリポジトリでブランチ名が異なる場合は下記のように
エラーになってしまいました。

$ git checkout -b topic
$ touch topic_file1
$ git add topic_file1
$ git commit -m "add topic_file1"

$ git push -u original cipot
Enter passphrase for key '/home/hoge/.ssh/id_rsa': 
error: src refspec cipot does not match any.
error: failed to push some refs to 'git@github.com:seak0503/test.git'

通常は、ローカルリポジトリをリモートに反映する場合は
git push origin hogeのようにしていますが、このコマンドは省略形であり
完全系はgit push origin hoge:hogeになります。

hoge:hogeの部分はローカルリポジトリのブランチ:リモートリポジトリのブランチを示します。

参考資料

例えば下記のように実施すると上手くいくようです。

$ git push -u original topic:cipot
Enter passphrase for key '/home/hoge/.ssh/id_rsa': 
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:seak0503/test.git
 * [new branch]      topic -> cipot
Branch topic set up to track remote branch cipot from original.

この時点での".git/config"は下記の状態です

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "original"]
        url = git@github.com:hoge/test.git
        fetch = +refs/heads/*:refs/remotes/original/*
[branch "master"]
        remote = original
        merge = refs/heads/master
[branch "new_branch"]
        remote = original
        merge = refs/heads/new_branch
[branch "topic"] <-- これが追加された
        remote = original
        merge = refs/heads/cipot
16
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?