gitの初期化およびプロジェクトの作成
プロジェクトの初期化およびビルド
これには2つの方法があり、1つはinitで、もう1つはcloneです
init はすでに上の例で使われています。プロジェクトディレクトリに移動して $ git init を実行するというものです。
Cloneは一般的に、リモートサーバーにある既存のリポジトリをローカルマシンにクローンするもので、次のようなコマンドで実行します。
<テーブル$ git clone git://github.com/git/hello-world.git
hello-world' にクローンする...
リモートで オブジェクトを数えています。158個、完了しました。
リモートで オブジェクトを圧縮しています。100% (79/79), 完了。
リモートで 合計158(デルタ54)、再利用154(デルタ54)
オブジェクトを受信する。100% (158/158), 15.63 KiB, 完了しました。
デルタを解決する。100%(54/54)、完了。
error: cannot to create file brainf*ck.bf (Invalid argument) ファイルを作成できません。
リモートサーバーを表示します。
<テーブルhuangyineng@HUANGYINENG-PC ~/hello-world (master)
$ git リモート
オリジン
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ git リモート -v
オリジン git://github.com/git/hello-world.git (フェッチ)
オリジン git://github.com/git/hello-world.git (プッシュ)
追加と送信
使用するコマンドは、add、commit、statusです。
1. helloworld.naxsuというファイルを作成します。
2. git statusでカレントディレクトリのファイルのコミット状況を確認する
brainf*ck.bfはクローンされただけで、クローンし直すことができなかったので、削除されたと書かれています。
helloworld.naxsu は作成されたばかりのファイルで、 "git add" バッファに追加、もしくは "git commit -a" 追加してコミットするよう促されます。
3. $ git add helloworld.naxsu でバッファに追加します。
カレントディレクトリにあるすべてのファイルを追加
$ git add .
接尾辞が.cのファイルを追加する
$ git add *.c
指定したファイルを追加する
$ git add index.jsp
4. ローカルリポジトリにコミットします。
<テーブルhuangyineng@HUANGYINENG-PC ~/hello-world (master)
$ echo "hello world" >> helloworld.naxsu
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ ls *.naxsu
helloworld.naxsu
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ git ステータス
# masterブランチ上
# 変更はコミットのためにステージングされていません。
# (コミットされる内容を更新するには "git add/rm ... " を使用します)
# (use "git checkout -- ... " で、作業ディレクトリの変更を破棄する)
#
# deleted: brainf*ck.bf
#
# 未追跡のファイル
# (コミットされるものに含めるには "git add ... " を使用します)
#
# helloworld.naxsu
コミットに変更はありません("git add" や "git commit -a" を使用します)。
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ git add helloworld.naxsu
警告を表示します。helloworld.naxsu の LF は CRLF に置換されます。
作業ディレクトリでは、ファイルは元の改行コードで表示されます。
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ git ステータス
# masterブランチ上
# コミットされる変更点
# (ステージを解除するには "git reset HEAD ... " を使用します)
#
# 新しいファイル:helloworld.naxsu
#
# 変更はコミットのためにステージングされていません。
# (コミットされる内容を更新するには "git add/rm ... " を使用します)
# (use "git checkout -- ... " で、作業ディレクトリの変更を破棄する)
#
# deleted: brainf*ck.bf
#
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ git commit helloworld.naxsu -m "init helloworld.naxsu"
の警告を表示します。helloworld.naxsu の LF は CRLF に置換されます。
作業ディレクトリでは、ファイルは元の改行コードで表示されます。
[master 8c17395] init helloworld.naxsu
警告を表示します。helloworld.naxsu の LF は CRLF に置換されます。
作業ディレクトリでは、ファイルは元の改行コードで表示されます。
ファイル変更1件、挿入1件(+)
作成モード 100644 helloworld.naxsu
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ git ステータス
# masterブランチ上
# あなたのブランチは 'origin/master' よりも 1 コミット分進んでいます。
#
# 変更はコミットのためにステージングされていません。
# (コミットされる内容を更新するには "git add/rm ... " を使用します)
# (use "git checkout -- ... " で、作業ディレクトリの変更を破棄する)
#
# deleted: brainf*ck.bf
#
コミットに変更はありません("git add" や "git commit -a" を使用します)。
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$
特定のドキュメントを無視する
Javaファイルは.classファイルにコンパイルされ、自動生成されるので、バージョン管理は必要ないので、コミット時にignoreを使用することができます。
class1.class, java1.java を作成し、.gitignore を作成して class1.class を .gitignore に追加し、vim で .gitignore を編集して自身を追加し、$ cat .gitignore コマンドで .gitignore の中身を確認することができるようにしました。次に、add,commit を使用すると、class1.class がリポジトリにコミットされていないことが確認できます。
<テーブルhuangyineng@HUANGYINENG-PC ~/hello-world (master)
$ echo "class1" > class1.class
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ echo "java1" > java1.java
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ echo "クラス1.クラス" >.gitignore
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ vim .gitignore
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ cat .gitignore
class1.class
.gitignore
gitステータス
$ git add .
$ git ステータス
$ git commit -a -m "テストを無視する"
......
ドキュメントの違いを比較する
git diff ( デフォルトは $ git diff --staged )
git diff --staged: ワークスペースとステージドを比較します。
$ git diff --cached: ステージングされたレポとローカルレポを比較
デモのアイデア: helloworld.naxsuを修正し、git diffで差分を確認し、彼を追加してまた差分を確認し、コミットしてまた差分を確認する。
<テーブルhuangyineng@HUANGYINENG-PC ~/hello-world (master)
$ vim helloworld.naxsu
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ git diff
diff --git a/helloworld.naxsu b/helloworld.naxsu
インデックス 3b18e51...6d05489 100644
--- a/helloworld.naxsu
+++ b/helloworld.naxsu
@@ -1 +1,2 @@
ハローワールド
+何かを追加する
警告を表示します。helloworld.naxsu では、LF は CRLF に置き換えられます。
作業ディレクトリでは、ファイルは元の改行コードで表示されます。
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ git add helloworld.naxsu
の警告を表示します。helloworld.naxsu の LF は CRLF に置換されます。
作業ディレクトリでは、ファイルは元の改行コードで表示されます。
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ git diff --cached
diff --git a/helloworld.naxsu b/helloworld.naxsu
インデックス 3b18e51...6d05489 100644
--- a/helloworld.naxsu
+++ b/helloworld.naxsu
@@ -1 +1,2 @@
ハローワールド
+何かを追加する
の警告を表示します。helloworld.naxsuではLFはCRLFに置き換えられます。
作業ディレクトリでは、ファイルは元の改行コードで表示されます。
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ git commit helloworld.naxsu -m "helloworld.naxsu"を修正しました。
の警告を表示します。helloworld.naxsu の LF は CRLF に置換されます。
作業ディレクトリでは、ファイルは元の改行コードで表示されます。
[マスター警告。helloworld.naxsu の LF は CRLF に置換されます。
作業ディレクトリでは、このファイルは元の行末を持ちます。
6e7814d] helloworld.naxsuを修正しました。
警告を表示します。helloworld.naxsu の LF は CRLF に置換されます。
作業ディレクトリでは、ファイルは元の改行コードで表示されます。
ファイル変更1件、挿入1件(+)
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ git diff
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ git diff --cached
ファイルの移動と削除
移動=削除+追加
<テーブルhuangyineng@HUANGYINENG-PC ~/hello-world (master)
$ ls *naxsu
helloworld.naxsu test.naxsu
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ git rm test.naxsu
rm 'test.naxsu'
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ git ステータス
# masterブランチ上
# あなたのブランチは 'origin/master' よりも 6 コミット進んでいます。
#
# コミットされる変更点
# (ステージを解除するには "git reset HEAD ... " を使用します)
#
# deleted: test.naxsu
#
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ git reset head test.naxsu
リセット後のアンステージドな変更点。
D test.naxsu
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ git ステータス
# masterブランチ上
# あなたのブランチは 'origin/master' よりも 6 コミット進んでいます。
#
# 変更はコミットのためにステージングされていません。
# (コミットされる内容を更新するには "git add/rm ... " を使用します)
# (use "git checkout -- ... " で、作業ディレクトリの変更を破棄する)
#
# deleted: test.naxsu
#
コミットに変更はありません("git add" や "git commit -a" を使用します)。
また、投稿していない場合は、チェックアウトしてリカバーすることができます
<テーブルhuangyineng@HUANGYINENG-PC ~/hello-world (master)
$ git checkout -- test.naxsu
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ ls *.naxsu
helloworld.naxsu test.naxsu
コミットすると、チェックアウトできない
<テーブルhuangyineng@HUANGYINENG-PC ~/hello-world (master)
$ git rm test.naxsu
rm 'test.naxsu'
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ git commit -a -m "test.naxsu"を削除してください。
[マスター 46d28af] test.naxsuを削除
1ファイル変更、1ファイル削除(-)
削除モード 100644 test.naxsu
huangyineng@HUANGYINENG-PC ~/hello-world (master)
$ git checkout -- test.naxsu
error: pathspec 'test.naxsu' did not match any file(s) known to git.
mvコマンドで移動する場合は、$ git mv --helpを参照してください。
アクションログの表示
git log はすべてのコミットを表示します。
<テーブルhuangyineng@HUANGYINENG-PC ~/hello-world (master)
gitログ
commit 46d28afa27a90678c7391fc0bc5549db345f3c7d
作者: Yineng Huang
日付 Fri Aug 17 23:28:34 2012 +0800
削除 test.naxsu
......
git whatchanged
<テーブルhuangyineng@HUANGYINENG-PC ~/hello-world (master)
git whatchanged
commit 46d28afa27a90678c7391fc0bc5549db345f3c7d
作者: Yineng Huang
日付 Fri Aug 17 23:28:34 2012 +0800
削除 test.naxsu
:100644 000000 77608b6... 0000000... D test.naxsu
......
git-whatchanged は git-log よりももう少し詳しく、特定のファイル名を表示します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例