TOP

2-具體學習Github---init add commit log diff(一)
2017-10-11 15:53:17 】 瀏覽:9888
Tags:

 

1.安裝:

首先找到git的官網,內部有下載鏈接。

也可以用下面的,我的是win7的64位系統:

可以在此處下載:Git-2.13.0-64-bit.exe鏈接:http://pan.baidu.com/s/1dFIOU1V 密碼:xky2

下面是安裝后的效果:

git作用:可以用一個代碼文件來表達所有的版本。他的原理是通過給每個版本拍快照的方式來存儲每個文件。限制是只能是txt文本文檔。

 

上圖就是bash的window。可以在里面輸入命令。

 


 2.創建

首先在 E:\python\gitTUT 內右鍵,選擇Git Bash Here,就會打開一個在本路徑下的bash窗口。

 

設置用戶名:

git config --global user.name "longbiscuit"      ,這個用戶名和郵箱是在GitHub官網你自己注冊的用戶名和郵箱。

可以用  git config user.name  來檢查輸入的用戶名。

設置郵箱:

git config --global user.email "blzhu@buaa.edu.cn"

初始化:

git init

 會在目錄下自動初始化并生成 .git文件夾,

顯示所有的文件: ls -a

輸入 open .git  后會自動打開這個隱藏的文件夾。但我沒打開,這個先不管了优乐棋牌app下载,不重要。可以手動打開看看。

創建文件 1.py:touch 1.py

但此時還沒有添加到git管理庫中(git是本地版本,github是網絡版本,用這個客戶端可以直接管理,也可以聯網上傳到網絡上)。

檢查狀態:git status

 

 提示1.py是沒有被添加到管理庫當中的,untracked files就是無蹤跡的文件。

如果要添加到庫中,首先要 git add 1.py改為可以添加到庫中,可以提交修改。

查看status,可以看到 changes to be committed,變為可以提交狀態。

提交變化到庫中:git commit -m "create 1.py",這個后面雙引號中的內容是注釋

流程為:

 

 


 查看修改歷史:git log

可以看出以前創建過一個1.py(并且commit過了)

現在修改1.py:

增加了一個:a=1,之后保存1.py

此時再git status查看狀態,

 

會提示,changes not staged for commit(變化還沒到可提交的階段,stage是階段,這里是指可commit 的階段),這是個什么狀態呢,看下圖:

 

 

就是unmodified和modified的狀態。咱修改過了,所以在modified狀態,bash窗口中也有提示,modified 1.py

 所以此時要先:git add 1.py

此時會提示changes to be commited:(就是可以提交了)

用綠色提示modified 1.py,

此時可以用:git commit -m "change 1" 來提交這個變化。

再次觀看log,可以看到修改過兩次:

此時git status 會發現沒有需要commit 的文件。

如何觀看更改的細節呢? 用  git diff

比如我現在修改1.py:

a=2

b=1

 

現在我查看狀態:git status -s  ,其中-s是縮減形式的查看

兩種形式的提示意思是相同的。

輸入git diff后:

-a=1前面的減號表示刪掉了某條語句,同理,+a=2前面的加號表示添加這條語句。

再提交所有改變:git add .  此時相當于 git add 1.py优乐棋牌app下载,因為此目錄下僅有一個1.py,而add后面的點號表示所有的,所以git add . 相當于提交所有改變。

 

可以提交的state狀態,-s狀態下顯示是一個大寫的綠色的M加兩個空格再跟文檔名。

而不可提交的unstaged狀態(unmodified或modified)在-s提示狀態下顯示一個大寫的紅色的M加一個空格再跟文檔名。

 

看到差別了嗎?

此時 git diff是沒有任何的顯示,因為是對比unstaged這個狀態和上一次commit之后的不同(說白了就是兩次都commit之后的未修改(unstaged)狀態),而現在是staged狀態(等待git commit),所以沒有任何輸出:

 

所以各狀態下輸入git status -s  ,輸出如下:

 此時修改了兩條語句,也add了,但沒有commit,可見處于最右邊的staged狀態,并沒有進入commit后的unmodified狀態,git diff是比較不出來的。要用git diff --cached:

 

如果此時我們再加入一條語句:c=d,再查看狀態git status -s:

前一個綠色的M表示前面staged狀態,后一個紅色的M表示后面又加上c=b語句后變為了unstaged狀態,如果有兩個MM,我們要看改變的內容的話要用git diff HEAD:

 

若用git diff --cached則只會顯示這一步的變化:

 

 

 

 

在git提交環節,存在三大部分:working tree, index file, commit

這三大部分中:
working tree:就是你所工作在的目錄,每當你在代碼中進行了修改,working tree的狀態就改變了。
index file:是索引文件,它是連接working tree和commit的橋梁,每當我們使用git-add命令來登記后,index file的內容就改變了,此時index file就和working tree同步了。
commit:是最后的階段优乐棋牌app下载,只有commit了,我們的代碼才真正進入了git倉庫。我們使用git-commit就是將index file里的內容提交到commit中。
總結一下:
git diff:是查看working tree與index file的差別的。
git diff --cached:是查看index file與commit的差別的。
git diff HEAD:是查看working tree和commit的差別的。(你一定沒有忘記,HEAD代表的是最近的一次commit的信息)

--------------------------------

最近,自己開始接觸Git。在學到git diff時,一直困惑。git diff到底比較的是那個兩個文件之間的差異。經過在網上搜網,終于找到樂答案。

這里分為兩種情況,一種是當暫存區中有文件時,另一種是暫存區中沒有文件。總的來說是比較最近兩種狀態。

(1)當暫存區中沒有文件時,git diff比較的是,工作區中的文件與上次提交到版本庫中的文件。

(2)當暫存區中有文件時,git diff則比較的是,當前工作區中的文件與暫存區中的文件。

而 git diff HE

請關注公眾號獲取更多資料



首頁 上一頁 1 2 下一頁 尾頁 1/2/2
】【打印繁體】【】【】 【】【】【】 【關閉】 【返回頂部
上一篇RunDll32.exe 詳解及[Windows批處.. 下一篇Cmd 命令大全