Git

(作成:2017/09)

C#で個人的にコード開発を始めたくなって、自宅環境に色々導入してみた。
そのうちコードを世代管理して簡単に戻れるようにしたいと思い、Subversionの経験はあったけれど時代の流行に乗って(もう大分遅れてるケド)Gitに手を出してみた。

Install on Windows 10

WindowsでGitを使いたいので、以下のものをインストール。(Ver番号は適宜読み替えで)

  • Git for Windows
      サイトTopのDownloadから取得。
      - Git-2.14.1-64-bit.exe
  • TortoiseGit
      Downloadページから以下2つを取得。
      - TortoiseGit-2.5.0.0-64bit.msi
      - TortoiseGit-LanguagePack-2.5.0.0-64bit-ja.msi

Git for Windows

基本的にはTortoiseGitから操作するし、コマンドラインはBash on Windows使える。なのでgit.exeがコマンドプロンプトで使えれば良いかな。

コンポーネントは目的の通りで Windows Explorer integration は使わない。
一応、コマンドプロンプトからは使えるようにしておきたい。
SSHクライアントとしてはPuTTYを使う。あ、PuTTYは事前に導入しとく必要アリ。
テキストファイルを扱う時にGitでLFに統一するかどうか。ウーンまあ、ツール側でLFを強制すれば良いし、あまり開発環境以外でコードを弄られたくないし全部as-isで。
多分コマンドラインはBash on Windows使うと思うのでMinTTYは入れない。何ならCmderでも良いし。

TortoiseGit

インストールに前後関係があるので、そこだけ注意して。
まあ標準的なところで、特に変更しない。
ここで Run first start wizard を選択して Finish。以下のWizardが起動するので、取り敢えず置いといて。
日本語パックを導入。
さっきの Wizard で Refresh を押すと 日本語(日本) が選択できるようになる。
git.exeは前節でインストール済なので、指定のままで。
コミット時のメタデータにぶっ込む Name, Email を入力しておく。
SSHクライアントで使う公開鍵/暗号鍵ペアを作る。もう持っていれば特に作業なし。持ってなければ General PuTTY key pair で鍵を作る。
HTTP (URLs start with " http:// " or " https:// ") 蘭はそのままで。あまり使わなさそうだし。

で、キーを作る場合。こんな画面が出るので RSA (2048bit) 設定のまま Generate を押下。
マウスを動かすとゲージが溜まり始めるので、最高潮になるまでぐりぐりする。
鍵ができたら、それぞれファイルとして保存しておく。このうち暗号鍵( Save private key で作った方)は決して外部へ漏らさないこと。認証時に相手側へ伝える必要があるのは公開鍵のみ( Save public key で作った方)。

  • Save public key: (任意の名前).pub
  • Save private key: (任意の名前).ppk

なお、RSA (2048bit) は今のところ安全性が高く一般的に使われる暗号化方式。

設定

TortoiseGit

コンテキストメニューの最上層の項目を消す

デフォルトだと右クリックメニューにクローン(複製)``ここにリポジトリを作成TortoiseGit項目の外に出ているけれど、何だかキモいので全部TortoiseGit配下に項目を出したい場合。

  • 全般
      - コンテキストメニュー
        - コンテキストメニューに表示する項目
          - すべてを選択/解除: 未チェック

代替エディタを変更する

Notepad2よりサクラエディタとかにしたい時。
- 全般
  - 代替エディター
    - カスタム: チェック, (エディタのフルパス)

アイコンセットを変更する

や、何かWin10のアイコンセットとかあったので。

  • アイコンオーバーレイ
      - アイコンセット
        - アイコンセット: Win10

リポジトリ管理

TortoiseGitのメニューは、エクスプローラなどで右クリックすると出てくる。
リモートリポジトリはVSTS、masterブランチまで用意してあるとして、ひとまずよくやる作業をざっくりと。
masterブランチ用意の方法は拙サイト「Visual Studio Team Services - プロジェクト作成」参照。

Visual Studio Team Services
(作成:2017/09) C#で個人的にコード開発を始めたくなって、自宅環境に色々導入してみた。 そのうちGitのリモートリポジトリを何...

clone

ssh経由でのcloneを実行する。(VSTSに公開鍵を登録しておく。)
VSTSへの公開鍵登録の方法は拙サイト「Visual Studio Team Services - 初期設定」参照。

Visual Studio Team Services
(作成:2017/09) C#で個人的にコード開発を始めたくなって、自宅環境に色々導入してみた。 そのうちGitのリモートリポジトリを何...
  • TortoiseGit-クローン(複製)
     
      - すでに存在するリポジトリをクローン
        - URL: ssh://(アカウント名)@(VSTSのURL):22/_git/(リポジトリ名)
         
          用意した暗号鍵を初めて使う場合はPC内にキャッシュされてないのでセキュリティアラートが出る。自分で用意したヤツなのではいを押す。
          
少し待ったら完了。ログも見てみる。

なおローカルリポジトリを削除したい場合は、cloneで出来たフォルダをまるっと消すだけ。

branch

  • TortoiseGit-ブランチを作成
     
      メニュー長い。。。使うもの/使わないものはまた整理しよう。
     
      - 名前
        - ブランチ: test
      - 基点
        - HEAD (master): チェック
      - オプション
        - 新しいブランチに切り替える: チェック
      - 説明: テスト用ブランチ。
      - OK

少し待ったら完了。

add

これはVS17から操作する場合はあまり意識しないけれど、Git管理外のファイルは管理下に置くようaddが必要。尤もそのままcommitしても途中で管理外ファイルの処遇を問い合わせられるので、敢えてadd単独で実行する必要はあまり無いのかも知れない。敢えて理由を付けるなら、ウーン備忘のため?

  • TortoiseGit-追加
     
      test.txtというのを置いてみた。他の.vs/配下ファイルは、VS17からリポジトリを見た時に追加された設定ファイル群。これも追加しとく。
      - OK

少し待ったら完了。

commit

  • TortoiseGit-コミット -> "(ブランチ名)"
      checkout済ブランチにcommitする。
     
      - コミット先
        ブランチ名は要確認。
      - メッセージ: テストコミット。
      - コミット

少し待ったら完了。

1つ前のcommitログを修正したい時

  • TortoiseGit-コミット -> "(ブランチ名)"
      - 最後のコミットをやり直し: チェック
       

参考
- mieki256's diary - git のコミットメッセージを修正したい。

reset

ローカルリポジトリに対するcommitミスなど、履歴を含め抹消して過去に戻したい時。


先程と比べると、ログリスト内の"test"の位置が戻りたい場所へずれている。これでOKを押してログを閉じ、再度ログを開けば履歴含め無かった事になっている。

参考:
- TortoiseGitでローカルのコミットを破棄(無かったことに)する|IT底辺脱却ブログ

push

少し待ったら完了。

rebase

2つ以上前のcommitログを修正したい時

  • TortoiseGit-ログを表示
      - 修正したいリビジョンの1つ前を選択して"(ブランチ名)"をここにリベース(付け替え)
        今回は「名前空間 サンプル」を「名前空間 サンプル1」に変更したい、ということで。
       

  • リベース
     
      - ブランチ: (現在のブランチ名)
      - 上流: (元のブランチ)
        上2つは多分そのままで良いと思う。
      - 強制リベース: チェック
      - すべて採用すべて編集
      - リベース開始
        - コミットメッセージ: (修正後の文言)
          Amendを押すと次のリビジョンに移る。コミットメッセージ修正が必要なら修正し、Amendで次々進んでいく。
          ... 
        - 終了