Git記錄

git 記錄

參考網址:http://http://www.liaoxuefeng.com/,裏面的Git教程,學得很好,感謝廖老師的Git教程。

一、簡單介紹

  • Git是分佈式版本控制系統
  • 集中式版本控制vs分佈式版本控制
    • 集中式版本控制系統,版本庫是集中存放在中央服務器的,而幹活的時候,用的都是自己的電腦,所以要先從中央服務器取得最新的版本,然後開始幹活,幹完活了,再把自己的活推送給中央服務器
    • 分佈式版本控制系統根本沒有“中央服務器”,每個人的電腦上都是一個完整的版本庫,這樣,你工作的時候,就不需要聯網了,因爲版本庫就在你自己的電腦上。
    • 集中式版本控制系統相比,分佈式版本控制系統的安全性要高很多,因爲每個人電腦裏都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那裏複製一個就可以了。
    • 在實際使用分佈式版本控制系統的時候,其實很少在兩人之間的電腦上推送版本庫的修改,因爲可能你們倆不在一個局域網內,兩臺電腦互相訪問不了,也可能今天你的同事病了,他的電腦壓根沒有開機。因此,分佈式版本控制系統通常也有一臺充當“中央服務器”的電腦,但這個服務器的作用僅僅是用來方便“交換”大家的修改,沒有它大家也一樣幹活,只是交換修改不方便而已。

二、安裝記錄

三、常用命令

1、設置用戶名和郵箱。git config命令的–global參數,用了這個參數,表示你這臺機器上所有的Git倉庫都會使用這個配置

//
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

2、創建版本庫

在合適的工作目錄,創建文件夾,在創建的文件夾當前目錄執行

git init

創建成功後,當前目錄下多了一個.git的目錄,這個目錄默認是隱藏的

3、把文件添加到倉庫,比如這裏創建了一個文件readme.txt

git add readme.txt

4、把文件提交到倉庫

git commit -m "first commit"

-m 後面輸入的是本次提交的說明,方便後面查詢提交記錄,和方便其他人閱讀

5、查看當前倉庫的狀態,可以顯示改動了的文件

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   readme.txt

no changes added to commit (use "git add" and/or "git commit -a")

6、查看具體的改動

git diff readme.txt

通過這個命令可以顯示具體修改的內容

7、查看歷史提交記錄

$ git log
commit cc592f6abc70df78d25713af7f3977f67d3d9d66
Author: cigar0223 <415718252@qq.com>
Date:   Wed Apr 19 16:00:06 2017 +0800

    add readme.txt

commit 0dba4155dc928b6d9e9be4a4fc4fb39cdd9433df
Author: cigar0223 <415718252@qq.com>
Date:   Wed Apr 19 15:57:37 2017 +0800

    first commit

加–pretty=oneline可以方便查看

$ git log --pretty=oneline
cc592f6abc70df78d25713af7f3977f67d3d9d66 add readme.txt
0dba4155dc928b6d9e9be4a4fc4fb39cdd9433df first commit

8、版本回退

$ git reset --hard HEAD^
HEAD is now at 0dba415 first commit

Git必須知道當前版本是哪個版本,在Git中,用HEAD表示當前版本,上一個版本就是HEAD^,上上一個版本就是HEAD^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成HEAD~100

$ git reset --hard 0dba41
HEAD is now at 0dba415 first commit

可以在–hard後面指定git log 查詢出來的commit id,就可以指定到某一個版本,版本號沒必要寫全,前幾位就可以了,Git會自動去找。當然也不能只寫前一兩位,因爲Git可能會找到多個版本號

9、查看當前文本內容

$ cat readme.txt
init

cat可以查看文件的內容

10、查詢歷史執行命令

$ git reflog
cc592f6 HEAD@{0}: reset: moving to cc592f
0dba415 HEAD@{1}: reset: moving to HEAD^
cc592f6 HEAD@{2}: commit: add readme.txt
0dba415 HEAD@{3}: commit (initial): first commit

11、查看工作區和版本庫裏面最新版本的區別

$ git diff HEAD -- readme.txt
diff --git a/readme.txt b/readme.txt
index 5669882..b0dd824 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,3 +1,5 @@
 init
 add
-modify
\ No newline at end of file
+modify
+
+log log
\ No newline at end of file

12、丟棄工作區的修改

git checkout -- readme.txt

git checkout其實是用版本庫裏的版本替換工作區的版本,無論工作區是修改還是刪除,都可以“一鍵還原”

13、把暫存區的修改撤銷掉(unstage),重新放回工作區

