githubでレポジトリを作成してから、ローカルにクローンして作業をするのはよくあるパターンですが、その逆で、
ローカル環境で作業していたコードを新たにGithubにアップする方法について解説しています。
新たにGithubにアップする手順
新たにGithubにアップするための手順は、大きく次の4つになります。
- ローカルでGitの基本設定
- ローカルでコミットを作成
- Githubにレポジトリを作成(リモートレポジトリ)
- ローカルの内容をGithubのレポジトリにプッシュ
(参考)Git公式 最初のGitの構成
ローカルでGitの基本設定
Githubを使うためには、自分のユーザー名とメールアドレスを設定する必要があります。
ユーザー名の設定
$ git config --global user.name "ユーザー名"
ユーザー名はダブルクオテーションで囲みます。
メールアドレスの設定
$ git config --global user.email <メールアドレス>
メールアドレスはそのまま入力します。
設定内容の確認
git configコマンドで、範囲(–global)を指定し、一覧表示のオプション(-l または –list)をつければ、その環境内で設定してある内容の一覧が表示されます。
$ git config --global -l
user.name=Yamada Taro
user.email=example@gmail.com
(補足)–globalとは何か?
なお、設定はコマンドで編集しましたが、対象のファイルに直接記述することも可能です。(※書き方には決まりがあります)
例えば~/.gitconfigの内容は以下のようになっています。
[alias]
logg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
ci = commit
last = log -1 HEAD
st = status
cim = commit -m
co = checkout
cob = checkout -b
[user]
name = Ymada Taro
email = example@gmail.com
ローカルでコミットを作成
続いて、ローカルのプロジェクトでGitを使ってログ管理できるようにします。
プロジェクトディレクトリで以下を実行します。
git init
git add .
git commit -m "first commit"
git init
git initは現在のディレクトリをgitレポジトリとするためのコマンドです。.gitファイルが生成されます。
$ git init
Initialized empty Git repository in /Users/projects/git-test/.git/
git add
git add <ファイル名>
で、指定したファイルやディレクトリをステージに上げます。ファイル名に . を指定すると、そのディレクトリにある全てのファイルやディレクトリが対象となります。
git commit
git commit -m "コミットメッセージ"
でステージの内容をコミットします。-mオプションでコミットメッセージをつけます。慣習的に、一番最初のコミットは「first commit」とすることが多いです(何でもいいです)
$ git add .
$ git commit -m "first commit"
[master (root-commit) 2caf997] first commit
1 file changed, 0 insertions(+), 0 deletions(-)
-mをつけない場合はコミット編集用のエディタが起動します。
Githubにレポジトリを作成(リモートレポジトリ)
ローカルの内容をGithubプッシュするために、Githubにレポジトリ(リモートレポジトリ)を作成します。
Githubにログインして、右上の「+」アイコンをクリックし、「New repository」を選択します。
Create a new repositoryというページが表示されます。Repository nameに作成するレポジトリ名を入力します。(プロジェクト名と合わせるのが一般的です)
デフォルトはPublicですが、必要に応じて、Privateを選択します。
- Public: レポジトリを公開する
- Private: レポジトリを非公開にする(今までは有料版しか使えませんでしたが、無料版でも使えるようになりました。)
設定できたら「Create repository」をクリックします。
レポジトリ が作成され、次のようなページが表示されます。
レポジトリのURL https://github.com/Githubユーザー名/レポジトリ名.git
を使うのでメモ(コピー)しておきます。
Githubにレポジトリを作成(リモートレポジトリ)
ローカルにリモートレポジトリを登録する
作成したリモートレポジトリをローカルに登録して、両者を結びつけます。
git remote add origin <リモートレポジトリのURL>
git remote
はリモートレポジトリに関する操作をするコマンドです。指定したリモートレポジトリのURLにoriginという名前をつけています。
設定ができたか確認します。
git remote -v
実例
$ git remote add origin https://github.com/user-name/rails-vue.git
$ git remote -v
origin https://github.com/user-name/rails-vue.git (fetch)
origin https://github.com/user-name/rails-vue.git (push)
ローカルレポジトリをGithubにプッシュする
ローカルとリモートが繋がったので、ローカルレポジトリの内容をGithubにプッシュします。
git push origin master
Githubにプッシュするコマンドは git push <リモートレポジトリ名> <プッシュするブランチ名>
です。リモートレポジトリ名には先ほど登録した origin を、プッシュするブランチ名は現在いるブランチである master を指定しています。
実例
$ git push origin master
Enumerating objects: 198, done.
Counting objects: 100% (198/198), done.
Delta compression using up to 12 threads
Compressing objects: 100% (171/171), done.
Writing objects: 100% (198/198), 363.47 KiB | 8.08 MiB/s, done.
Total 198 (delta 42), reused 0 (delta 0)
remote: Resolving deltas: 100% (42/42), done.
To https://github.com/user-name/rails-vue.git
* [new branch] master -> master
現在いるブランチの確認方法
自分がいるブランチ名を確認したい時は、git branch
を実行します。*
がついているところが今いるブランチです。
$ git branch
* master
実は奥深いgit push
git push は git push origin master
としましたが、実は一番後ろのmasterの部分は、省略形です。
本来は<ローカルブランチ名>:<リモートブランチ名>
となっています。ローカルブランチ名とリモートブランチ名が一致するときに省略することができます。
git push <リモートレポジトリ名> <ローカルブランチ名>:<リモートブランチ名>
つまり、git push origin master
は、ローカルのmasterブランチを、リモートのmasterブランチにプッシュするという意味になります。
Github上の別のブランチにプッシュする
例えば、git push origin master:test
とすれば、ローカルのmasterブランチを、リモートのtestブランチにプッシュします。Github上に対象のブランチがない場合は自動で新規作成します。
$ git push origin master:test
Total 0 (delta 0), reused 0 (delta 0)
remote:
remote: Create a pull request for 'test' on GitHub by visiting:
remote: https://github.com/test-user/rails-vue/pull/new/test
remote:
To https://github.com/test-user/rails-vue.git
* [new branch] master -> test
Github上の指定したブランチを消せる
ローカルブランチを何も指定せず、リモートブランチだけ指定した場合は、指定したリモートブランチ を削除することができます。(空の内容をプッシュするという意味)
例えば、git push origin :test
とすれば、github上のtestブランチを削除します。
$ git push origin :test
To https://github.com/test-user/rails-vue.git
- [deleted] test
自分以外の人のプッシュを許可する方法
Githubのリモートレポジトリの運営者以外の人が、プッシュする場合は事前に招待しておく必要があります。
Githubのレポジトリの上部メニューの「Settings」→「Manage access」を選択し、「Invite a collaborator」をクリックします。
入力窓が表示されるので、ユーザー名やメールアドレスで対象のユーザーを検索します。
ユーザーを選択したら「Add ユーザー名 to this repository」をクリックします。
選択したユーザーに招待メールが届くので、中を開いて、「Accept invitation」をクリックします。
以上で設定は完了です。
これで、対象のレポジトリにpushできるようになります。