關於git的基本命令

2021-09-06 20:09:41 字數 4804 閱讀 6157

git環境的搭建這裡就先不說。本篇主要是普通開發工作者在開發過程中所使用的命令。

作為開發者,別人搭建git伺服器之後,你呢就配置個人的客戶端:

設定git的配置變數,這個是一次性的工作.即這些設定會在全域性檔案(使用者主目錄下的.gitconfig)中做永久的記錄.

這個.gitconfig檔案並不跟隨.git資料夾進行更改.而是每次設定一次就會更改重寫這個.config檔案.

git config --global user.name "yourname"

git config --global user.email "***[email protected]"

這個地方我說一下git倉庫的初始化的問題:

一般的初始化操作都是git init 命令.

但是這個倉庫一般初始化到了cmd 預設的路徑上了.

我的就是 cmd開啟預設就是 c:\users\kongxiaohan>

如果在git brash上進行git init 命令初始化倉庫的話 對應生成的.git資料夾就在c:\users\kongxiaohan>這個路徑上生成了.

git對應的倉庫就是c:\users\kongxiaohan> 在這個kongxiaohan資料夾中.

很多程式預設都向這個資料夾中放.不方便,建議另外選擇乙個資料夾.

例如我在d盤建立了乙個資料夾(git)做為git的倉庫.

在git brash中

cd d:  

cd git(如果這個時候d盤中沒有git資料夾,用mkdir git命令)

再git init 就在d盤的git資料夾中成功建立了乙個git倉庫.

這個.git目錄就是git的版本庫.(又叫倉庫,repository)

.git資料夾所在的資料夾(我這裡是git)是叫做工作區.

關於切換到指定的路徑上面講的是一種方式,還有一種比較簡單快捷的方式.

在你想指定的工作區右鍵(前提你要安裝好git安裝程式)git brash 這樣就可以把git的目錄指定在了右鍵gitbrash的檔案目錄上(偶然才發現....感覺自己好菜鳥).

設定git中的別名,以便可以適用更為簡潔的子命令.

在本使用者的全域性配置中增加git命令的別名:

$ git config --global alias.ci commit

$ git config --global alias.st status

$ git config --global alias.co check

$ git config --global alias.br branch

在git 命令輸出中開啟顏色顯示(暫時沒有體會到這個配置執行之後的效果)

$ git config --global color.ui true

我的專案共享在了github上 找到對應專案的路徑.

檢出倉庫(用到了git clone命令):

下圖是把專案檢出之後(正在檢出)的git brash的狀態.

clone完畢(最好選擇乙個小的專案clone,否則花費太長的時間)

向git中新增檔案.

1.新增某乙個固定的檔案

git add ***x.*** (後跟檔名)

2.新增所有的檔案  git add . (全部的檔案)

3.新增某一類的檔案 git add *.docx(新增了所有的.docx檔案結尾的檔案)

適用於這種萬用字元的表示.

下面為這個工作區中加點東西.在工作區中建立乙個welcome.txt,內容就是一行"hello world"

執行命令

$ echo "hello world" >welcome.txt

這樣在工作區中有了乙個welcome.txt 檔案中有乙個helloworld.

將這個新建立的檔案新增到版本庫中

$git add welcome.txt

到這裡還沒有完和svn一樣需要再執行乙個commit操作.但是和svn不同的是在commit的時候必須要寫上提交說明.這個要求對於

git來說是強制性的.不像svn那樣接受空白的提交說明.當git提交時,如果不在命令列提供提交說明(就是使用-m引數).git會自動開啟

編輯器,要求你在其中輸入提交說明,輸入完畢後儲存並退出.這個地方因為是在vim編輯器上輸入提交的資訊.

所以要在掌握一些vim或者emacs(linux下常用的兩種編輯器)的編輯技巧.否則儲存和退出也會成為問題.(我嘗試了下,沒搞定.....不知道怎麼儲存和退出.....囧....有時間再搞)

下面進行提交.為了方便說明使用-m引數直接給出提交說明.

$ git commit -m "initialized'

反饋:

從上面的命令及輸出中可以看出:

此次提交是提交在了master的分支上.(如果是該分支的第乙個提交會有(root-commit))提交的id是 b78bbdf.

從第二行可以看出是此次提交修改了乙個檔案,包含0行的插入.0個刪除.

從第三行可以看出,此次提交建立了新檔案test7.txt

為什麼工作區根目錄下有乙個.git

git以及其他分布式版本控制系統(如mercurial/hg,bazaar)的乙個共同的顯著特點是,版本庫位於工作區的根目錄下,對於git來說,版本庫位於工作區根目錄下的.git目錄中,有且僅此一處,在工作區的子目錄下則沒有任何其他跟蹤檔案或者目錄.git的這種設計要比cvs和subversion等傳統的集中式版本控制工具方便多了.

