前几天天遇到个烦心事,想把作业提交push到github,结果弄来弄去没弄懂,作业和其他本地全被clean掉了,回收站都没找着,贼烦。根本原因都是之前学习git的使用一知半解,只求现用,现在几乎忘了。现在看着官方文档捋一遍。
Gitとは何ですか?
これはバージョン管理システムです。Gitは「スナップショット」の概念を使用してバージョンを更新します。たとえば、プロジェクトの下のファイルが変更された場合、新しいバージョンのプロジェクトは効率のために変更されたファイルのみを保持します。保存されたファイルのバージョン。この概念は非常に重要であり、将来の使用を理解することは非常に役立ちます!
データには3つの動作状態があります。
- 変更済み、ファイルが変更されたがデータベースに送信されなかったことを示す
- 追加操作の実行後の状態は、変更されたファイルの現在のバージョンが、次に送信されたスナップショットに含まれるようにマークされていることを示しています。
- 送信済み、コミット操作後のステータスは、データがローカルデータベースに安全に格納されたことを示します。
3つの領域:
作業領域、一時保管領域、Git倉庫。
- 作業エリア:通常変更する場所
- 一時領域:送信される変更に関する情報を、通常はGitリポジトリディレクトリに、インデックスとデータを含めて保存します(スナップショットとして理解できます)。
- ウェアハウス:送信されたプロジェクトを保存します(永続的な保存スナップショットとして理解できます)
Gitのインストールプロセスについては説明しません。インターネット上のどこでも見つけることができます。
インストール後に構成を確認するだけです。
構成
完全なインストールが完了したら、次のように最初のステップで独自のユーザー名と電子メールアドレスを設定します。
$ git config --global user.name "Elizabeth"
$ git config --global user.email "[email protected]"
次に使用できます
$ git config --global user.name
$ git config --global user.email
グローバルユーザー名とメールアドレスを表示します。
Gitの設定コマンドは変数GITの構成を設定するために使用され、
異なるユーザ及び異なる倉庫は、異なる構成設定することができ
、これらの変数の3つの異なる位置に格納されている:
/etc/gitconfig
、~/.config/git/config
、.git/config
それぞれ、すべてのユーザのグローバル設定、現在のユーザ・プロファイル、及び現在の設定倉庫、レベルが左から右に上がるほど、前の構成をカバーします。
倉庫ユーザーを構成します。
$ git config user.name "Elizabai"
$ git config user.email "[email protected]"
倉庫ユーザーを表示
git config user.name
グローバル/倉庫構成を表示
$ git config --global --list
$ git config --list
Gitリポジトリを取得する
2つの方法:
- ローカルディレクトリをGitリポジトリに変換する
- リモートウェアハウスのクローン
1.最初のタイプ:
バージョン管理が必要なディレクトリを入力し、コマンドを実行します:
$ git init
.gitディレクトリが表示さ
れます。ここでは、これがウェアハウスのバックボーンであることを認識し
、ファイルをウェアハウスに追加するだけです。
$ git add test1.txt
$ git commit -m 'initial project version'
2. 2番目
$ git clone https://github.com/libgit2/libgit2 mylibgit
mylibgitという名前のディレクトリを作成し、.gitファイルを初期化して、リモートリポジトリからクローンを作成します。
さまざまな状態
この時点
でコンテンツABCを含むファイルtest2.txt を作成して、現在のステータス
をgit status
表示します。
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
test2.txt
nothing added to commit but untracked files present (use "git add" to track)
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
これは、現在masterブランチにいることを示し、追跡されていないファイルと提案も一覧表示します。
次にgit add 文件/目录
、ステージング領域に追加します。
$ git add test2.txt
もう一度状態を見てください
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: test2.txt
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
ステージング領域に追加されたファイルのリスト
我々は使用することができgit rm --cached 文件/目录
、一時的な記憶領域を削除するには
あなたは使用している場合はgit rm 文件/目录
gitのは、エリアディレクトリが削除されたステージング共同で動作することをファイルを。
一時ストレージ領域に追加した後
git add
、Gitはこのファイルの変更を追跡します。次のtest2.txtの内容を変更し、Dを追加し
てステータスを確認しましょう。
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: test2.txt
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: test2.txt
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
2つの新しいヒント:
最初の1つはgit add <file>を使用してステージング領域を更新
できることを示し、2番目のヒントはgit restore <file>を使用して以前に変更したものに戻ることができることを示しています
最初のものを使用すると、変更前の状態に戻ります。つまり、ファイルの内容はABCのみです。
参照してください。
私たちが使用できるgit diff
ステージング領域と倉庫の内容を比較します:
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
$ git diff
diff --git a/test2.txt b/test2.txt
index 48b83b8..a6bddc4 100644
--- a/test2.txt
+++ b/test2.txt
@@ -1 +1 @@
-ABC
\ No newline at end of file
+ABCD
\ No newline at end of file
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
新しいファイルを見ると、古いファイルとの違いはDのみであり、2つのファイルの終わりに改行はありません。
次のコミットの内容に追加される追加の一時的な記憶を表示するには、使用することができますgit diff --staged
またはgit diff --cached
コマンド。これらの2つのコマンドは、一時ファイルと最後に送信されたファイルの違いを比較します
更新の送信
変更したtest2.txt git commit
をローカルウェアハウスに送信します。
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
$ git commit -m "第一次提交"
[master (root-commit) f40e8b9] 第一次提交
1 file changed, 1 insertion(+)
create mode 100644 test2.txt
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
ステータスを見てみましょう:
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
$ git status
On branch master
nothing to commit, working tree clean
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
上記のステージング領域に問題があると思われる場合、Gitはgit commot -a
変更されたファイルとステージング領域ファイルを送信するためのショートカットも提供します。これにより、面倒な場合でもgit add
直接送信できます。
提出履歴の表示
次に、前のセクションtest2.txtで、それぞれEとFを追加
し、2つの提出で提出しました。その後、ウェアハウスgit log
を使用して提出履歴を表示できます。
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
$ git log
commit 3868bcdb2f716c560177d1242875e84245f94ad7 (HEAD -> master)
Author: Elizabeth <Elizabeth@example.com>
Date: Wed Apr 8 17:09:58 2020 +0800
第三次提交
commit 0f06de25f32c9f390e5b83fb2eee055bcc05891c
Author: Elizabeth <Elizabeth@example.com>
Date: Wed Apr 8 17:09:32 2020 +0800
第二次提交
commit f40e8b946f2f5c39b26629cab15508f275ab0033
Author: Elizabeth <Elizabeth@example.com>
Date: Wed Apr 8 16:51:21 2020 +0800
第一次提交
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
$ git log -p
commit 3868bcdb2f716c560177d1242875e84245f94ad7 (HEAD -> master)
Author: Elizabeth <Elizabeth@example.com>
Date: Wed Apr 8 17:09:58 2020 +0800
第三次提交
diff --git a/test2.txt b/test2.txt
index 402476b..1c5f8ba 100644
--- a/test2.txt
+++ b/test2.txt
@@ -1 +1 @@
-ABCDE
\ No newline at end of file
+ABCDEF
\ No newline at end of file
commit 0f06de25f32c9f390e5b83fb2eee055bcc05891c
Author: Elizabeth <Elizabeth@example.com>
Date: Wed Apr 8 17:09:32 2020 +0800
第二次提交
diff --git a/test2.txt b/test2.txt
index a6bddc4..402476b 100644
--- a/test2.txt
+++ b/test2.txt
@@ -1 +1 @@
-ABCD
\ No newline at end of file
+ABCDE
\ No newline at end of file
commit f40e8b946f2f5c39b26629cab15508f275ab0033
Author: Elizabeth <Elizabeth@example.com>
Date: Wed Apr 8 16:51:21 2020 +0800
第一次提交
diff --git a/test2.txt b/test2.txt
new file mode 100644
index 0000000..a6bddc4
--- /dev/null
+++ b/test2.txt
@@ -0,0 +1 @@
+ABCD
\ No newline at end of file
END
(終了するにはqを押します)は、毎回送信される情報と前の情報との違いをリストします。多くの場合、16進数はバージョン番号です。
操作を元に戻す再
送信:git commit --amend
複数のファイルの一時的な操作をキャンセルした後、ファイルの一時的な保存をキャンセルする git reset HEAD <file>...
ファイル送信を元に戻す:git checkout -- <file>...
これは少し危険ですが、このコマンドは次のように理解できます:ファイルを上書きするためにウェアハウスの最新バージョンを取り出します!取り出した後、ウェアハウス内のファイルの最新バージョンも失われます。
作業領域ファイルが私たちの期間中に変更されたため、これらの元に戻す操作はどちらも危険です。
リモートウェアハウスの構成
1. URLを追加します:git remote add url名字 url
2.既存のURLを確認しますgit remote -v
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
$ git remote add Url1 https://github.com/xxxx/xxxx.git
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
$ git remote -v
Url1 https://github.com/xxxx/xxxx.git (fetch)
Url1 https://github.com/xxxx/xxxx.git (push)
96916@DESKTOP-D7SKL2J MINGW64 ~/Desktop/GitReview (master)
プルし
$ git fetch <remote>
て、まだ持っていないデータをプルします。手動でマージして
プッシュする必要があります
$ git push <remote> <branch>
ラベル
ラベルを作成する:
現在のバージョンv1にラベルを付ける-mラベル情報を指定する:
git tag -a v1 -m "my version 1.4"
現在のバージョンをラベルとともにサーバーにプッシュする:
$ git push Url1 v1
ローカルウェアハウスラベルを
git tag -d <tagname>
削除するリモートウェアハウスラベルを削除する
$ git push Url1 :refs/tags/v1.4-lw
バージョンを切り替える
バージョン番号を表示
バック以前のバージョンにフォール:
git reset --hard HEAD^
バージョンに:
git reset --hard HEAD^
以前のバージョンにロールバックする前に:
git reset --hard HEAD~3
指定されたバージョンにロールバック
git reset --hard 91010df
した後ので、反復バージョンのロールバックを参照するには
git reflog