プロジェクト新規作成時のリポジトリ登録方法についてまとめました。
問題点
リポジトリを作成してcloneするのは問題ないのですが、composerなどでフレームワークをダウンロードする際に、すでにあるフォルダの中には展開できないっていう問題があります。もちろん、リポジトリの中でフォルダを作ってその中にフレームワークを置けばできることはできるのですが、なんかスマートじゃない。世の中の公開されているリポジトリを見てもそんな作りにはなっていないません。
ということで、今まではどちらかを作って手動でマージ(.gitフォルダーをフレームワーク側のフォルダにコピーするのが楽ですが)していたんですが、どう考えてもスマートじゃない…。
とうことでちゃんとした
方法
大まかな流れは以下の通りです。
- プロジェクトのフォルダを用意してファイルなどを置いておく
- プロジェクトフォルダ内でリポジトリを作成
- “git remote add” コマンドで既存のGitリポジトリを登録
- “git add .”ですべてのファイルを登録しcommit
- origin master(もしくはmain)にpush
- 後はいつも通りにcommit、push、fetchなどを行う
具体的な操作は以下のような感じになります。
$ cd [プロジェクトのフォルダ] $ git init $ git remote add origin [GitのURL] $ git add . $ git commit -m "Initial commit" $ git push -u origin master
※githubでごく最近新規でリポジトリを作った場合は、デフォルトのリポジトリ名がmainになっている場合があります。
因みに、githubやgitlabでは、サイトからリポジトリを作った後に、この手順が表示されます。
githubだと”…or create a new repository on the command line”と書いてある項目の手順でやれば良いかと思います。
実際にはこんな感じでやるように指示されています。
※test_prjがプロジェクトのフォルダです
echo "# test_prj" >> README.md git init git add README.md git commit -m "first commit" git branch -M main git remote add origin [GitHubのリポジトリURL] git push -u origin main
ブランチの作成
一人で開発しているというような場合だと、全部master(main)ブランチで管理しちゃっているという人もいるかもしれませんが、最低でもとりあえず一通り動くようになったら完成版と作業中のブランチは分けておくべきです。
ということで、git-flowっぽくdevelopブランチを作ってそこで作業するようにしましょう。
$ git branch develop #developブランチの作成 $ git checkout develop #作業中のブランチをdevelopに切り替え $ git push -u origin develop #リモートにdevelopブランチを登録
ファイルの追加
まず、作業は作業用のブランチで行います。
とりあえず、developブランチで作業することとします
$ git checkout develop
新規で作成したファイルを登録したい場合は
$ git add ファイル名
でできますが、数が多いと面倒な場合があります。そういった場合は
$ git add .
とすることで一括追加も可能です。
ただ、ログファイルやキャッシュファイルなど追加すべきでないものも入ってしまう恐れがあります。
そういった場合は、プロジェクトフォルダのルートの、.gitignore に入れたくないファイルやフォルダを記述しておくことで回避できます。
何等かフレームワークを使っている場合は、多分すでにあると思いますので、そこに追記していけばよいでしょう。
コミットとPush
ファイルの追加や変更を行ったらコミット操作を行い、リポジトリに変更内容を登録します
$git commit -m "コメント"
コミットではローカルのリポジトリにしかデータが残りませんので必ずリモート側へpush操作をしましょう
$git push
これで、リモート側へ変更データが保存されるはずです。最悪自分のPCのHDDが飛んじゃっても安心です。
基本的に、commitとpushは必ずセットでやるべきです。
しかし、作業途中などで動かない状態のものをpushしてしまうと、多人数で作業している場合問題になります。
そういった場合は、自分専用のブランチを用意してそこで作業するように、完成後そのブランチと共有のブランチをマージさせましょう。
マージ
作業用のブランチをリリース用のなどのブランチとマージさせます。今回はdevelopをmasterにマージさせます。
手順としては、マージ先のブランチに切り替えて、マージコマンドを実行します。
$ git checkout master $ git merge develop
一応これでできるのですが、マージ先のブランチが作業中に変更されている場合は、競合が発生してしまう場合があります。