読者です 読者をやめる 読者になる 読者になる

tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【git】既存のディレクトリやソースをgit管理化にしてリモートに紐づける流れメモ - git init、git remote add origin

はじめに

リモート(githubなど)にはリポジトリがある、
ローカルにはgit管理されてないディレクトリやソースがある、な状況で
そのローカルディレクトリをgithubリポジトリに紐づけるというだけのメモ

たまにはこういうおさらいネタを、と。

アジェンダ

アジェンダ作るほどでもないですが一応

  1. 対象ディレクトリをリポジトリ化する
  2. commitするユーザ情報を追加しておく
  3. リモート情報を取得する
  4. testブランチ作ってカラcommitで追加確認

1. 対象ディレクトリをリポジトリ化する

※ 紐づけたいディレクトリに移動
$ cd /path/to/dir

※ リポジトリ化する
$ git init

※ この時点で`.git`というディレクトリができてリポジトリとして管理すべき情報などが作られます
$ ls -al 
drwxr-xr-x  10 hoge  hoge  340  2  9 12:11 .git

※ また、この時点でconfigに最低限のリポジトリ情報が追加される
$ cat .git/config 
----
[core]
  repositoryformatversion = 0
  filemode = true
  bare = false
  logallrefupdates = true
  ignorecase = true
  precomposeunicode = true
----

※ リポジトリ情報追加
$ git remote add origin git@github.com:ユーザ名/リポジトリ名.git

※ このときにリモートリポジトリの情報が追加される
$ cat .git/config 
----
[core]
  repositoryformatversion = 0
  filemode = true
  bare = false
  logallrefupdates = true
  ignorecase = true
  precomposeunicode = true
[remote "origin"]
  url = git@github.com:ユーザ名/リポジトリ名.git
  fetch = +refs/heads/*:refs/remotes/origin/*
----

補足

今回はすでにディレクトリやソースがある前提なので
最初にcdコマンドで対象ディレクトリへ移動しましたが、
新規でディレクトリから作る場合、git init ディレクトリ名とすることで
ディレクトリを新規に作成しつつgit管理化に置くこと(.gitも作られる)もできます

2. commitするユーザ情報を追加しておく

新規のときくらいにしかやらないので忘れがちですが、念のため最初にauthor情報も登録しておきます。
これを忘れると意図しないユーザ名でpushしちゃう時が多いんですよね。

※ 全体の設定をしたいとき
$ git config --global user.name "Your Name"
$ git config --global user.email "you@example.com"

※ リポジトリ(ディレクトリ)ごとにauthorを登録したいとき
$ git config user.name "Your Name"
$ git config user.email "you@example.com"

※ --globalつけずに設定したときのconfig
$ cat .git/config 
[core]
  repositoryformatversion = 0
  filemode = true
  bare = false
  logallrefupdates = true
[remote "origin"]
  url = git@github.com:ユーザ名/リポジトリ名.git
  fetch = +refs/heads/*:refs/remotes/origin/*
[user]
  name = tweeeety
  email = tweeeety@tweeeety.com

3. リモート情報を取得する

いきなりカラcommit&pushして試してみてもいいんですが、その際にbranchを切りたいですよね。
branchを切るためには元になるbranch(masterなど)が欲しいところ。
そのためにまずはリモート情報を取得します

※ 試しにgit branchしてみると何も出てきません
$ git branch

※ git statusはこのタイミングでディレクトリにあるファイルがすべて差分として表示されます
$ git status
- いろいろでてくる -

$ git fetch
remote: Counting objects: 60272, done.
remote: Compressing objects: 100% (18523/18523), done.
remote: Total 60272 (delta 38835), reused 57467 (delta 36274)
~ 省略 ~ 

$ git pull origin master
From git@github.com:ユーザ名/リポジトリ名.git
 * branch            master     -> FETCH_HEAD
Already up-to-date.

$ git branch
* master

testブランチ作ってカラcommitで追加確認

ブランチを切ってから、カラのcommit&pushしてpullrequest出してみることで確認します。
masterにも影響ないですしpull req消せばいいだけですしね。

※ 適当なブランチを切る
※ カラのcommitをしてpull req出す
$ git commit --allow-empty -m 'created PR'
$ git push -u origin master

まとめ

簡単なメモを書きたくなったので書いてみた