#前提
プログラミングは以前から勉強していたものの、チームで開発をするにあたりgitを初めて実践的に使っていく上で、
私が個人的につまずいたこと学んだことを以下メモ書き程度に記述します。
#1.つまずいたこと
##1.1プライベートリポジトリにアクセスする
まずは、リモート上にあるOrganizationアカウントのプライベートリポジトリからhttps接続でcloneしようとした際に以下のようなエラーが出た。
remote: Repository not found.
fatal: repository 'https://ユーザ名@github.com/組織名/リポジトリ名/' not found
これはSSH接続でcloneすることにより解決した
git@github.com:ユーザ名/リポジトリ名.git
SSHの設定でconfigでHostnameを設定している場合は
git@ホスト名:ユーザ名/リポジトリ名.git
SSH鍵の作り方は以下参照
お前らのSSH Keysの作り方は間違っている
##1.2.ローカルの変更を残さずにブランチを切り替える
developブランチとfeature/○○○のブランチを切り替えることがよくあった。しかし、コミットしていないローカルの変更があった場合、ブランチを切り替える際に変更を保持したままの状態となってしまい、正常に切り替えができない。
git stash
git stash (list省略可)を使うことでコミットしていない変更を退避させ、きれいにブランチを切り替えることが可能となります。
戻す際は
git stash pop
退避した変更を戻すと同時にstash listから削除することができる。
##1.3.ローカルにないブランチをリモートから落とす
チーム開発していると、ブランチを分けて分担して作業している際に、他人が作業していたブランチを自分のローカルに落として確認したいという場面がよくありました。その際に使用するコマンドは
$ git fetch
$ git checkout -b ブランチ名 origin/ブランチ名
fetchでリモートの最新を落とし、自分のローカルに任意のブランチを作ります。(名前はリモートと同じにすることを推奨)
fetchとpullの違いについては以下参照
【初心者向け】git fetch、git merge、git pullの違いについて
##1.4.直前のコミットを取り消す
#ローカルに変更を残したままコミットだけ取り消す
$ git reset --soft HEAD^
#変更をローカルから削除した上でコミットを取り消す
$ git reset --hard HEAD^
#2.学んだこと
##2.1 コミットはこまめに
コミットを細かく刻むことでエラーやバグが起きた時、最小限で戻すことができる。
特にライブラリなどをインストール後などコミットする。
##2.2 git add . を安易に使わない
コミットはメッセージに基づくまとまりでしないと、メッセージ内容に沿わない変更を含めてしまう。
変更をしたあとはすべてステージングするのではなく
$ git add -p ファイル名
などすることで一行一行確認してステージングに上げてコミットすると良い
##2.3 git push -f は慎重に
チーム開発をする上で強制pushした内容に不備があるなどでリモートを汚してしまう可能性がある。
基本的には使わないが吉。
#参考
Gitでよく使うコマンド一覧
【git stash】コミットはせずに変更を退避したいとき
[git reset (--hard/--soft)]ワーキングツリー、インデックス、HEADを使いこなす方法
マンガでわかるGit 11話「強制プッシュするとどうなるの?プッシュできないときはどうすべき?」