$ git reset HEAD readme.txt
Unstaged changes after reset:
M       readme.txt

14、刪除一個文件

$ git rm second.txt
rm 'second.txt'

15、與遠程倉庫關聯

git remote add origin https://git.coding.net/Cigar0423/gitStudy.git

16、把本地庫推送到遠程倉庫

git push -u origin maste

由於遠程庫是空的,我們第一次推送master分支時,加上了-u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在以後的推送或者拉取時就可以簡化命令

git push origin master

此後,每次本地提交後,只要有必要,就可以使用命令git push origin master推送最新修改

17、從遠程庫克隆到本地

git clone https://git.coding.net/Cigar0423/gitStudy.git

18、創建並切換到分區

$ git checkout -b work
Switched to a new branch 'work'

git checkout命令加上-b參數表示創建並切換,相當於以下兩條命令:

git branch work
git checkout work

19、查看當前分支

$ git branch
  master
* work

20、合併分支

$ git merge work
Updating 0d14e2b..e29e6eb
Fast-forward
 second.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 second.txt

合併分支要先切到最終要合併到的分支

21、刪除分支

$ git branch -d work
Deleted branch work (was e29e6eb).

22、看到分支合併圖

git log --graph

23、以強制禁用Fast forward模式合併分支

git merge --no-ff -m "merge with no-ff" work

合併分支時,加上–no-ff參數就可以用普通模式合併,合併後的歷史有分支,能看出來曾經做過合併,而fast forward合併就看不出來曾經做過合併。

24、把當前工作現場“儲藏”起來,等以後恢復現場後繼續工作

git stash

查看存儲的工作現場

git stash list

恢復工作現場,但是恢復後,stash內容並不刪除

git stash apply

恢復後,刪除stash內容

git stash drop

恢復的同時把stash內容也刪了

git stash pop

25、強行刪除未提交的分支

git branch -D work

26、查看遠程庫信息

git remote

27、顯示遠程庫詳細信息

git remote -v

28、推送分支,就是把該分支上的所有本地提交推送到遠程庫

git push origin master

29、從遠程抓取分支

git pull

30、在本地創建和遠程分支對應的分支

git checkout -b branch-name origin/branch-name

31、建立本地分支和遠程分支的關聯

git branch --set-upstream branch-name origin/branch-name

32、創建標籤

git tag v1.0
git tag v0.9 6224937

v0.9後面是commit Id

33、查看所有標籤

git tag

34、創建簽名並指定標籤信息

git tag -a v0.1 -m "version 0.1 released" 3628164

35、用PGP簽名標籤

git tag -s v0.2 -m "signed version 0.2 released" fec145a

36、查看標籤信息

git show v0.9

37、刪除標籤

git tag -d v0.1

38、推送某個標籤到遠程

git push origin v1.0

39、一次性推送全部尚未推送到遠程的本地標籤

git push origin --tags

40、刪除一個遠程標籤

git push origin :refs/tags/v0.9

41、讓Git顯示顏色,會讓命令輸出看起來更醒目

git config --global color.ui true

42、強制添加被.gitignore忽略的文件

git add -f App.class

43、檢查忽略規則

git check-ignore -v App.class

44、

git config --global alias.st status

配置Git的時候,加上–global是針對當前用戶起作用的,如果不加,那隻針對當前的倉庫起作用。配置文件放在.git/config文件中。

四、工作區和暫存區

1、工作區
就是我們在電腦裏能看到的目錄

2、版本庫

  • 工作區有一個隱藏目錄.git,這個不算工作區,而是Git的版本庫。
  • Git的版本庫裏存了很多東西,其中最重要的就是稱爲stage(或者叫index)的暫存區
  • 還有Git爲我們自動創建的第一個分支master,以及指向master的一個指針叫HEAD

3、流程

  • git add把文件添加進去,實際上就是把文件修改添加到暫存區
  • git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支
  • 因爲我們創建Git版本庫時,Git自動爲我們創建了唯一一個master分支,所以,現在,git commit就是往master分支上提交更改

五、忽略特殊文件

1、Git工作區的根目錄下創建一個特殊的.gitignore文件,然後把要忽略的文件名填進去,Git就會自動忽略這些文件

2、忽略文件的原則是:

  • 忽略操作系統自動生成的文件,比如縮略圖等
  • 忽略編譯生成的中間文件、可執行文件等,也就是如果一個文件是通過另一個文件自動生成的,那自動生成的文件就沒必要放進版本庫,比如Java編譯產生的.class文件;
  • 忽略你自己的帶有敏感信息的配置文件,比如存放口令的配置文件。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章