gitのaliasについて
aliasとはコマンドを省略して実行できる機能のこと。
現在のalias確認
$ git alias
aliasの設定方法
~/.gitconfig
に以下のように記述する。
[alias] lg = log --decorate --oneline --graph
追加したalias
参考文献
lnコマンド - Linux
ln -s
を使うとシンボリックリンクが作成できる
$ ln -s シンボリックを作成したいフォルダの完全パス 作成するシンボリックのパス
例 /Users/username/Document/programs/Python
のシンボリックリンクを/Users/Document/Python
に作成する
$ ln -s /Users/username/Document/programs/Python /Users/Document/Python
これでOK
-f
オプション
作成しようとしたシンボリックリンクがあっても強制的に作成する
リンクファイルと同じ名前のファイルがあっても強制的に上書きする
$ ln -sf from.txt to.txt
シンボリックリンクについては以下の記事でざっくりと解説している。
参考文献
datatimeモジュール - Python
入門 Python 3 に記載されていた日付と時刻の扱いについてまとめてみた。忘れてもいいようにメモとして残しておく。
Pythonで日時や時刻を扱うときの一つの方法として、標準モジュールのdatetime
モジュールがある。このモジュールには主なオブジェクト(クラス?)が4つある。
date
...年月日を扱うtime
...時分秒を扱うdatetime
...日付と時刻を扱うtimedelta
...日付と時刻の間隔を扱う
まずはdateオブジェクトから。
date
dateオブジェクトは年月日を指定することで生成できる。年月日はぞれぞれ属性として取り出せる。
>>> from datetime import date >>> birthday = date(1998, 3, 24) >>> birthday datetime.date(1998, 3, 24) >>> birthday.year 1998 >>> birthday.month 3 >>> birthday.day 24 >>> birthday.isoformat() '1998-03-24'
birthday.isoformat()
で日付の文字列を取得できる。ISOとは日時表現の国際標準でISO 8601のこと。
また、dateオブジェクトの範囲は以下のようになっているため紀元前の日付や天文学的な時間の計算(?)ではdateオブジェクトは使えない。
>>> date.min datetime.date(1, 1, 1) >>> date.max datetime.date(9999, 12, 31)
次は、日付と時刻の間隔を扱えるtimedeltaオブジェクト。
timedelta
次のソースではtoday()
メソッドを使って今日の日付を取得している。
>>> from datetime import date >>> now = date.today() >>> now datetime.date(2017, 10, 9)
次に、timedelta
オブジェクトを使い、今日の1日後、7日後、1日前の日付を取得する。
>>> from datetime import timedelta >>> one_day = timedelta(days=1) >>> tomorrow = now + one_day >>> tomorrow datetime.date(2017, 10, 10) >>> now + (7 * one_day) datetime.date(2017, 10, 16) >>> yesterday = now - one_day >>> yesterday datetime.date(2017, 10, 8)
timedeltaオブジェクトを使い、演算ができるのは直感的でいいと思った。
次は、時刻を扱うためのtime
オブジェクト。
time
>>> from datetime import time >>> noon = time(12, 0) >>> noon datetime.time(12, 0) >>> noon.hour 12 >>> noon.minute 0 >>> noon.second 0 >>> noon.microsecond 0
timeオブジェクトを生成するときには大きな単位から順に指定する(時, 分, 秒, マイクロ秒)。すべての引数の値は0がデフォルトとなっているため、省略された場合には0になる。
また、時、分、秒、マイクロ秒のそれぞれはプロパティで定義されているため、簡単に取得できる。※ マイクロ秒の値はコンピュータの内と全く同じ値にはなっていないことに注意すること。
次は、日時と時刻を扱うためのdatetime
オブジェクト。
datetime
次のようにしてdatetimeオブジェクトを作成できる。この例では2017年1月2日3時4分5秒6μ秒のdatetimeオブジェクトを作っている。
>>> from datetime import datetime >>> some_day = datetime(2017, 1, 2, 3, 4, 5, 6) >>> some_day datetime.datetime(2017, 1, 2, 3, 4, 5, 6) >>> some_day.isoformat() '2017-01-02T03:04:05.000006'
datetime.isoformat()
メソッドでISOの書式の文字列が取得できる。T
が日付と時刻の境目となっている。
現在の日時と時刻を取得するためにはnow()
メソッドを使う。
>>> from datetime import datetime >>> now = datetime.now() >>> now datetime.datetime(2017, 10, 9, 23, 17, 23, 376254)
また、年、月、日、時、分、秒、マイクロ秒はプロパティとして定義されているため簡単に取得できる。
>>> now.year 2017 >>> now.month 10 >>> now.day 9 >>> now.hour 23 >>> now.minute 17 >>> now.second 23 >>> now.microsecond 376254
datetime.combine()
メソッドを使うことでdateオブジェクトとtimeオブジェクトを結合してdatetimeオブジェクトを生成できる。
>>> from datetime import datetime , time, date >>> t = time(23, 30) >>> this_day = date.today() >>> dt = datetime.combine(this_day, noon) >>> dt datetime.datetime(2017, 10, 9, 23, 30) >>> dt.isoformat() '2017-10-09T23:30:00'
この例ではマイクロ秒を指定していないため、datetime.isoformat()
メソッドで取得できる値もマイクロ秒は含まれていない。
逆に、date()
、time()
メソッドを使えばdatetimeからdate、timeをちゅうしゅつできる。
>>> dt.date() datetime.date(2017, 10, 9) >>> dt.time() datetime.time(23, 30)
週番号を取得 (2017/10/13 追記)
datetimeオブジェクトで週番号を取得するにはdatetime.weekday()
メソッドを使う。(datetime.weekday)
>>> from datetime import datetime >>> dt = datetime.now() >>> dt datetime.datetime(2017, 10, 13, 8, 0, 25, 26142) >>> dt.weekday() 4
weekday()
で取得できる週番号は「0が月曜日」、「6が日曜日」となっている。4ということは金曜日ということになる。
参考文献
- 作者: Bill Lubanovic,斎藤康毅,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/12/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る
GitHubのリポジトリ内のファイル単体をダウンロードする
ファイルを表示したときのRaw
ボタンを押した後に表示されるページのURLをwget
コマンドに渡せばダウンロードできる。
例
$ wget https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh
参考文献
リモートブランチの状態を巻き戻す
手順としては
- リモートブランチと同じ状態にする
- 巻き戻すリモートブランチのバックアップ用のブランチを作成
- ローカルブランチを巻き戻したいところまで戻す
- 巻き戻すリモートブランチを削除
- ローカルブランチをリモートにプッシュ(ブランチを作成)
- バックアップ用のブランチを削除
今回はmaster
ブランチを巻き戻したいとする。
リモートブランチと同じ状態にする
$ git pull origin master
リモートブランチのバックアップ作成
$ git push origin master:master_bak
ローカルブランチを巻き戻したいところまで戻す
2つ前に戻したいとする。
$ git reset HEAD~2
巻き戻す対象のリモードブランチを削除
$ git push origin :master
ここで、次のようなエラーが出た場合、そのリモートブランチがGitHubなどでデフォルトのブランチに設定されている可能性がある。GitHubでデフォルトをバックアップ用ブランチにして、再度コマンドを実行する。
ローカルブランチをリモートにプッシュ(ブランチを作成)
$ git push origin master
バックアップ用のブランチを削除
$ git push origin :master_bak
以上
参考文献
2つ以上前のコミットのメッセージを修正する
1つ前のコミットのメッセージを修正
$ git commit --amend
2つ以上前のコミットのメッセージを修正
rebase -i
を使う。
以下のような履歴になっているとする。
$ git log commit c2f0fceb7ef52e5155fea67c7370bd318597ec30 (HEAD -> master) Author: t-ohsaka <t-ohsaka@plus-bm.jp> Date: Thu Oct 12 17:56:35 2017 +0900 update あにょはせよ 追加 commit 6e66b1b05561438535344fd310b8ec1fac95ee3c Author: t-ohsaka <t-ohsaka@plus-bm.jp> Date: Thu Oct 12 17:55:28 2017 +0900 update こんにちは 追加 commit 7c27b02aebf1579518a35373e1f772b0411eede8 Author: t-ohsaka <t-ohsaka@plus-bm.jp> Date: Thu Oct 12 17:54:41 2017 +0900 add hello.txt
2つ目のコミットのメッセージを"こんにちは!"にしたいとする。
rebase -i
でどのコミットのメッセージを変更するかを指定する。
$ git rebase -i HEAD~2
すると、エディタが起動する
pick 6e66b1b update こんにちは 追加 pick c2f0fce update あにょはせよ 追加 ...
メッセージを修正したいコミットのpick
部分をedit
に変える。
edit 6e66b1b update こんにちは 追加 pick c2f0fce update あにょはせよ 追加 ...
変更したら、保存して終了する。
次に、いつものように以下のコマンドを実行して、メッセージを修正する。
$ git commit --amend
変更を確定させる。
$ git rebase --continue
これで、コミットメッセージが変わったはず。
参考文献
iTerm2を入れてみた
ここからダウンロードしてインストールする。
無音にする
Preferences > Terminal > Notifications > Silence bell にチェックする
カラースキーマを変更する
ここをgit clone
し、好きなカラースキーマを適用する。
$ git clone https://github.com/mbadolato/iTerm2-Color-Schemes.git
今回はGruvbox
を適用してみる。
iterm2 > schemes > Gruvbox Dark.itermcolors
をダブルクリックしてiTerm2にインポートする。
Preferences > Profiles > Colors > Color Presets > Gruvbox Dark を選択。
コマンドラインの色を設定する。
$ echo export CLICOLOR=1 > ~/.bash_profile
zshを使っている場合には.zshrc
にする。
すごい見やすくなった!!
ターミナルの $ より前の表示を変更する。
t_MBP:~ tamago324$ ls
Python Go
t_MBP:~ tamago324
の部分の表示を変更する。この設定は環境変数のPS1
に設定されている。
デフォルトでは
$ echo $PS1 \h:\W \u\$
となっている。
\h
はホスト名を表している。
\W
カレントディレクトリを表している。これは必須。
\u
は現在ログインしているユーザー名。
自分はシンプルに以下のようにした。.bash_profile
に追記する。
export $PS1=':D \W $'
このように表示される。
:D ~ $
新規タブのディレクトリをカレントディレクトリのままで表示
Preferences > General > Reuse previous session's directory
にチェックする。
- 2017/10/12 追記
Gitのブランチ情報を表示
こちらを参考にさせていただきました。
git-prompt
というものがあるらしい。ここからダウンロードして、.bash_profile
に少し記述するだけで表示されるようになる。
まずは、git-prompt.sh
をダウンロードする
~/.bash $ wget https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh
~/.bash
に配置した。
次に~/.bash_profile
を編集する。
source ~/.bash/git-prompt.sh GIT_PS1_SHOWDIRTYSTATE=true export PS1=':D \W\[\033[1;31m\]$(__git_ps1)\[\033[00m\] \$'
GIT_PS1_SHOWDIRTYSTATE
でaddされてない変更(unstaged)があったとき"*"を表示する、addされているがcommitされていない変更(staged)があったとき"+"を表示する。
\[\033[1;31m\]$(__git_ps1)\[\033[00m\]
で赤色でブランチの情報が表示される。
これでブランチが表示された!