日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

版本控制系统GIT文档

發布時間:2023/12/20 windows 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 版本控制系统GIT文档 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

版本控制系統GIT文檔

李達 20180629

引用博客教程+實踐總結

目錄
1.?????版本控制系統... 2
1.1.??????簡介... 2
1.2.??????常見的版本控制器... 3
1.3.??????版本控制分類... 4
1.3.1.???????本地版本控制... 4
1.3.2.???????集中版本控制(SVN)... 4
1.3.3.???????分布式版本控制(GIT) 5
1.3.4.???????集中式和分布式的比較... 6
1.4.??????Git與github. 7
2.?????Git系統... 7
2.1.??????工作區域... 7
2.2.??????文件的流轉控制... 8
2.3.??????版本分支管理... 9
2.3.1.???????分支策略... 11
2.4.??????多人協作... 11
2.5.??????標簽管理... 12
3.?????Git實踐... 12
3.1.??????工作模式設計... 12
3.2.??????實踐項目git環境搭建... 13
3.2.1.???????安裝git 13
3.2.2.???????創建遠程倉庫... 13
3.2.3.???????項目git初始化... 13
3.2.4.???????項目忽略文件... 17
3.2.5.???????開發人員初始化項目環境... 18
3.2.6.???????IDE的git插件... 18
3.3.??????實踐:項目git流程... 20
命令LIST:... 21
Refer:... 31

?

1.版本控制系統

1.1 簡介

? ??什么是版本控制系統?

??? 如果你用Microsoft Word寫過長篇大論,那你一定有這樣的經歷:

??? 想刪除一個段落,又怕將來想恢復找不回來怎么辦?有辦法,先把當前文件“另存為……”一個新的Word文件,再接著改,改到一定程度,再“另存為……”一個新文件,這樣一直改下去,最后你的Word文檔變成了這樣:

??? 過了一周,你想找回被刪除的文字,但是已經記不清刪除前保存在哪個文件里了,只好一個一個文件去找,真麻煩。

??? 看著一堆亂七八糟的文件,想保留最新的一個,然后把其他的刪掉,又怕哪天會用上,還不敢刪,真郁悶。

更要命的是,有些部分需要你的財務同事幫助填寫,于是你把文件Copy到U盤里給她(也可能通過Email發送一份給她),然后,你繼續修改Word文件。一天后,同事再把Word文件傳給你,此時,你必須想想,發給她之后到你收到她的文件期間,你作了哪些改動,得把你的改動和她的部分合并,真困難。

??? 于是你想,如果有一個軟件,不但能自動幫我記錄每次文件的改動,還可以讓同事協作編輯,這樣就不用自己管理一堆類似的文件了,也不需要把文件傳來傳去。如果想查看某次改動,只需要在軟件里瞄一眼就可以,豈不是很方便?

這個軟件用起來就應該像這個樣子,能記錄每次文件的改動:

版本

文件名

用戶

說明

日期

1

service.doc

張三

刪除了軟件服務條款5

7/12 10:38

2

service.doc

張三

增加了License人數限制

7/12 18:09

3

service.doc

李四

財務部門調整了合同金額

7/13 9:51

4

service.doc

張三

延長了免費升級周期

7/14 15:17

??? 這樣,你就結束了手動管理多個“版本”的史前時代,進入到版本控制的20世紀。

??? 版本控制(Revision control)是一種在開發的過程中用于管理我們對文件、目錄或工程等內容的修改歷史,方便查看更改歷史記錄,備份以便恢復以前的版本的軟件工程技術。

  • 實現跨區域多人協同開發
  • 追蹤和記載一個或者多個文件的歷史記錄
  • 組織和保護你的源代碼和文檔
  • 統計工作量
  • 并行開發、提高開發效率
  • 跟蹤記錄整個軟件的開發過程
  • 減輕開發人員的負擔,節省時間,同時降低人為錯誤

??? 簡單說就是用于管理多人協同開發項目的技術。

