- 投稿日:2020-07-22T19:38:14+09:00
Dotfiles をエレガントにマネージメントする
なんか横文字かぶれみたいな標題ですが(笑)
知っている方には今更な話でしょうけども、 コピペにもシンボリックリンクにも他ツールにも依存もせずに.vimrc
.bashrc
等を github/gist 等でバージョン管理する術の紹介ですhttps://news.ycombinator.com/item?id=11070797
I use:
git init --bare \$HOME/.myconf
alias config='/usr/bin/git --git-dir=\$HOME/.myconf/ --work-tree=\$HOME'
config config status.showUntrackedFiles no
where my ~/.myconf directory is a git bare repository. Then any file within the home folder can be versioned with normal commands like:
config status
config add .vimrc
config commit -m "Add vimrc"
config add .config/redshift.conf
config commit -m "Add redshift config"
config push
And so one…
No extra tooling, no symlinks, files are tracked on a version control system , you can use different branches for different computers, you can replicate you configuration easily on new installation.Dotfiles を github 等のリモートリポジトリでバージョン管理していくのはよい発想ではありますが、ローカルで肝心の読み込みをさせるために
$HOME
に配置する必要があります。
通常だと 作業ディレクトリ ($HOME
ではない任意のどこか)にあるソースをいちいち$HOME
に持っていくとか、同期したりしなければならないことになろうかと思います。
そのためにあっちからこっちにコピペしたりリンクを張ったりするわけですが、それがバカバカしくなってくるのですよ。それならばと、スクリプトを書けば自動化出来るということもあるかもしれません。
けれどもよくよく考えてみれば、そんなつまらないコピペやリンクの生成スクリプトなんか書きたくないというのがエンジニア心というもの。
かといって追加のなんらかのツールとかに依存するのもイヤ
どうにかして管理負荷を最小化しながらも都合は良くできないのか?そこで bare を活用した前掲のソリューションというわけです
こちら でも紹介されてますね。やはり元ネタは冒頭のリンク先のようです
- 投稿日:2020-07-22T19:16:22+09:00
【Windows10】TortoiseGitを基本的な機能を使ったみた。
【開発環境】
Windows 10 HOME
Git-2.27.0-64-bit
TortoiseGit 2.10.0.2 - 64-bit【目次】
項目 - はじめに - 使い方 - git clone - git push はじめに
以前仕事でTortoiseGitを使ったけど
暫く使っていないので基本的な操作を手順もかねて使ってみる。
TortoiseGit、Gitはインストール済でGithubにもアカウント登録済の前提で。使い方
【準備】
デスクトップにローカル用のフォルダ「git」を作成。git clone
- Gitのリポジトリを複製する。(ダウンロードみたいなイメージです)
取り出すフォルダを右クリックし、Git クローン(複製)
URL欄に、githubなどのリポジトリのURLを入力
「OK」をクリックそうすうるとこんなウィンドウが。
クローンが完了したみたいです。
先ほどデスクトップに作成した
「git」フォルダの中にファイルがありクローンが完了しました。git push
-ローカルリポジトリの(修正した)内容をリモートリポジトリに送信する。
先ほどクローンしたフォルダの中に
README.mdがあるのでそれを追記してみます。README.md# stopwatchApp made in 2015.11.17 this app is so old that when installing this app. you will see message just follwing message. so please ignore.README.mdedited in 2020.07.22上記を追記します。
ファイルを保存するとファイル名に赤文字で「!」があると思います。
ファイルを「右クリック」して Git コミット(C) master をクリック。
「メッセージ」に「edited in 2020.07.22」と記載。
「コミットしてプッシュ」を押下。プッシュが完了したようです。
githubを見てみると、、
README.mdに追記した部分とメッセージに記載したものが
が反映されているようです。
- 投稿日:2020-07-22T19:16:22+09:00
【Windows10】TortoiseGitを基本的な機能を使ったみた。part1
【開発環境】
Windows 10 HOME
Git-2.27.0-64-bit
TortoiseGit 2.10.0.2 - 64-bit【目次】
項目 - はじめに - 使い方 - git clone - git push はじめに
以前仕事でTortoiseGitを使ったけど
暫く使っていないので基本的な操作を手順もかねて使ってみる。
TortoiseGit、Gitはインストール済でGithubにもアカウント登録済の前提で。使い方
【準備】
デスクトップにローカル用のフォルダ「git」を作成。git clone
- Gitのリポジトリを複製する。(ダウンロードみたいなイメージです)
取り出すフォルダを右クリックし、Git クローン(複製)
URL欄に、githubなどのリポジトリのURLを入力
「OK」をクリックそうすうるとこんなウィンドウが。
クローンが完了したみたいです。
先ほどデスクトップに作成した
「git」フォルダの中にファイルがありクローンが完了しました。git push
-ローカルリポジトリの(修正した)内容をリモートリポジトリに送信する。
先ほどクローンしたフォルダの中に
README.mdがあるのでそれを追記してみます。README.md# stopwatchApp made in 2015.11.17 this app is so old that when installing this app. you will see message just follwing message. so please ignore.README.mdedited in 2020.07.22上記を追記します。
ファイルを保存するとファイル名に赤文字で「!」があると思います。
ファイルを「右クリック」して Git コミット(C) master をクリック。
「メッセージ」に「edited in 2020.07.22」と記載。
「コミットしてプッシュ」を押下。プッシュが完了したようです。
githubを見てみると、、
README.mdに追記した部分とメッセージに記載したものが
が反映されているようです。
- 投稿日:2020-07-22T19:16:22+09:00
【Windows10】TortoiseGitを使ったみた。
【開発環境】
Windows 10 HOME
Git-2.27.0-64-bit
TortoiseGit 2.10.0.2 - 64-bit
項番 目次 1 1. はじめに 2 2. 使い方 1. はじめに
以前仕事でTortoiseGitを使ったけど
暫く使っていないので基本的な操作を手順もかねて使ってみる。
TortoiseGit、Gitはインストール済でGithubにもアカウント登録済の前提で。2. 使い方
【準備】
デスクトップにローカル用のフォルダ「git」を作成。git clone
- Gitのリポジトリを複製する。(ダウンロードみたいなイメージです)
取り出すフォルダを右クリックし、Git クローン(複製)
URL欄に、githubなどのリポジトリのURLを入力
「OK」をクリックそうすうるとこんなウィンドウが。
クローンが完了したみたいです。
先ほどデスクトップに作成した
「git」フォルダの中にファイルがありクローンが完了しました。git push
-ローカルリポジトリの(修正した)内容をリモートリポジトリに送信する。
先ほどクローンしたフォルダの中に
README.mdがあるのでそれを追記してみます。README.md# stopwatchApp made in 2015.11.17 this app is so old that when installing this app. you will see message just follwing message. so please ignore.README.mdedited in 2020.07.22上記を追記します。
ファイルを保存するとファイル名に赤文字で「!」があると思います。
ファイルを「右クリック」して Git コミット(C) master をクリック。
「メッセージ」に「edited in 2020.07.22」と記載。
「コミットしてプッシュ」を押下。プッシュが完了したようです。
githubを見てみると、、
README.mdに追記した部分とメッセージに記載したものが
が反映されているようです。
- 投稿日:2020-07-22T16:27:43+09:00
【Windows10】TortoiseGitのインストール~日本語化までの方法
【開発環境】
Windows 10 HOME 64-bit
Git-2.27.0-64-bit
TortoiseGit 2.10.0.2 - 64-bit
TortoiseGit-LanguagePack-2.10.0.0-64bit-ja【はじめに】
ローカルの開発環境にTortoiseGitのインストールから日本語化までの手順を記載します。
だいたいこんな流れで。gitのインストール
TortoiseGitのインストール
tortoisegit日本語パッケージのインストールgitのインストール
下記のサイトからインストーラーをダウンロード
https://gitforwindows.org/(2020/07/22現在 最新バージョンは、Gitfor Windows Version 2.27.0)
詳細な設定は下記を参考にしました。
TortoiseGitのインストール方法(日本語化まで)@WindowsTortoiseGitのインストール
ダウンロードしたインストーラを起動。
インストール場所の変更の必要がなければそのまま[Next]をクリック
tortoisegit日本語パッケージのインストール
同じページで下の方に行くと「 Language Packs」があります。
その中で日本語のパッケージをダウンロード。
(2020/07/22現在 最新バージョンは、TortoiseGit-LanguagePack-2.10.0.0-64bit-ja)ダウンロードしたインストーラを起動。
ここは基本的に全て「OK」のままで問題ありません。
インストール完了後に任意のフォルダ、ファイルで
右クリック → TortoiseGit → Setting
General → Language → 日本語 を選択して「OK」。
ちゃんと日本語になっています。
- 投稿日:2020-07-22T15:57:58+09:00
コミットの取り消しとファイルを元に戻す方法
コミットの取り消し
直前のコミットをなしにするには
git reset --hard HEAD^・
--hard
は編集しファイルごとコミットが戻る
・--soft
は変種したファイルはそのままでコミットだけが戻る
・HEAD^
は直前のコミットという意味N番目のコミットに戻りたい場合は
git reflogで戻りたいコミット履歴を確認して、
git reset --hard HEAD@{number}で任意のところまで元に戻すusername@mbp% git reflog c48b6ef HEAD@{0}: commit : HTMLファイルを編集 3927a69 HEAD@{1}: commit : HTMLファイルを編集 username@mbp% git reset --hard HEAD@{1} HEAD is now at 3927a69 CDNを消してnpmを追最後に
もし、間違って--hardでファイルごと
一つ前のコミットの状態に戻っても
これでreflogとresetで任意のコミットまで戻ることができるようになりました!
たとえ、間違えても落ち着いて対処しましょう!!
- 投稿日:2020-07-22T15:13:22+09:00
githubから特定のファイルだけダウンロードする方法
作業中何故か特定のファイルだけ削除してしまったので
gitからそこだけダウンロードしたので方法を記録。terminalでwgetコマンドを使う
githubを開く
github内で該当ファイルを開き、右上にある「Raw」ボタンを押す。
すると中身のコードが記述された画面が表示されるので
そのページのURLをコピーする。terminalを開く
$wget [コピーしたURL] -P [保存先URL]
これでカレントディレクトリに該当ファイルをダウンロードできる。
▼wgetオプションによる保存先指定
https://orebibou.com/ja/home/201610/20161020_002/この方法だとフォルダごとのダウンロードは不可。
svnを利用した方法などがあるようですがそれは後日追記することにします。
- 投稿日:2020-07-22T13:45:49+09:00
gitで利用するエディタをvimにする
- デフォルトだとNanoエディタが起動する
- wsl2
git config --global core.editor /usr/bin/vim
- 投稿日:2020-07-22T13:02:49+09:00
ポートフォリオ作成なら、git reset が便利でした
ポートフォリオ作成中、rubocopを導入してみたところ
エラーがすごい多くて、rubocop -a
をして修正したところ
レイアウトが崩れ、ajaxで動いていたイイネやフォローやコメント投稿削除機能が動かなくなりました。git revertかresetどっちで戻る?
rubocop -aで修正したコミットを遡ることにしました。
そこで、git revert
かgit reset
を使用するか迷いました。複数コミット戻すなら、git resetが簡単
私は気づかず作業を続けていたので、10コミットほど遡らなければならなかったです。
git revert
だと履歴が全部戻ることと、いちいちgit revert [コミットID]
を10回打たねばならなかったので
今回は、git reset --hard HEAD~[戻るコミット数]
で一気に戻ることにしました。作業
git loggit reset --hard HEAD~10修正する
プッシュ
git add .git commit -m "git reset で修正を入れた"git push -f origin HEADマージ
git checkout [マージしたいブランチへ]git merge [修正ブランチ] -m "他ブランチへとマージする"git push -f origin HEAD修正が適用される。
- 投稿日:2020-07-22T11:12:09+09:00
UnityEditor上でgitのヒストリーを表示させるUniGitHistoryViewerを作りました
経緯
チーム開発をしていると作業ファイルごとのgitの履歴を知りたくなる事があります。
特に非エンジニアがUnityプロジェクトに対して画像の追加やPrefabの修正などをした時です。
ソースコードであればRiderなどのエディタに履歴閲覧機能が備わっている場合があるので問題はありません。
しかし画像などのバイナリファイルを調査する時は少し時間がかかります。
- シェルからgit logコマンドを実行して調査
- SourceTreeなどのGUIツールからgit log相当の機能を実行して調査
など
Riderでもバイナリファイルのgit履歴は調査可能ですが、Riderがインストールされていない非エンジニアは困ります。非エンジニアにgit logさせるのもハードルが高め。。。
理想はUnityEditor上からgitの履歴をサクッと確認できる事です。
ということで非エンジニア向けの「UniGitHistoryViewer」というものを作りました。
UniGitHistoryViewerとは
UniGitHistoryViewerとはUnityEditor上でサクッと任意のファイルまたはディレクトリのgit履歴を閲覧するエディタ拡張です。
使い方
Tools > UniGitHistoryViewer
から開きます。プロジェクトウィンドウでファイルまたはディレクトリを選択して
Check History
ボタンをクリックします。
すると履歴が以下のgif動画のようにリストアップします。表示内容は以下です。
- commit日時(年-月-日)
- author
- コミットメッセージ
Countに最大表示履歴数を設定でき、また、左端のCボタンをクリックするとコミットハッシュをクリップボードにコピーする事ができます。
インストール方法
Unity2019.3.4f1以降1の場合はUnityPackageManagerでインストール可能です。
- UnityPackageManager(以下:UPM)からインストール
- manifest.jsonを書き換えてインストール
Unity2019.3.4f1未満の場合は従来のunitypackageをインポートしてインストール出来ます。
- unitypackageをインポート
このどれかを選んで頂ければと思います。
UPMからインストールする方法
以下のパッケージURLを入力します。
https://github.com/baobao/UniGitHistoryViewer.git?path=Assets/UniGitHistoryViewer
を入力してAddボタンをクリックします。するとインストールが完了します。manifest.jsonを書き換えてインストールする方法
UPMを使わない場合はmanifest.jsonのdependenciesに以下を追加してインストールしてください。
"info.shibuya24.uni-git-history-viewer": "https://github.com/baobao/UniGitHistoryViewer.git?path=Assets/UniGitHistoryViewer"unitypackageをインポートしてインストールする方法
Unity2019.3.4f1未満の環境の場合はunitypackageをReleaseページからダウンロードできますので、そちらをインポートしてインストールしてください。
UniGitHistoryViewerを使うメリット
このツールを使うメリットは複数の非エンジニアメンバーがUnityを触る場合に生まれます。
非エンジニア同士、誰がどのファイルを触ったかという事実は重要で、何かトラブルが発生した際に、非エンジニアメンバーのみで安全に調査できる情報(ここでは履歴情報)が増える事で、エンジニアが介入することなく原因の特定をする可能性が上がります。僕はエンジニア、非エンジニアがそれぞれ並列して仕事できている状態がベストだと考えています(時と場合にもよりますが)。
その状態を促進させるツールの1つになれば良いなと思っています。最後に
よろしければ使って頂きバグがあればPR、issueをお待ちしております。
https://github.com/baobao/UniGitHistoryViewer
よろしければStarをください。
Unity2019.3.4f1以降でないとPackage URLのクエリパラメータに対応していないため ↩
- 投稿日:2020-07-22T08:28:12+09:00
git branch と tag の使い分け
git の branch と tag の使い分けが気になったので、Kubernetesプロジェクトを例に、整理してみた。プロジェクト毎の決め事だと思うので、必ずしもこの方法が正しいという訳ではない。一つの参考として見做して欲しい。
branch とは
ブランチとは、開発の本流から分岐し、本流の開発を邪魔することなく作業を続ける機能
tag とは
タグとは、歴史上の重要なポイントに印をつける機能です。よくあるのは、この機能を (v 1.0など) リリースポイントとして使うこと。
Kubernetesプロジェクトでの branch と tagの使い分け
このプロジェクトでは、全てのリリースの中で最新のコードが、masterにある。そして、各リリースで保守されている最新コードが、release-x.xx にある。例えば、
git clone http://https://github.com/kubernetes/kubernetes
やgit clone -b release-1.19 http://https://github.com/kubernetes/kubernetes
として ローカルにクローンしてビルドしても、動作するバージョンをビルドすることはできない。つまり、開発途上のコードだからである。tagは、v1.18.4 や v1.18.5 など、それぞれの マイナーバージョンの下のパッチバージョンに対して、tag が設定される。この tag を利用してクローンするには、
git clone -b <tag名> http://https://github.com/kubernetes/kubernetes
としてクローンされる。 または マスターをクローンした後、git checkout -b v1.18.4
などとすることで、タグが付与された時点のコードを使用できる。これによって、リリースされた時点のコードを取得できる。ブランチのリストを表示した様子
タグのリストを表示した様子
まとめ
branchは、その名の通り、分岐を意味する。そのため、branch を作成した後、branch に対して、更新を続けていくことができる。一方、tag を指定して branch のようにクローンやチェックアウトができても、しかし、tag に更新を加えることは出来ない、いわゆる スナップショットのような存在とみなせる。
参考資料
- Gitを使った分散開発管理7 – ブランチとタグを使う, https://dev.classmethod.jp/articles/git-branchtag/
- 投稿日:2020-07-22T03:09:47+09:00
個人だけで開発する人向けのGitコマンドまとめ
前提
次のような方を対象に想定して書きました。
- 個人だけで開発する(Branchを複数作らない)
- Githubに自分のリモートリポジトリを持っている
- cmdかGit Bashでgitコマンドが実行できる状態
- Gitに関して詳しい情報や深い話はとりあえず後回しで良い
基本的にコマンド表記と箇条書きでしか記載しません。
ほぼ私の備忘録なので非常に粗野ですがよかったら参考にしてください!コマンド
①ローカルリポジトリとリモートリポジトリを繋げる
$ git remote add origin https://github.com/username/repository.git
- 上の例で
username
の部分は自分のユーザー名、repository
の部分はリモートリポジトリの名前を書いてください。- ここまででリモートリポジトリに上げることは完了です。
②ローカルリポジトリの変更をリモートリポジトリに上げる
変更した全部の内容をコミットとしてまとめる場合
$ git add .ファイルやフォルダに分けてコミットを作りたい場合
$ git add fileA.txt2つや3つののファイルやフォルダをまとめたい場合
$ git add fileA.txt folderX ./folderY/fileB.txtこの例は次の3つをまとめてコミットを作っています。
- ローカルリポジトリのフォルダ内にあるfileA.txt
- 同じくローカルリポジトリのフォルダ内にあるfolderX
- ローカルリポジトリの1つ下の階層にあるfolderYの更に下にあるfileB.txt
③コミットを作る
$ git commit -m 'add new file'
- 上のコマンドの
add new file
は変更内容に関するメッセージです。- 自分の好きな文章で大丈夫です。
- 一言で書けるのが望ましいようです。
- 一応下の例のように日本語で書いても大丈夫みたいです。
$ git commit -m '新規ファイルを追加'④ローカルで作ったコミットをリモートリポジトリに上げる
$ git push origin master
- 上の例で
origin
の部分は追加したリモートの名前を書いてください。master
の部分はbranch名を書いてください。- branch名については個人で開発する範囲ならば、基本的には
master
だけだと思います。- ネットに繋がっていないなどの障害がなればパスワードの入力が要求されます。
- 入力で来たらEnterキーを押します。
- 入力している文字は表示されませんが、入力されているし間違っていたら再度入力要求してくれるの安心してください。
- ここまででリモートリポジトリに上げることは完了です。
- 単にバージョン管理をしたいだけという場合は、最初だけ①をやって②から④を繰り返せばOKです。
⑤リモートリポジトリをローカルリポジトリとして取ってくる
$ git clone https://github.com/username/repository.git
- 上の例で
username
の部分は自分のユーザー名、repository
の部分はリモートリポジトリの名前を書いてください。- ここまででリモートリポジトリをローカルリポジトリへ取ってくることは完了です。
- 取ってきたリモートリポジトリはリモートリポジトリ名が付いたフォルダとして保存されます。
- 今まで開発用に使っていなかったPCにリモートリポジトリを取り込むときなどに使います。
- 取り込んだ後は②から④を繰り返すことができます。
⑥リモートリポジトリの変更内容をローカルリポジトリに取ってくる
$ git pull origin master
- 上の例で
origin
の部分は追加したリモートの名前を書いてください。master
の部分はbranch名を書いてください。- branch名については個人で開発する範囲ならば、基本的には
master
だけだと思います。- ネットに繋がっていないなどの障害がなればパスワードの入力が要求されます。入力で来たらEnterキーを押します。
- 入力している文字は表示されませんが、入力されているし間違っていたら再度入力要求してくれるの安心してください。
- 別のPCで加えて変更を取り込むときなどに使います。
- このコマンドを打った後は②から④を繰り返すことができます。