20200722のGitに関する記事は12件です。

Dotfiles をエレガントにマネージメントする

jitakutaiki_stayhome.png

なんか横文字かぶれみたいな標題ですが(笑)
知っている方には今更な話でしょうけども、 コピペにもシンボリックリンクにも他ツールにも依存もせずに .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 を活用した前掲のソリューションというわけです
こちら でも紹介されてますね。やはり元ネタは冒頭のリンク先のようです

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【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のリポジトリを複製する。(ダウンロードみたいなイメージです)

1.jpg

取り出すフォルダを右クリックし、Git クローン(複製)

33.jpg

URL欄に、githubなどのリポジトリのURLを入力
「OK」をクリック

3.jpg

そうすうるとこんなウィンドウが。

4.jpg

クローンが完了したみたいです。

5.jpg

先ほどデスクトップに作成した
「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.md
edited in 2020.07.22

上記を追記します。

6.jpg

ファイルを保存するとファイル名に赤文字で「!」があると思います。

7.jpg

ファイルを「右クリック」して Git コミット(C) master をクリック。

8.jpg

「メッセージ」に「edited in 2020.07.22」と記載。
「コミットしてプッシュ」を押下。

10.jpg

プッシュが完了したようです。

githubを見てみると、、

11.jpg

README.mdに追記した部分とメッセージに記載したものが
が反映されているようです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【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のリポジトリを複製する。(ダウンロードみたいなイメージです)

1.jpg

取り出すフォルダを右クリックし、Git クローン(複製)

33.jpg

URL欄に、githubなどのリポジトリのURLを入力
「OK」をクリック

3.jpg

そうすうるとこんなウィンドウが。

4.jpg

クローンが完了したみたいです。

5.jpg

先ほどデスクトップに作成した
「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.md
edited in 2020.07.22

上記を追記します。

6.jpg

ファイルを保存するとファイル名に赤文字で「!」があると思います。

7.jpg

ファイルを「右クリック」して Git コミット(C) master をクリック。

8.jpg

「メッセージ」に「edited in 2020.07.22」と記載。
「コミットしてプッシュ」を押下。

10.jpg

プッシュが完了したようです。

githubを見てみると、、

11.jpg

README.mdに追記した部分とメッセージに記載したものが
が反映されているようです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【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のリポジトリを複製する。(ダウンロードみたいなイメージです)

1.jpg

取り出すフォルダを右クリックし、Git クローン(複製)

2.jpg

URL欄に、githubなどのリポジトリのURLを入力
「OK」をクリック

3.jpg

そうすうるとこんなウィンドウが。

4.jpg

クローンが完了したみたいです。

5.jpg

先ほどデスクトップに作成した
「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.md
edited in 2020.07.22

上記を追記します。

6.jpg

ファイルを保存するとファイル名に赤文字で「!」があると思います。

7.jpg

ファイルを「右クリック」して Git コミット(C) master をクリック。

8.jpg

「メッセージ」に「edited in 2020.07.22」と記載。
「コミットしてプッシュ」を押下。

10.jpg

プッシュが完了したようです。

githubを見てみると、、

11.jpg

README.mdに追記した部分とメッセージに記載したものが
が反映されているようです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【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)
0.jpg

詳細な設定は下記を参考にしました。
TortoiseGitのインストール方法(日本語化まで)@Windows

TortoiseGitのインストール

1.jpg

1.jpg

ダウンロードしたインストーラを起動。

2.jpg

3.jpg

インストール場所の変更の必要がなければそのまま[Next]をクリック

4.jpg

5.jpg

tortoisegit日本語パッケージのインストール

同じページで下の方に行くと「 Language Packs」があります。
その中で日本語のパッケージをダウンロード。
(2020/07/22現在 最新バージョンは、TortoiseGit-LanguagePack-2.10.0.0-64bit-ja)

6jpn.jpg

ダウンロードしたインストーラを起動。

7jpn.jpg

8jpn.jpg

ここは基本的に全て「OK」のままで問題ありません。

3.jpg

インストール完了後に任意のフォルダ、ファイルで

右クリック → TortoiseGit → Setting

4.jpg

General → Language → 日本語 を選択して「OK」。

5.jpg

ちゃんと日本語になっています。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

コミットの取り消しとファイルを元に戻す方法

コミットの取り消し