傳統的集中式版本控制系統的版本庫和工作區是分開的,甚至是在不同的主機上,因此必須建立工作區和版本庫相對應,下面來看看版本控制系統的前輩們是如何建立工作區和版本庫跟蹤的,通過其各自設計的優缺點,我們會更深刻的體會到git實現的必要和巧妙.

對於subversion而言,工作區的根目錄以及每乙個子目錄下都有乙個.svn目錄,目錄.svn中不僅包含了類似於cvs的跟蹤目錄下的配置檔案,而且包含了當前工作區下每乙個檔案的拷貝,這些檔案的原始拷貝讓某些svn子命令可以脫離版本庫執行.而且,當由客戶端向伺服器提交時候,可以只提交改動的部分,因為改動的檔案可以與檔案的原始拷貝進行差異比較,但是,這麼做也有缺點,除了會像cvs那樣因為引入cvs跟蹤目錄而有可能造成資訊洩露外,還會加倍占用工作區的空間,此外,當在工作區目錄下針對檔案內容進行搜尋時候,會因為.svn目錄下檔案的原始拷貝導致搜尋結果加倍,使搜尋結果混亂.

有的版本控制系統在工作區根本就沒有任何跟蹤檔案,例如,某款商業的版本控制軟體的工作區就非常的乾淨,沒有任何配置檔案和配置目錄,當時這樣的設計更糟糕,因為它實際上是通過伺服器端建立檔案跟蹤,在伺服器端的資料庫中報錯了乙個包含如下資訊的**:那個客戶端,在哪個本地目錄檢出了那個版本的版本庫檔案.這樣做的後果是:如果客戶端將工作區移動或者改名,就會導致檔案的跟蹤狀態丟失,從而出現檔案狀態未知的問題.此外,客戶端作業系統重灌系統也會導致檔案跟蹤狀態丟失.

git這種將版本庫放在工作區根目錄下的設計使得所有的版本控制操作(除了與其他遠端版本庫之間的相互操作)都在本地就可以完成,不像subversion只有寥寥無幾的幾個命令脫離網路執行,而且,git沒有cvs和subversion中存在的安全洩露問題(只要保護好.git目錄),也不會像subversion那樣在搜尋本地檔案時候出現搜尋結果混亂的問題.甚至,git還提供了一條git grep命令來更好的搜尋工作區的檔案內容,例如,我們可以在本書的git庫中執行下面的命令來搜尋版本庫中的檔案內容:

$git grep "工作區檔案內容搜尋"

git將版本庫(.git目錄)放在工作區根目錄下,那麼git的相關操作一定要在工作區根目錄下執行嗎?換句話說,當工作區中包含子目錄,並在子目錄中執行了git命令時,如何定位版本庫位置呢?

實際上,當在git工作區的某個子目錄下執行操作的時候 ,會在工作區目錄中依次向上遞迴查詢,.git目錄,找到的.git目錄就是工作區對應的版本庫,.git所在的目錄就是工作區的根目錄,檔案.git/index記錄了工作區檔案的狀態(實際上是暫存區的狀態).

例如,在非git工作區執行git命令時,會因為找不到.git目錄而報錯.

>>>>>>未完....先總結到這裡.

總結git中的tags 是乙個什麼概念呢?

定期消除臨時branch,命令不好使?

git config 命令列各引數有什麼區別(4.3 63).

是誰完成的提交 (4.4 65)

隨意的設定提交者的姓名,是否不太安全(4.5 67)

使用過svn等集中版本控制系統的使用者都知道,每次提交的時候需要認證,認證成功之後,登陸id就作為提交者id出現在版本庫的提交日誌中.

修改不能直接提交嗎》(5.1 70)

理解git暫存區的概念(stage)

命令別名是幹什麼的?(4.6 68)

git cherry-pick

向git中提交檔案.

git的提交命令為:git commit

這裡要說一下 git commit 和git commit -a

git commit 提交的是暫存區裡面的內容,也就是 changes to be committed 中的檔案。

git commit -a 除了將暫存區裡的檔案提交外,還提交 changes bu not updated 中的檔案。

新增提交資訊

如果直接執行 git commit (-a) 則會預設使用 vi 新增描述。也可以使用git config --global core.editor命令更改為你喜歡的編輯器。還有乙個方法就是使用 -m 選項直接新增提交資訊。

關於git的基本命令

在當前目錄新建乙個git 庫 git init 新建乙個目錄,將其初始化為git 庫 git init project name 顯示當前的git配置 git config list 編輯git配置檔案 git config e global 設定提交 時的使用者資訊 git config glob...

關於Git的基本命令

ctrl c git結束輸入 工作區 working directory 電腦裡能看到的目錄 版本庫 repository 工作區有乙個隱藏目錄.git,這個不算工作區,而是git的版本庫 有暫存區和分支 git init 初始化本地倉庫 git add 新增檔案到git本地倉庫 把檔案新增到暫存區...

git 基本命令

man git man git commit man git pull man git merge git config global user.name yourname git config global user.email yourname example.com cd home git m...