??? 沒有進行版本控制或者版本控制本身缺乏正確的流程管理,在軟件開發過程中將會引入很多問題,如軟件代碼的一致性、軟件內容的冗余、軟件過程的事物性、軟件開發過程中的并發性、軟件源代碼的安全性,以及軟件的整合等問題。

1.2 常見的版本控制器

主流的版本控制器有如下這些:

  • Git
  • SVN(Subversion
  • CVS(Concurrent Versions System)
  • VSS(Micorosoft Visual SourceSafe)
  • TFS(Team Foundation Server)
  • Visual Studio Online
  • ??? 版本控制產品非常的多(Perforce、Rational ClearCase、RCS(GNU Revision Control System)、Serena Dimention、SVK、BitKeeper、Monotone、Bazaar、Mercurial、SourceGear Vault),現在影響力最大且使用最廣泛的是Git與SVN

    1.3 版本控制分類

    ?

    1.3.1 本地版本控制

    ??? 記錄文件每次的更新,可以對每個版本做一個快照,或是記錄補丁文件,適合個人用,如RCS。

    1.3.2 集中版本控制(SVN)

    ?所有的版本數據都保存在服務器上,協同開發者從服務器上同步更新或上傳自己的修改

    ??? 所有的版本數據都存在服務器上,用戶的本地只有自己以前所同步的版本,如果不連網的話,用戶就看不到歷史版本,也無法切換版本驗證問題,或在不同分支工作。而且,所有數據都保存在單一的服務器上,有很大的風險這個服務器會損壞,這樣就會丟失所有的數據,當然可以定期備份。代表產品:SVN、CVS、VSS

    1.3.3?分布式版本控制(GIT)

    ??? 所有版本信息倉庫全部同步到本地的每個用戶,這樣就可以在本地查看所有版本歷史,可以離線在本地提交,只需在連網時push到相應的服務器或其他用戶那里。由于每個用戶那里保存的都是所有的版本數據,只要有一個用戶的設備沒有問題就可以恢復所有的數據,但這增加了本地存儲空間的占用。

    1.3.4 集中式和分布式的比較

    ??? 先說集中式版本控制系統,版本庫是集中存放在中央服務器的,而干活的時候,用的都是自己的電腦,所以要先從中央服務器取得最新的版本,然后開始干活,干完活了,再把自己的活推送給中央服務器。中央服務器就好比是一個圖書館,你要改一本書,必須先從圖書館借出來,然后回到家自己改,改完了,再放回圖書館。

    ??? 集中式版本控制系統最大的毛病就是必須聯網才能工作,如果在局域網內還好,帶寬夠大,速度夠快,可如果在互聯網上,遇到網速慢的話,可能提交一個10M的文件就需要5分鐘,這還不得把人給憋死啊。

    ??? 那分布式版本控制系統與集中式版本控制系統有何不同呢?首先,分布式版本控制系統根本沒有“中央服務器”,每個人的電腦上都是一個完整的版本庫,這樣,你工作的時候,就不需要聯網了,因為版本庫就在你自己的電腦上。既然每個人電腦上都有一個完整的版本庫,那多個人如何協作呢?比方說你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。

    ??? 和集中式版本控制系統相比,分布式版本控制系統的安全性要高很多,因為每個人電腦里都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那里復制一個就可以了。而集中式版本控制系統的中央服務器要是出了問題,所有人都沒法干活了。

    ? ??在實際使用分布式版本控制系統的時候,其實很少在兩人之間的電腦上推送版本庫的修改,因為可能你們倆不在一個局域網內,兩臺電腦互相訪問不了,也可能今天你的同事病了,他的電腦壓根沒有開機。因此,分布式版本控制系統通常也有一臺充當“中央服務器”的電腦,但這個服務器的作用僅僅是用來方便“交換”大家的修改,沒有它大家也一樣干活,只是交換修改不方便而已。

    ??? 當然,Git的優勢不單是不必聯網這么簡單,后面我們還會看到Git極其強大的分支管理,把SVN等遠遠拋在了后面。

    1.4 Git與github

    GitHub作為免費的遠程倉庫,是使用git技術的互聯網級別的一個遠程的git倉庫,是一個git代碼托管平臺。企業內部完全可以制作自己的git遠程倉庫,已保證數據安全性問題。

    ?

    2. Git系統

    Git是目前世界上最先進的分布式版本控制系統(沒有之一)。

    2.1 工作區域

    ??? Git本地有四個工作區域:工作目錄(Working Directory)、暫存區(Stage/Index)、資源庫(Repository或Git Directory)、遠程的git倉庫(Remote Directory)。

  • workspace 即工作區,邏輯上是本地計算機,還沒添加到repository的狀態;
  • staging 即版本庫中的stage,是暫存區。修改已經添加進repository,但還沒有作為commit提交,類似于緩存;
  • Local repository 即版本庫中master那個地方。到這一步才算是成功生成一個新版本;
  • Remote repository 則是遠程倉庫。用來將本地倉庫上傳到網絡,可以用于備份、共享、合作。
  • 2.2 文件的流轉控制

    ??? 文件在這四個區域之間的轉換關系如下:

    ?

    2.3 版本分支管理

    ??? 分支就是科幻電影里面的平行宇宙,當你正在電腦前努力學習Git的時候,另一個你正在另一個平行宇宙里努力學習SVN。

    ??? 如果兩個平行宇宙互不干擾,那對現在的你也沒啥影響。不過,在某個時間點,兩個平行宇宙合并了,結果,你既學會了Git又學會了SVN!

    ??? 分支在實際中有什么用呢?假設你準備開發一個新功能,但是需要兩周才能完成,第一周你寫了50%的代碼,如果立刻提交,由于代碼還沒寫完,不完整的代碼庫會導致別人不能干活了。如果等代碼全部寫完再一次提交,又存在丟失每天進度的巨大風險。

    ??? 現在有了分支,就不用怕了。你創建了一個屬于你自己的分支,別人看不到,還繼續在原來的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到開發完畢后,再一次性合并到原來的分支上,這樣,既安全,又不影響別人工作。

    ??? 其他版本控制系統如SVN等都有分支管理,但是用過之后你會發現,這些版本控制系統創建和切換分支比蝸牛還慢,簡直讓人無法忍受,結果分支功能成了擺設,大家都不去用。

    ??? 但Git的分支是與眾不同的,無論創建、切換和刪除分支,Git在1秒鐘之內就能完成!無論你的版本庫是1個文件還是1萬個文件。

    ?

    2.3.1 分支策略

    ??? 在實際開發中,我們應該按照幾個基本原則進行分支管理:

    ??? 首先,master分支應該是非常穩定的,也就是僅用來發布新版本,平時不能在上面干活;

    ??? 那在哪干活呢?干活都在dev分支上,也就是說,dev分支是不穩定的,到某個時候,比如1.0版本發布時,再把dev分支合并到master上,在master分支發布1.0版本;

    ??? 你和你的小伙伴們每個人都在dev分支上干活,每個人都有自己的分支,時不時地往dev分支上合并就可以了。

    所以,團隊合作的分支看起來就像這樣:

    2.4 多人協作

    多人協作的工作模式通常是這樣:

  • 首先,可以試圖用git push origin <branch-name>推送自己的修改;
  • 如果推送失敗,則因為遠程分支比你的本地更新,需要先用git pull試圖合并;
  • 如果合并有沖突,則解決沖突,并在本地提交;
  • 沒有沖突或者解決掉沖突后,再用git push origin <branch-name>推送就能成功!
  • ??? 如果git pull提示no tracking information,則說明本地分支和遠程分支的鏈接關系沒有創建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>

    ??? 這就是多人協作的工作模式,一旦熟悉了,就非常簡單。

    2.5 標簽管理

    ??? 發布一個版本時,我們通常先在版本庫中打一個標簽(tag),這樣,就唯一確定了打標簽時刻的版本。將來無論什么時候,取某個標簽的版本,就是把那個打標簽的時刻的歷史版本取出來。所以,標簽也是版本庫的一個快照。

    ??? Git的標簽雖然是版本庫的快照,但其實它就是指向某個commit的指針(跟分支很像對不對?但是分支可以移動,標簽不能移動),所以,創建和刪除標簽都是瞬間完成的。

    ?Git有commit,為什么還要引入tag?

    “請把上周一的那個版本打包發布,commit號是6a5819e...”

    “一串亂七八糟的數字不好找!”

    如果換一個辦法:

    “請把上周一的那個版本打包發布,版本號是v1.2”

    “好的,按照tag v1.2查找commit就行!”

    所以,tag就是一個讓人容易記住的有意義的名字,它跟某個commit綁在一起。

    3. Git實踐

    3.1 工作模式設計

    ==》 項目開發

    ==》 多人協作

    ==》 統一內部git遠程庫(無需高可用,人人都是版本庫),在辦公網段即可

    ==》 頻繁簡捷代碼合并,提交歷史保留提交人、修改內容,可恢復可撤銷

    ==》 實時快捷沖突處理

    ==》 階段里程碑打標簽,歷史版本控制

    ==》 新功能、bug處理分支使用,不影響主分支版本

    ==》 里程碑入svn庫,跨網絡提交。

    3.2 實踐項目git環境搭建

    3.2.1 安裝git

    在工作網段的192.168.68.234服務器上安裝git系統:

    • yum install git

    也可以下載git安裝包:

    • wget https://www.kernel.org/pub/software/scm/git/git-2.7.3.tar.gz

    然后進行相應的安裝,不過需要先安裝依賴包,配置config文件等。

    如果是window或其他版本linux系統或os操作系統,安裝都是非常簡單的,自行發揮即可。在window上還有圖形界面進行支持,不錯不建議用,因為git對圖形界面的支持不夠好。

    3.2.2 創建遠程倉庫

    創建目錄作為遠程庫倉庫的根路徑,比如/home/git/lida.git,進入目錄內,可創建兩種倉庫:

    創建鏡像庫:在目錄下看不到內容,內容都在版本庫里(建議)

    • git init –bare

    創建普通倉庫,和本地的git庫形式相同(不建議,因為不應該到遠程倉庫進行文本操作)

    • git init

    3.2.3?項目git初始化

    本地電腦環境按照git:自行嘗試

    如果已有項目目錄或還沒有,都到相應目錄下,執行git初始化命令:

    • git init

    查看當前git版本文件的情況:

    • git status

    提示有文件未被追蹤管理,提示:紅色為未被跟蹤的文件;

    添加到緩沖區

    • git add .

    提示:git add . 的點 表示所有;綠色表示已經提交到緩沖區;

    提交到本地代碼倉庫

    • Git commit –m “項目初始化git

    緩存中的文件提交到本地倉庫中。需要按照提示設置名字和email

    本地git倉庫推送到遠程git倉庫

    • git remote add origin root@192.168.68.234:/home/git/lida.git

    注意:root為服務器賬號,后面需要使用密碼認證。Git庫目錄需要有讀寫權限;

    推送本地git倉庫到遠程git倉庫,完成遠程倉庫的初始化

    • git push –u origin master

    自此,遠程git倉庫已經創建并初始化完成,可以進行多人項目開發和版本控制管理了。

    • 本地git log如下:

    • 遠程git倉庫git log如下:

    3.2.4 項目忽略文件

    有些時候我們不想把某些文件納入版本控制中,比如數據庫文件,臨時文件,設計文件等,主要有項目下eclipse環境文件等。

    在主目錄下建立".gitignore"文件,此文件有如下規則:

  • 忽略文件中的空行或以井號(#)開始的行將會被忽略。
  • 可以使用Linux通配符。例如:星號(*)代表任意多個字符,問號(?)代表一個字符,方括號([abc])代表可選字符范圍,大括號({string1,string2,...})代表可選的字符串等。
  • 如果名稱的最前面有一個感嘆號(!),表示例外規則,將不被忽略。
  • 如果名稱的最前面是一個路徑分隔符(/),表示要忽略的文件在此目錄下,而子目錄中的文件不忽略。
  • 如果名稱的最后面是一個路徑分隔符(/),表示要忽略的是此目錄下該名稱的子目錄,而非文件(默認文件或目錄都忽略)。
  • #為注釋

    *.txt #忽略所有 .txt結尾的文件

    !lib.txt #lib.txt除外

    /temp #僅忽略項目根目錄下的TODO文件,不包括其它目錄temp

    build/ #忽略build/目錄下的所有文件

    doc/*.txt #會忽略 doc/notes.txt 但不包括 doc/server/arch.txt

    然后通過 git add /git commit /git push 推送到git遠程倉庫即可保證這些文件不會被git進行版本的統一管理。

    3.2.5 開發人員初始化項目環境

    克隆遠程倉庫,命令如下:

    • git clone root@192.168.68.234:/home/git/lida.git

    Git倉庫已經同步到本地,可以進行開發處理了。

    3.2.6 IDE的git插件

    Eclipse和IDEA等ide工具,都支持git插件,提供界面化的git操作,包括添加、提交、刪除、與遠程庫git pull和git push等操作。對使用IDE的項目開發人員來說,非常方便。

    ?

    3.3 實踐:項目git流程

    多人協作的工作模式通常是這樣:

  • 首先,可以試圖用git push origin <branch-name>推送自己的修改;
  • 如果推送失敗,則因為遠程分支比你的本地更新,需要先用git pull試圖合并;
  • 如果合并有沖突,則解決沖突,并在本地提交;
  • 沒有沖突或者解決掉沖突后,再用git push origin <branch-name>推送就能成功!
  • 如果git pull提示no tracking information,則說明本地分支和遠程分支的鏈接關系沒有創建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>

    這就是多人協作的工作模式,一旦熟悉了,就非常簡單。

    命令LIST:

    #查看系統config
    git config --system --list
    #查看當前用戶(global)配置
    git config --global??--list
    #查看當前倉庫配置信息
    git config --local??--list
    # 在當前目錄新建一個Git代碼庫
    $ git init
    # 新建一個目錄,將其初始化為Git代碼庫
    $ git init [project-name]
    # 克隆一個項目和它的整個代碼歷史(版本信息)
    $ git clone [url]
    #查看指定文件狀態
    git status [filename]
    #查看所有文件狀態
    git status
    # 添加指定文件到暫存區
    $ git add [file1] [file2] ...
    # 添加指定目錄到暫存區,包括子目錄
    $ git add [dir]
    # 添加當前目錄的所有文件到暫存區
    $ git add .
    #直接從暫存區刪除文件,工作區則不做出改變
    git rm --cached <file>
    #如果已經用add 命令把文件加入stage了,就先需要從stage中撤銷
    git reset HEAD <file>...
    #移除所有未跟蹤文件
    #一般會加上參數-df,-d表示包含目錄,-f表示強制清除。
    git clean [options]?
    #只從stage中刪除,保留物理文件
    git rm --cached readme.txt?
    #不但從stage中刪除,同時刪除物理文件
    git rm readme.txt?
    #把a.txt改名為b.txt
    git mv a.txt b.txt?
    #查看文件修改后的差異
    git diff [files]
    #比較暫存區的文件與之前已經提交過的文件
    git diff --cached
    #比較repo與工作空間中的文件差異
    git diff HEAD~n
    #用法一
    git checkout [-q] [<commit>] [--] <paths>...
    #用法二
    git checkout [<branch>]
    #用法三
    git checkout [-m] [[-b]--orphan] <new_branch>] [<start_point>]
    $ git checkout branch
    #檢出branch分支。要完成圖中的三個步驟,更新HEAD以指向branch分支,以及用branch??指向的樹更新暫存區和工作區。
    $ git checkout
    #匯總顯示工作區、暫存區與HEAD的差異。
    $ git checkout HEAD
    #同上
    $ git checkout -- filename
    #用暫存區中filename文件來覆蓋工作區中的filename文件。相當于取消自上次執行git add filename以來(如果執行過)的本地修改。
    $ git checkout branch -- filename
    #維持HEAD的指向不變。用branch所指向的提交中filename替換暫存區和工作區中相???應的文件。注意會將暫存區和工作區中的filename文件直接覆蓋。
    $ git checkout -- . 或寫作 git checkout .
    #注意git checkout 命令后的參數為一個點(“.”)。這條命令最危險!會取消所有本地的??#修改(相對于暫存區)。相當于用暫存區的所有文件直接覆蓋本地文件,不給用戶任何確認的機會!
    $ git checkout commit_id -- file_name
    #如果不加commit_id,那么git checkout -- file_name 表示恢復文件到本地版本庫中最新的狀態。
    # 提交暫存區到倉庫區
    $ git commit -m [message]
    # 提交暫存區的指定文件到倉庫區
    $ git commit [file1] [file2] ... -m [message]
    # 提交工作區自上次commit之后的變化,直接到倉庫區,跳過了add,對新文件無效
    $ git commit -a
    # 提交時顯示所有diff信息
    $ git commit -v
    # 使用一次新的commit,替代上一次提交
    # 如果代碼沒有任何新變化,則用來改寫上一次commit的提交信息
    $ git commit --amend -m [message]
    # 重做上一次commit,并包括指定文件的新變化
    $ git commit --amend [file1] [file2] ...
    #修訂提交
    git commit --amend
    #撤銷上一次的提交
    git reset --hard HEAD~1
    #查看提交日志
    git log [<options>] [<revision range>] [[\--] <path>…?]
    #查看指定狀態的文件
    git ls-files [-z] [-t] [-v] (--[cached|deleted|others|ignored|stage|unmerged|killed|modified])* (-[c|d|o|i|s|u|k|m])*
    在Git中,有一個HEAD指針指向當前分支中最新的提交。當前版本,我們使用"HEAD^",那么再錢一個版本可以使用"HEAD^^",如果想回退到更早的提交,可以使用"HEAD~n"。(也就是,HEAD^=HEAD~1,HEAD^^=HEAD~2)
    git reset --hard HEAD^
    git reset --hard HEAD~1
    git reset --59cf9334cf957535cb328f22a1579b84db0911e5
    撤銷刪除:
    #to discard changes in working directory
    git checkout -- <file>...
    # 列出所有本地分支
    $ git branch
    # 列出所有遠程分支
    $ git branch -r
    # 列出所有本地分支和遠程分支
    $ git branch -a
    # 新建一個分支,但依然停留在當前分支
    $ git branch [branch-name]
    # 新建一個分支,并切換到該分支
    $ git checkout -b [branch]
    # 新建一個分支,指向指定commit
    $ git branch [branch] [commit]
    # 新建一個分支,與指定的遠程分支建立追蹤關系
    $ git branch --track [branch] [remote-branch]
    # 切換到指定分支,并更新工作區
    $ git checkout [branch-name]
    # 切換到上一個分支
    $ git checkout -
    # 建立追蹤關系,在現有分支與指定的遠程分支之間
    $ git branch --set-upstream [branch] [remote-branch]
    # 合并指定分支到當前分支
    $ git merge [branch]
    # 選擇一個commit,合并進當前分支
    $ git cherry-pick [commit]
    # 刪除分支
    $ git branch -d [branch-name]
    # 刪除遠程分支
    $ git push origin --delete [branch-name]
    $ git branch -dr [remote/branch]
    #統計某人的代碼提交量,包括增加,刪除:
    git log --author="$(git config --get user.name)" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf?
    "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }' -
    #倉庫提交者排名前 5(如果看全部,去掉 head 管道即可):
    git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 5
    #倉庫提交者(郵箱)排名前 5:這個統計可能不會太準,因為很多人有不同的郵箱,但會使用相同的名字
    git log --pretty=format:%ae | gawk -- '{ ++c[$0]; } END { for(cc in c) printf "%5d %s\n",c[cc],cc; }' | sort -u -n -r | head -n 5?
    #貢獻者統計:
    git log --pretty='%aN' | sort -u | wc -l
    #提交數統計:
    git log --oneline | wc -l?
    # 顯示有變更的文件
    $ git status
    # 顯示當前分支的版本歷史
    $ git log
    # 顯示commit歷史,以及每次commit發生變更的文件
    $ git log --stat
    # 搜索提交歷史,根據關鍵詞
    $ git log -S [keyword]
    # 顯示某個commit之后的所有變動,每個commit占據一行
    $ git log [tag] HEAD --pretty=format:%s
    # 顯示某個commit之后的所有變動,其"提交說明"必須符合搜索條件
    $ git log [tag] HEAD --grep feature
    # 顯示某個文件的版本歷史,包括文件改名
    $ git log --follow [file]
    $ git whatchanged [file]
    # 顯示指定文件相關的每一次diff
    $ git log -p [file]
    # 顯示過去5次提交
    $ git log -5 --pretty --oneline
    # 顯示所有提交過的用戶,按提交次數排序
    $ git shortlog -sn
    # 顯示指定文件是什么人在什么時間修改過
    $ git blame [file]
    # 顯示暫存區和工作區的差異
    $ git diff
    # 顯示暫存區和上一個commit的差異
    $ git diff --cached [file]
    # 顯示工作區與當前分支最新commit之間的差異
    $ git diff HEAD
    # 顯示兩次提交之間的差異
    $ git diff [first-branch]...[second-branch]
    # 顯示今天你寫了多少行代碼
    $ git diff --shortstat "@{0 day ago}"
    # 顯示某次提交的元數據和內容變化
    $ git show [commit]
    # 顯示某次提交發生變化的文件
    $ git show --name-only [commit]
    # 顯示某次提交時,某個文件的內容
    $ git show [commit]:[filename]
    # 顯示當前分支的最近幾次提交
    $ git reflog
    # 下載遠程倉庫的所有變動
    $ git fetch [remote]
    # 顯示所有遠程倉庫
    $ git remote -v
    # 顯示某個遠程倉庫的信息
    $ git remote show [remote]
    # 增加一個新的遠程倉庫,并命名
    $ git remote add [shortname] [url]
    # 取回遠程倉庫的變化,并與本地分支合并
    $ git pull [remote] [branch]
    # 上傳本地指定分支到遠程倉庫
    $ git push [remote] [branch]
    # 強行推送當前分支到遠程倉庫,即使有沖突
    $ git push [remote] --force
    # 推送所有分支到遠程倉庫
    $ git push [remote] --all
    #簡單查看遠程---所有倉庫
    git remote?(只能查看遠程倉庫的名字)
    #查看單個倉庫
    git??remote show [remote-branch-name]
    #新建遠程倉庫
    git remote add [branchname]??[url]
    #修改遠程倉庫
    git remote rename [oldname] [newname]
    #刪除遠程倉庫
    git remote rm [remote-name]
    #獲取遠程倉庫數據
    git fetch [remote-name] (獲取倉庫所有更新,但不自動合并當前分支)
    git pull (獲取倉庫所有更新,并自動合并到當前分支)
    #上傳數據,如git push origin master
    git push [remote-name] [branch]
    ?

    Refer:

    1.* https://www.cnblogs.com/syp172654682/p/7689328.html

    2.https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001373962845513aefd77a99f4145f0a2c7a7ca057e7570000

    3. http://www.cnblogs.com/schaepher/p/5561193.html#github

    4. https://blog.csdn.net/ljchlx/article/details/21805231 [遠端倉庫初始化成bare倉庫的原因]

    總結

    以上是生活随笔為你收集整理的版本控制系统GIT文档的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。