直前のコミットをなしにするには

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で任意のコミットまで戻ることができるようになりました!
たとえ、間違えても落ち着いて対処しましょう!!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

githubから特定のファイルだけダウンロードする方法

作業中何故か特定のファイルだけ削除してしまったので
gitからそこだけダウンロードしたので方法を記録。

terminalでwgetコマンドを使う

githubを開く

github内で該当ファイルを開き、右上にある「Raw」ボタンを押す。

すると中身のコードが記述された画面が表示されるので
そのページのURLをコピーする。

terminalを開く

$wget [コピーしたURL] -P [保存先URL]

これでカレントディレクトリに該当ファイルをダウンロードできる。
スクリーンショット 2020-07-22 15.10.29.png

▼wgetオプションによる保存先指定
https://orebibou.com/ja/home/201610/20161020_002/

この方法だとフォルダごとのダウンロードは不可。
svnを利用した方法などがあるようですがそれは後日追記することにします。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

gitで利用するエディタをvimにする

  • デフォルトだとNanoエディタが起動する
  • wsl2
git config --global core.editor /usr/bin/vim
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ポートフォリオ作成なら、git reset が便利でした

ポートフォリオ作成中、rubocopを導入してみたところ
エラーがすごい多くて、rubocop -aをして修正したところ
レイアウトが崩れ、ajaxで動いていたイイネやフォローやコメント投稿削除機能が動かなくなりました。

git revertかresetどっちで戻る?

rubocop -aで修正したコミットを遡ることにしました。
そこで、git revertgit resetを使用するか迷いました。

複数コミット戻すなら、git resetが簡単

私は気づかず作業を続けていたので、10コミットほど遡らなければならなかったです。
git revertだと履歴が全部戻ることと、いちいちgit revert [コミットID]を10回打たねばならなかったので
今回は、git reset --hard HEAD~[戻るコミット数]で一気に戻ることにしました。

作業

git log
git 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

修正が適用される。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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動画のようにリストアップします。

unigithistoryviewer.gif

表示内容は以下です。

  • commit日時(年-月-日)
  • author
  • コミットメッセージ

Countに最大表示履歴数を設定でき、また、左端のCボタンをクリックするとコミットハッシュをクリップボードにコピーする事ができます。

インストール方法

Unity2019.3.4f1以降1の場合はUnityPackageManagerでインストール可能です。

  • UnityPackageManager(以下:UPM)からインストール
  • manifest.jsonを書き換えてインストール

Unity2019.3.4f1未満の場合は従来のunitypackageをインポートしてインストール出来ます。

  • unitypackageをインポート

このどれかを選んで頂ければと思います。

UPMからインストールする方法


Add Package Git URLを選択します。


以下のパッケージ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未満の環境の場合はunitypackageReleaseページからダウンロードできますので、そちらをインポートしてインストールしてください。

UniGitHistoryViewerを使うメリット

このツールを使うメリットは複数の非エンジニアメンバーがUnityを触る場合に生まれます。
非エンジニア同士、誰がどのファイルを触ったかという事実は重要で、何かトラブルが発生した際に、非エンジニアメンバーのみで安全に調査できる情報(ここでは履歴情報)が増える事で、エンジニアが介入することなく原因の特定をする可能性が上がります。

僕はエンジニア、非エンジニアがそれぞれ並列して仕事できている状態がベストだと考えています(時と場合にもよりますが)。
その状態を促進させるツールの1つになれば良いなと思っています。

最後に

よろしければ使って頂きバグがあればPR、issueをお待ちしております。
https://github.com/baobao/UniGitHistoryViewer
よろしければStarをください。


  1. Unity2019.3.4f1以降でないとPackage URLのクエリパラメータに対応していないため 

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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/kubernetesgit 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 などとすることで、タグが付与された時点のコードを使用できる。これによって、リリースされた時点のコードを取得できる。

ブランチのリストを表示した様子

s-branch.png

タグのリストを表示した様子

s-tag.png

まとめ

branchは、その名の通り、分岐を意味する。そのため、branch を作成した後、branch に対して、更新を続けていくことができる。一方、tag を指定して branch のようにクローンやチェックアウトができても、しかし、tag に更新を加えることは出来ない、いわゆる スナップショットのような存在とみなせる。

参考資料

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

個人だけで開発する人向けの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.txt

2つや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で加えて変更を取り込むときなどに使います。
  • このコマンドを打った後は②から④を繰り返すことができます。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む