shokosブログ

プログラミング

非エンジニアにgitをレクチャーする

  • レクチャーしたいターゲット

・ エンジニアではない(エンジニアは自分でちゃんと勉強しましょう)
・デザイナーさん等、ローカルでwebアプリケーションを確認しながらマークアップ編集したり、画像を追加したりする感じで、あまりロジック部分はいじらない
svnは使ったことがある(コマンドラインからだとうれしいけれど、GUIでも)
コマンドラインはあまり使ったことがなくてもOK


  • 推奨環境

・gitはコマンドラインから使ってもらう
・チームでのブランチの管理はきちんと(masterに直接コミットしないルール/ターゲットがデザイナーさんならデザイナーさん専用のブランチがあり、定期的にエンジニアがmergeしてあげる等)
・基本的にターゲットが見るブランチは1つ


  • gitの説明

svnが少し複雑になったものです(svnとの差分は必要に応じて説明)


  • 導入

・公開鍵作成、登録、clone、ブランチチェックアウトまではやってあげるといいかも


  • svnのアップデートにあたることをやってもらう
$ git pull origin ブランチ名

 


  • conflictって出た

・駆けつけてなんとかしてあげましょう
・どうしても頻発が免れない状況なら、rebaseをレクチャー


  • 前コミットした状態に戻してもらう

・いろいろ試しに編集してよくわからなくなってしまったので、前コミットした状態に戻したいという場合

$ git reset --hard

 


  • みんなのコミットログを見てもらう
$ git log

変更した中身までみたい場合は

$ git log -p

 


  • svnのコミットにあたることをやってもらう

・ まず、編集や追加をしたファイルを確認してもらいます

$ git status

編集したファイル、追加したファイルの一覧が出ると思います
「あれ?これ編集した覚えないぞ?」
というのがあったら、

$ git diff ファイル名

で差分を確認(すべてのファイルで差分は確認してもらいたいけど、それは必要に応じてでいいかなと)

     ( getApplication
     , getApplicationDev
     ) where
-
 import Import
 import Settings
+
 import Yesod.Auth
 import Yesod.Default.Config

+が追加、-が削除行です
改行が入り込んだ等で、もとの状態に戻したい場合、

$ git checkout HEAD ファイル名

でもとに戻してもらいます(ファイルを直接編集してもいいけど)
・ いざコミット
まず、追加や変更のあったファイルを、コミット候補に追加します

$ git add ファイル名

次にコミット

$ git commit -m "コミットメッセージ"

続けて、サーバーに変更を送信

$ git push origin ブランチ名

 


  • その他

・開発側がガンガン変更するブランチとターゲット用ブランチは分けて、定期的にmergeするのがいいかと思います。mergeしたらターゲットにpullしてもらう
・pushするとき、ブランチ名に絶対に:が入らないように注意してもらう


エンジニアは本渡して勝手に勉強してもらって、後はペアプロでやればおkだと思っていますが、
エンジニア以外にレクチャーするのは初の試みなので書いてみました
なにかアドバイス等ありましたら教えてほしいです