Git基礎和入門

1、Git基礎概念

Git功能簡單概述java

  • 能夠隨時回滾到以前的代碼版本(git reset --hard );
  • 協同開發時不會覆蓋別人的代碼(分支);
  • 留下修改記錄(git log);
  • 發版時能夠方便的管理不一樣的版本;

一、Git工做模式

操做git

  • 90%以上的操做在我的計算機上
  • 添加文件、修改文件、提交變動、查看版本歷史等
  • 版本庫同步
  • 將本地修改推送到版本服務器

版本控制系統:正則表達式

 

 

二、Git文件存儲

注意文件存儲和SVN不一樣:數據庫

 

 

Git 不按照SVN那樣對待或保存數據。 反之,Git 更像是把數據看做是對小型文件系統的一組快照。 每次你提交更新,或在 Git 中保存項目狀態時,它主要對當時的所有文件製做一個快照並保存這個快照的索引。 爲了高效,若是文件沒有修改,Git 再也不從新存儲該文件,而是隻保留一個連接指向以前存儲的文件。 Git 對待數據更像是一個 快照流。服務器

總結特色:架構

  • 直接記錄快照snapshoot。而並不是比較差別;
  • 近乎全部操做都在本地執行;
  • 時刻保持數據完整性
  • 多數操做僅添加數據;
  • 文件的三種狀態(只會處於這三種狀態)
    • 已修改(modified)
    • 已暫存(staged)
    • 已提交(committed)

 

三、Git文件狀態

  • Git文件: 已被版本庫管理的文件;
  • 已修改: 在工做目錄(working directory)修改Git文件;
  • 已暫存: 對已修改的文件執行Git暫存操做,將文件存入暫存區(staging area); (注意SVN中沒有暫存區這個概念)
  • 已提交: 將已暫存的文件執行Git提交操做,將文件存入版本庫(git directory);

 

 

Git 倉庫目錄是 Git 用來保存項目的元數據和對象數據庫的地方。 這是 Git 中最重要的部分,從其它計算機克隆倉庫時,拷貝的就是這裏的數據。併發

工做目錄是對項目的某個版本獨立提取出來的內容。 這些從 Git 倉庫的壓縮數據庫中提取出來的文件,放在磁盤上供你使用或修改。分佈式

暫存區域是一個文件,保存了下次將提交的文件列表信息,通常在 Git 倉庫目錄中。 有時候也被稱做‘索引’,不過通常說法仍是叫暫存區域。高併發

基本的 Git 工做流程以下:spa

  1. 在工做目錄中修改文件。
  2. 暫存文件,將文件的快照放入暫存區域git add
  3. 提交更新,找到暫存區域的文件,將快照永久性存儲到 Git 倉庫目錄git commit
git add 放到暫存區;
git commit 從暫存區放到版本倉庫中;

四、本地版本庫與服務器版本庫

Git是分佈式的。

 

 

2、Git經常使用命令

一、config和email

 

 

關於配置user.nameuser.email:

能夠有三個地方配置:

好比輸入git config命令, 會出現下面三個信息,即系統級別system,全局global,和局部local。其中優先級不斷升高。

zxzxin@zxzxin:~/Git/gitlearn$ git config
usage: git config [<options>]

Config file location
    --global              use global config file
    --system              use system config file
    --local               use repository config file
    -f, --file <file>     use given config file
    --blob <blob-id>      read config from given blob object

這裏展現一下配置咱們局部的gitlearn倉庫:

 

 

git 提交的id( commit id)是一個摘要值,這個摘要值其實是一個 sha1計算出來的。

二、git rm 和rm的區別

git rm :

  • 一、刪除了一個文件
  • 二、將被刪除的文件歸入到了暫存區(stage);(能夠直接調用git commit來提交)

若想恢復被刪除的文件,須要進行兩個動做:

  • 一、git reset HEAD test2.txt,將待刪除的文件從暫存區恢復到工做區;
  • 二、git checkout -- test2.txt, 將工做區的修改丟棄掉;

**rm **:

  • 只是將文件刪除;注意: 這時,被刪除的文件並未歸入到暫存區當中。
  • 這時是提交(git commit)不了的。要想歸入暫存區,必需要再調用一次git add

實戰對比:

 

 

三、git mv 和 mv的對比

git mv(和git rm 相似):

  • 先完成重命名;
  • 而後提交到暫存區;

git mv演示:

 

 

而 mv:

  • 只是完成重命名;
  • 須要本身調用git add提交到暫存區;

 

 

使用技巧: 能夠經過 git commit --amend -m '修正內容'更改上次錯誤的提交消息。(就是 -m '')後面的提交信息寫錯了。

四、git log查看日誌

git log -n 能夠查看最近的n條日誌。

git log --pretty=oneline以一行一行的方式顯示出來。

查看git命令幫助:

 

 

五、.gitignore文件

在開發中,若是咱們不想將全部的文件都放到git當中,而是要忽略少數一些文件(好比jar包、配置文件等),咱們能夠在咱們的目錄建立一個.gitignore文件,git就不會將這些文件放入暫存區,也不會提交(不會加入版本控制系統)。

 

 

此時咱們能夠建立一個.gitignore文件:

 

 

簡而言之,放在.gitignore中的文件會直接被git無視

其中,放在 .gitignore中的文件也支持正則表達式。
例如:
  • *.a,會忽略全部.a結尾的文件;
  • !lib.a,不要忽略lib.a(排除這個忽略);
  • /test.txt,僅僅忽略項目根目錄下的TODO文件,不包括子目錄下的test.txt文件;
  • dir1/,忽略dir1/目錄下的全部文件;
  • dir1/*.txt,會忽略dir1/a.txt但不會包括dir1/dir2/a.txt
  • 例如dir1/*.txt會忽略dir1下的全部.txt文件,dir1/*/*.txt會忽略dir1下全部層下的.txt,而dir1/**/*.txt會忽略dir1/下的任意層的.txt文件。

 

.gitignore中用#表示註釋。

 

原文:Java架構筆記

免費Java高級資料須要本身領取,涵蓋了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高併發分佈式等教程,一共30G。
傳送門: https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q
相關文章
相關標籤/搜索