はじめに
ここでやっていることはあまり人様にお見せできるようなまともなことではありません。完全に自分ひとりしかいじることのないプロジェクトでpushするとき用にお使いください。なぜ参考にしてはいけないかは一番下に書いてあります。
使う人の想定
- とりあえずなんでもいいから変更履歴残したい
- 慣れてなくて
add
、commit
、push
コマンドが覚えられない - 普通にコマンド打つのだるい
- GUIツール覚えるのはそれはそれでめんどくさい
っていう人。
push用のスクリプト作成
まずはチートコードを作ります。コマンドライン上で以下を実行します。
touch push.sh
chmod 700 push.sh
上の説明
-
touch
コマンドは上のように使うとpush.sh
という名前の空のファイルを作ることができます。 -
chmod
コマンドは、指定したファイルを「どのユーザが読み書き実行のどこまでやっていいのか」の権限を指定することができます。今回は上のようにすることで、自分が読み書き実行できるようになります。(詳しくは[Linux][chmod] パーミッションを数値で指定する)
ファイルを作ったら中身を以下のようにします。
git add .
git commit -m "更新"
git push origin master
上の説明
-
git add .
で今いるディレクトリのファイルを全部commitする対象にします。 -
git commit -m "更新"
でaddで対象にしたファイルを追加、変更、削除した履歴をローカル(自分のパソコン上)に保存します。 -
git push origin master
でcommitした履歴の内容をリモート(Githubなど)に保存します。
チートコードの完成。
Githubなどにあげたいディレクトリの設定
Githubなどにあげたいディレクトリの初期設定をします。あげるディレクトリまでcd
コマンドで行き、以下を実行します。
初期化
git init
git remote add origin リモートリポジトリのURL
上の説明
-
git init
で初期化をします。 -
git remote add origin リモートリポジトリのURL
でorigin
が「内容をあげたいリモートリポジトリ(Githubなど)」だと設定できます。sshの設定をしてたらそっちのほうがいいけど、めんどうだったらhttpsで。
.gitignoreの設定
作成したpush.shをリモートリポジトリにあげたくないので、commitする内容には含めないよって設定します。以下の内容のファイルを作成します。
push.sh
そしてさっき作ったpush.shをmv
コマンドであげたいディレクトリに持ってきて準備完了。
pushするとき
「よし、色々作ったぞ!!!Githubに作った内容をpushするぞ!!!」ってときに以下を実行します。
./push.sh
設定していたらGithubのパスワードとか求められますが、これでリモートリポジトリに内容をあげられます。楽ちん。
どうしてこの方法を参考にしてはいけないか
push.sh
は全ての行が気軽にやってはいけないことです。何故か?(もちろん、ちゃんと理解した上であえてやる分には何も言うことはありません)
git add .
.
はディレクトリ全てのファイルを対象とするということです。もしも弄りたいファイル以外のファイルの内容が変わっててこれを実行すると、意図しない内容がcommitされてしまします。基本的にはgit add ファイル名
でファイルを指定してaddするべきです。
git commit -m "更新"
もしも他の人がcommit履歴を見たときにコメントに「更新」ってあったら、「何をどうしたんだよおぉぉぉぉぉぉぉぉぉぉぉ、ふざけんじゃねぇよぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉ」ってなります。コメントには具体的にどういう変更をしたか書くべきです。
git push origin master
Githubにはブランチという機能があります。masterブランチは基本的に本番で使うような完成形が保存されるブランチです。なので、複数人の開発で誰かが他の人を無視してmasterにあげてたらその内容がちゃんとしたものでも「うわっ、勝手にいじられてるやんけ!」ってなります(まぁ、ちゃんとした開発環境ではそれができないように設定してあったりもしますが)。なので、基本的にはgit push origin 別のブランチ名
で他のブランチにプッシュし、そこからプルリクエストを使ってmasterなどに反映してもらうようにするべきです。
いかがでしたか?今回は一人で使うプロジェクト用のpushスクリプトを作成しました。コマンドの意味をしっかり覚えてちゃんと使えるようになりたかったらこんなことやってないで毎回コマンド叩くなりGUIツール使うなりしてください!