読者です 読者をやめる 読者になる 読者になる

IMUZA.com

Joomla!によるウェブ制作, PHP, Javascript, CSS

はてなブログ

はてなブログ テーマ制作
・とことこ with Menubar
・Simple Responsive with Menubar
・Mobile-First Responsive
・Hyperspace

Joomla!

Joomla! によるウェブ制作
・テンプレート自作
・モジュール自作
・Joomla!でサイト構築

Web Tips

ウェブサイトづくりに役立つかも
・Javascript
・CSS

Windows, Linux

Windows10
Plamo Linux

Git reset, Git checkout ステージングの取り消し、ファイル変更の取り消し

プログラマーじゃないけど Git 入門

前記事 > git add, commit 後の履歴を git log で見る

「プログラマーじゃないけど Git 入門」

前記事で日本語が文字化けしていたのは、サンプルテキストが sjis で保存されていたからでした。utf-8 で保存すれば、git logの出力でも文字化けしません。

f:id:ausnichts:20170327132111p:plain

こんな感じで「日本語テキストを追加してみる」と表示されています。



git log のオプションを試してみる

git log をオプションなしで実行しますと、

f:id:ausnichts:20170318202212p:plain

上から(保存したファイル内容?)のチェックサム、ユーザ名、コミットした日付、コミットメッセージを表示ます。


-pオプションをつけますと、

f:id:ausnichts:20170327131817p:plain

その下に各コミットで変更された差分が表示されます。上の画像で言いますと、2回目のコミットで「日本語テキストを追加してみる」が書き加えられたことがわかります。


さらに、最上段の画像になりますが、-1(数字)をつけますと、直近のコミットからその数字分のコミットを表示します。


-statオプションは、

f:id:ausnichts:20170327134805p:plain

・
・
 sample.txt | 1 +
 1 file changed, 1 insertion(+)
・
・
 sample.txt | 4 ++++
 1 file changed, 4 insertions(+)

と、各コミットで変更された行数を表示します。


git reset でステージングエリアから解除する

git addした後のgit statusunstageの方法が示されています。

f:id:ausnichts:20170327150939p:plain

git reset HEAD sample.txtで、確かにgit addする前に戻ります。


git checkout でファイルの状態を戻す

ファイルへの変更を取り消して元に戻したい場合はどうするんでしょう?


それもgit statusに表示されています。上の画像の続きですが、

f:id:ausnichts:20170327152255p:plain

git checkout -- sample.txtで確かに変更前に戻ります。

ただし、Git のドキュメントにこう書かれています。

ここで理解しておくべきなのが、git checkout — [file]は危険なコマンドだ、ということです。 あなたがファイルに加えた変更はすべて消えてしまいます。変更した内容を、別のファイルで上書きしたのと同じことになります。そのファイルが不要であることが確実にわかっているとき以外は、このコマンドを使わないようにしましょう。
やりたいことが、「ファイルに加えた変更はとっておきつつ、一時的に横に追いやっておきたい」ということであれば、Git のブランチ機能 で説明する stash やブランチを調べてみましょう。一般にこちらのほうがおすすめの方法です。


次はブランチの勉強ですね。


git add, commit 後の履歴を git log で見る

プログラマーじゃないけど Git 入門

前記事 > Git をローカルで試してみる(使い方 初歩の初歩)

「プログラマーじゃないけど Git 入門」
ローカルでもう少し試してみます。



ファイルに変更を加え add, commit する

f:id:ausnichts:20170318195336p:plain
sample.txt に変更を加えて、add, commit してみます。


f:id:ausnichts:20170318195454p:plain
それによって変化のあったファイル類です。


f:id:ausnichts:20170327113428p:plain
.git\logs\HEADには、やはり2回目のコミットが記録されています。

まずひとつ前のコミットのディレクトリとファイル、そしていまコミットしたディレクトリとファイル、ユーザ名とメアド、時間、コミットメッセージが1行ずつ記録されています。


git log コミット履歴を見る

f:id:ausnichts:20170318202212p:plain
git logで現在のコミット履歴を見た結果です。


f:id:ausnichts:20170318203237p:plain
-pオプションでファイルの変更点が見られます。

ファイルに日本語を使っていますので文字化けしています。

Git をローカルで試してみる(使い方 初歩の初歩)

プログラマーじゃないけど Git 入門

前記事 > Git 初期設定

「プログラマーじゃないけど Git 入門」
次は、ローカルで Git を使ってみましょう。



git init

Git bash(インストールによってはコマンドプロンプトでもOK)を立ち上げ、適当なディレクトリに移動した後、

$ mkdir git-sample

$ cd git-sample/

$ git init
Initialized empty Git repository in ./git-sample/.git/

として、カレントディレクトリにリポジトリをつくります。表現の仕方はあるいは、ディレクトリをリポジトリ化するといいますか、これにより、カレントディレクトリに .gitディレクトリをつくられ、カレントディレクトリ内がバージョン管理できるようになります。.gitディレクトリの中は前回見たとおりです。


