1. 程式人生 > >入門Git

入門Git

本文是我在[實驗樓]這個平臺學習git時的第一篇學習筆記,現貼出來以饗大家!

git學習

1、git的配置

git的配置主要通過git config --global <配置名稱> <配置的值>來對git進行配置

其中最常用的配置為:

git config --global user.name name
git config --global user.email email

完成配置後,配置資訊會存在於一個隱藏檔案中:.gitconfig。可以通過cat .gitconfig檢視配置內容。

2、獲取一個Git倉庫

這有兩種方法:

1、從已有的Git倉庫中克隆(clone)。通過git clone URL方式clone程式碼。

2、新建一個倉庫。通過git init在某資料夾中初始化一個空倉庫,初始化完畢後,在該資料夾中會新建一個隱藏檔案`.git``

3、git的基本流程

1、建立或修改檔案

2、使用git add命令新增新建立或修改的檔案到本地快取區(index)

3、使用git commit命令提交原生代碼庫

4、使用git push命令將原生代碼庫同步到遠端程式碼庫

git status檢視當前git倉庫的狀態,新建的檔案的狀態時:untracked

使用git add file

命令將檔案加入到快取區(index)後,該檔案狀態會改變為:new file

使用git diff --cached檢視快取區中哪些檔案被修改了,進入該介面後,需要輸入q才可以退出,該命令只檢視加入到快取的檔案的變化。

使用git commit提交修改,git commit可選引數:-m新增本次修改的註釋,完成後就會記錄一個新的專案版本。:-a將沒有加到快取區的修改也一起提交,對已提交過的檔案進行修改後,檔案狀態變為:modified,需要注意的是-a命令不會新增新建的檔案,如果一個檔案不是新建的,而是被修改過,則可以通過這個命令提交,如果是新建的,則不能進行提交。

如果是刪除檔案,則直接使用git rm

命令刪除後會將已刪除檔案的資訊新增到快取區,git commit提交後就會將本地倉庫中的對應檔案刪除。

如果希望將本地倉庫關聯到遠端伺服器,可以使用git remote命令,當前倉庫是使用git init初始化的本地倉庫,所以需要將本地倉庫與遠端倉庫關聯,使用的命令為:

git remote add origin https://github.com/user-name/project.git

git remote add命令用於新增遠端主機,origin是主機名,可以自定義,https://github.com/user-name/project.git是要關聯的遠端倉庫地址。

提交程式碼:

git push origin master

4、分支與合併

git分支可以讓你在主線(master)之外進行程式碼提交,同時又不會影響程式碼庫主線。

分支的作用:體現在多人協作開發中,比如一個團隊開發軟體,你負責獨立的一個功能需要一個月的時間來完成,你就可以建立一個分支,只把該功能的程式碼提交到這個分支,而其他同事仍然可以繼續使用主線開發,你每天的提交不會對他們造成任何影響。當你完成功能後,測試通過再把你的功能分支合併到主線。

1、建立分支:

git branch branch-name

git branch命令可以檢視當前的分支列表,以及目前的開發環境處於哪個分支上。

2、切換分支

master分支是git系統預設建立的主分支,*號標識了你當前工作在哪個分支下。

git checkout 分支名可以切換到其他分支。

3、合併分支

通過git merge合併分支

eg:

git merge -m "註釋" 需要合併的分支名

如果不同分支同時修改了同一檔案,則不能直接通過git merge命令合併。此時通過git status檢視狀態,則被同時修改的檔案的狀態為:both modified

此時檢視被修改的內容,可以看到不同分支對該檔案的修改,也可以通過git diff檢視到相同的內容。

不同分支衝突的內容都被新增到被修改的檔案中,此時需要手動解決衝突,用vim開啟該檔案,去掉<<<<<<等符號後,根據需要保留提交的 內容,然後git addgit commit提交。

如果出現cannot do a partial commit during a merge

1、提交全部:git commit -a

2、如果不想提交全部,可以通過新增-i選項:git commit file/to/path -i -m "merge"

4、刪除分支

完成合並後,不再需要某分支時,可以通過以下命令刪除:

git branch -d branch-name

git branch -d只能刪除那些已經被當前分支合併的分支,如果要強制刪除某分支,用git branch -D

5、撤銷一個分支

通過以下命令,返回合併之前的狀態。

git reset --hard [merge前的版本號]

5、git日誌

1、檢視日誌

通過git log命令顯示所有提交,回車會逐步顯示,輸入q退出

2、日誌統計

如果用--stat選項使用git log,它會顯示在每個提交中哪些檔案被修改了,這些檔案分別新增或刪除多少行內容。

git log --stat

3、格式化日誌

--pretty引數可以使用若干表現格式,如oneline、short、medium、full、fuller、email、、raw

--graph用來視覺化提交圖

4、日誌排序

日誌記錄可以按不同的順序來顯示,如果你要指定一個特別的順序,可以為git log命令新增順序引數。

指定--topo-order引數,讓提交按拓撲順序來顯示(就是子提交在它們的父提交前顯示)

git log --pretty=format:"%h:%s" --topo-order --graph

也可以用--reverse引數來逆向顯示所有提交日誌。