「Windows 10 April 2018 Update」の Ubuntu 18.04 環境に対応しました。
Ubuntu環境設定
OSのインストールと更新
これは沢山記事が出てますので紹介だけ。
参考資料)
Windows 10でLinuxプログラムを利用可能にするWSL(Windows Subsystem for Linux)をインストールする(バージョン1803対応版)
Gitも最新にしておきます。
端末アプリをインストール
標準コンソールの色使いが激しく見難いので、wslttyを入れます。
wsltty
この記事と現在の挙動が違っているようですが、
起動はスタートメニューの以下から行えば良いようです。
Git環境設定
ユーザ設定
$ git config --global user.name [名前]
$ git config --global user.email [メールアドレス]
Gitコマンド補完
デフォルトで設定済みです。
Gitコマンド、ブランチ名、git addではModified,Untrackedファイル名にタブ補完が効きます。
Gitステータスのコマンドライン常時表示
~/.bashrcに以下を書きます。
source /etc/bash_completion.d/git-prompt
export PS1='\[\033[32m\]\u@\h \[\033[33m\]\w\[\033[36m\]$(__git_ps1)\[\033[0m\]\n$ '
GIT_PS1_SHOWDIRTYSTATE=true
GIT_PS1_SHOWUNTRACKEDFILES=true
GIT_PS1_SHOWSTASHSTATE=true
GIT_PS1_SHOWUPSTREAM=auto
コマンドラインに、ブランチ名と編集状態やコミット状態が表示されます。
表示される記号の意味。
* :更新(Modified)ファイルが有る
% :新規(Untracked)ファイルが有る
+ :ステージングされた(git add)ファイルが有る
$ :git stashされたファイルが有る
# :コミットが無い(git init直後)
> :ローカルにコミットが有る(ローカルがリモートより進んでいる)
< :リモートにコミットが有る(ローカルがリモートより遅れている)
<>:ローカルとリモート両方にコミットが有る(マージが必要)
参考資料)
「Git補完をしらない」「git statusを1日100回は使う」そんなあなたに朗報【git-completionとgit-prompt】
日本語文字化け対策
日本語ファイル名がエスケープされて読めない文字列になってしまいますので、以下で回避します。
参考資料)
gitで日本語ファイル名を表示する方法
git log を見やすくする
~/.gitconfig に以下を追記します。
[alias]
glog = log --pretty='format:%C(yellow)%h %C(green)%cd %C(reset)%s %C(red)%d %C(cyan)[%an]' --date=iso --all --graph
plog = log --pretty='format:%C(yellow)%h %C(green)%cd %C(reset)%s %C(red)%d %C(cyan)[%an]' --date=iso
参考資料)
git logを見やすくしたい!
Gitのリポジトリを /mnt/c 以下に置く場合
Windowsアプリでも作業出来るようにしたい場合、/mnt/c/Users/username 以下にgit用の作業フォルダを作成します。
わざわざ cd /mnt/c/Users/username とするのも面倒なので、シンボリックリンクを張っておきます。
$ cd ~
$ ln -s "/mnt/c/Users/username" win
$ cd win; mkdir gitwork; cd gitwork
$ git init
$ git ...
別の方法として、homeディレクトリを /mnt/c/Users/username 以下に移してしまう手も有ります。
/etc/passwd のパスをいじります。
ただ、GitHubアクセス等で秘密鍵を作るのであれば、/home/username のままの方がいいです。
(~/.sshに作成する秘密鍵のパーミッションが600じゃないとエラーになりますので)
パーミッションの変更を無視する設定
Windowsフォルダに作業フォルダを作成する場合、パーミッションに気を付ける必要が有ります。
Linux環境で作成してコミットしていたファイルを、Windows環境から再コミットするとパーミッションが書き換わって差分が出てしまうのです。
それを避ける為に、以下の設定をしておきます。(コミット時にパーミッションを無視します)
参考資料)
(よく忘れるので)gitのパーミッション操作の復習
WinMergeをGitの差分・マージツールにする
WSLからWindowsアプリも起動出来るので、WinMergeも使えるようにしておきましょう。
参考資料)
WSL(Ubuntu 18.04)環境のgitでWinMergeを使う方法
GitHub 対応
pushする為のSSH keyを作成する
公開鍵・秘密鍵というやつです。
鍵を作成します。
既に ~/.ssh/id_rsa が有る場合は、-fオプションで別のファイル名を指定して下さい。
秘密鍵のパーミッションを確認する
秘密鍵のid_rsaは、パーミッションが600じゃないとエラーになります。
id_rsaのパーミッションが、
-rw-------
となっていればOKです。
なっていなければ、以下を実行します。
GitHubに公開鍵を設定する
公開鍵をコピーします。
以下でクリップボードに公開鍵をコピーします。
GitHubに登録します
GitHubサイトの右上、アカウントのSettingsから "SSH and GPG keys" を選択します。
右上の"New SSH key"を押し、
- Titleに自分が分かる名前
- keyにクリップボードから公開鍵をペースト
- "Add SSH key"を押す
で完了です。
接続確認
クライアントから以下コマンドを入力し、
以下質問にyesで答えます。
Are you sure you want to continue connecting (yes/no)?
以下が表示されればOKです。
Hi [github登録ID] ! You've successfully authenticated, but GitHub does not provide shell access.
GitHubからクローンする場合
"Clone or download"ボタンからcloneする時に、"Use ssh"を選択しておき、
urlが git@ から始まるアドレスになっていることを確認します。
httpsだと、普通のパスワード認証になってしまい、pushする際に毎回IDとパスワードが聞かれてしまいます。