git add

カレントディレクトリに適当なテキストファイルをつくります。Windows ですから GUI のエディタで sample.txt などと保存し、続いて、

$ git add sample.txt

とします。このコマンド git addは、該当ファイル(指定によってはディレクトリ)をステージングエリアに追加すると表現されるようです。

Pro Git 日本語版電子書籍にある次の画像がそのイメージです。Stage Fixed と記載された行為になります。

f:id:ausnichts:20170312125304p:plain

Git - Gitの基本


ファイルをワーキングエリアからステージングエリアに登録し追跡を開始するという理解でいいと思います。git statusで状態を見てみますと、

$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

        new file:   sample.txt

と表示され、sample.txt をコミットする準備ができている、つまりステージングエリアにあるということです。

で、そのときどんなファイルが作られるか見てみますと、

f:id:ausnichts:20170312130144p:plain

.git\index.git\objects\f3\ハッシュ値? の2つのファイルがつくられます。再度git addとすればこの2つのファイルが上書きされます。


git statusのメッセージに、unstage の説明がありましたので、試しにやってみましょう。

$ git rm --cached sample.txt
rm 'sample.txt'

$ git status
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        sample.txt

nothing added to commit but untracked files present (use "git add" to track)

状態を見てみますと、Untracked つまり追跡されていないファイルがあるに変わります。.git内のファイルは、indexが書き換えられるだけです。

ということは、indexファイルにステージングエリアの情報が書き込まれているということでしょう。

再度git addしておきましょう。


git commit

次は、ステージングエリアのファイルの状態を保存するgit commitです。git commitだけですと、コミットメッセージを求めるエディタが立ち上がりますので、通常はgit commit -m "commit massage"とします。

$ git commit -m "最初のコミット"
[master (root-commit) 2d88c89] 最初のコミット
 1 file changed, 2 insertions(+)
 create mode 100644 sample.txt

試しに日本語のメッセージでコミットしてみました。ログを見てみます。

$ git log
commit 2d88c89aaa4aaebf88de79c433d10792b0a2ac8c
Author: ******* <*******@gmail.com>
Date:   Sun Mar 12 15:54:46 2017 +0900

    最初のコミット

これで sample.txt の現在の状態を保存し、Git で管理できるようにしたということでいいと思います。

.gitディレクトリ内を見てみましょう。

f:id:ausnichts:20170312202730p:plain


これを見ますと、多分、.git\objects\2d\88c89aaa4aaebf88de79c433d10792b0a2ac8cが現在のファイル状態が保存されている実態でしょう。

そして、.git\refs\heads\masterには2d88c89aaa4aaebf88de79c433d10792b0a2ac8cという数値が保存されていますので、これは上の実態のディレクトリとファイル名なんだと思います。

.git\COMMIT_EDITMSGにはコミットメッセージが保存されています。この場合は、

最初のコミット

となっています。

.git\logs\HEAD.git\logs\refs\heads\masterは現時点ではまったく同じ内容のファイルでログとして出力されるようです。コミットを重ねていくとどちらかが変化していくのかもしれません。

今回はここまでです。

Mactype と AVG は相性悪し/Avira を入れてみる

Windows, Linux

2,3日前だったと思いますが、何かの拍子に Firefox や Chrome Canary(安定版に不具合があり Canary 使用中)が立ち上がらなくなりました。他のソフトを試してみますと、立ち上がるものと立ち上がらないものがあり全く原因が分かりません。

サブマシンですので、とりあえずそのままにしておいたのですが、今いろいろ調べたところ、原因は Mactype と AVG のバッティングでした。


Windows で何かトラブルが起きる時は、だいたいアンチウィルスかシステムそのものに手を入れているソフトですから、まずは Mactype を終了させましたら問題なく立ち上がってきました。

次にアンチウィルス AVG を一旦削除し、Mactype を稼働させて試してみましたら、どのソフトも問題なく立ち上がります。

ということで、Mactype と AVG は相性悪しという結論になりました。


さて、どうしましょう?

AVG は XP(だったか記憶にありませんが)でフリー版を使い始めてからの付き合いですが、これでは使えませんね。


とりあえず、Avira のフリー版を入れてみました。

f:id:ausnichts:20170310120737p:plain

インストールプログラムを立ち上げますと、こんなダイアログが出てどうするんだろうとしばらく待ってよく読んでみますと、Password Manager を入れるかという質問ですね。ついついインストールをクリックしてしまいそうになりますが、必要ない場合は、「 > 」で進みますと、いろいろ追加プログラムを入れるかと聞いてきます。すべてパスして待っていますと、


f:id:ausnichts:20170310121218p:plain

インストールが完了し、開始をクリックしますと、


f:id:ausnichts:20170310121254p:plain

設定画面になります。とりあえずは何もせず様子をみてみましょう。