基礎的な内容ですが久々にやるとなんだっけ?となってしまったため
どんな時に読む記事?
-
既にgitのリモートリポジトリが存在する状態から
git pushまでやりたいとき -
git cloneとgit init〜git remote addの違いについて知りたいとき
git clone
git cloneは既存のリモートリポジトリを文字通りクローン(コピー)してくるコマンドです。
ex)以下二つが存在するとき
-
local-dirというローカル環境のディレクトリ -
remote-repoというリモートリポジトリ
local-dir上で実行した場合
~/local-dir $ git clone <remote-repoのURL>
~/local-dir $ ls
remote-repo
こんな感じでlocal-dir配下にremote-repoがまるっと入ってきます。
この状態のremote-repoは既にリモートリポジトリとの接続設定が済んでおり、git add等をしたときにデータが保存されるなどgitの操作の要となる.gitディレクトリも含まれています。
つまりこの場合は、以下のような状態になります。
local-dir
├ 既存のファイルやディレクトリ(あれば)
└ 🆕remote-repo 🤝 remote-repoリポジトリ(リモートリポジトリ)
└ 諸々リモートにあったファイルやディレクトリ
git init 〜 git remote add
まずgit initは既存のディレクトリをgitの管理下におくためのコマンドです。
=ローカルリポジトリ作成のためのコマンド
実行すると前述した.gitディレクトリをカレントディレクトリ内に置いてくれます。
~/local-dir $ git init
Initialized empty Git repository in /User/hoge/local-dir/.git/
~/local-dir[master] $ ls -a
. .git //.gitは隠しファイル
..
次にgit remote addは既存のリモートリポジトリとローカルリポジトリを紐づけてくれるコマンドです。
~/local-dir[master] $ git remote add <remote-repoのURL>
~/local-dir[master] $ git remote -v // 正しく設定されていればこんな感じで表示される↓
origin git@(中略).git (fetch)
origin git@(中略).git (push)
こうすることで、先ほどinitして管理下に置かれたlocal-dirディレクトリからリモートリポジトリにgit pushやgit pullができる状態になります。
つまりこの場合は、以下のような状態になります。
local-dir 🤝 remote-repoリポジトリ(リモートリポジトリ)
└ 既に作成していたファイルやディレクトリ(あれば)
まとめ:こんな時はこれを使う!
git clone
- ローカルにまだディレクトリやpush予定のファイルなどを作っていない
- リモートリポジトリまるまる持ってきたい
git init ~ git remote add
- 既にローカルにディレクトリやファイルが作成済み
- ローカルのディレクトリをリモートに紐付けたいだけ
参考文献