Git 簡易使用教程

2022-06-27 09:21:12 字數 4116 閱讀 3750

簡單的來說,就是為了託管龐大的linux原始碼,開始選擇了商用的版本控制系統bitkeeper,但是因為一系列操作,bitkeeper不讓用了,所以linus花了兩周時間自己用c寫了乙個分布式版本控制系統,這就是git!自己寫了乙個,還用了兩周...

記住分布式的比集中式的流弊就完事了。

linux系統

sudo apt-get install git

選擇乙個合適的地方,建立乙個空目錄

通過git init命令把這個目錄變成git可以管理的倉庫

git init

增加/修改檔案並提交

例如,用vscode增加乙個readme.md檔案,然後

git add readme.md

git commit -m '我建立了readme.md檔案'

第一步是用git add把檔案新增進去,實際上就是把檔案修改新增到暫存區;

第二步是用git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支;

git status,可以讓我們時刻掌握倉庫當前的狀態.

**git diff --file_name **,顧名思義就是檢視difference,顯示的格式正是unix通用的diff格式.

git log,顯示從最近到最遠的提交日誌.

git reflog,檢視命令歷史,以便確定要回到未來的哪個版本.

git reset --hard commit_id,head指向的版本就是當前版本,因此,git允許我們在版本的歷史之間穿梭.

git reset head file_name,可以把暫存區的修改撤銷掉(unstage),重新放回工作區,git reset既可以回退版本,也可以把暫存區的修改回退到工作區.

git checkout -- file_name,命令把file_name檔案在工作區的修改全部撤銷,這裡有兩種情況:

一種是file_name自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;

一種是file_name已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。

總之,就是讓這個檔案回到最近一次git commit或git add時的狀態。

拉取指定檔案:

git fetch

git checkout origin/master -- path/folder/filename

撤銷commit:

一般本地更改**後,會進行如下操作:

git add .// 新增所有檔案

git commit -m「本功能完成」

但是,此時先撤回commit如何做呢?

git reset --mixed head^

說明:指不刪除工作空間改動**,撤銷commit,並且撤銷git add . 操作。這個為預設引數,git reset --mixed head^ 和 git reset head^ 效果是一樣的。

git reset --soft head^// head^代表上乙個版本,亦可以寫成head~1,同理撤回兩次commit,可以使用head~2

說明:不刪除工作空間改動**,撤銷commit,不撤銷git add . 操作 。

git reset --hard head^git commit --amend

撤銷修改小結:

場景1:當你改亂了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令git checkout -- file。

場景2:當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset head ,就回到了場景1,第二步按場景1操作。

場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節,不過前提是沒有推送到遠端庫。

建立ssh key

開啟git bash,輸入ssh-keygen -t rsa -c "[email protected]"

回車執行後,在使用者主目錄裡找到.ssh目錄,裡面有id_rsa和id_rsa.pub兩個檔案,這兩個就是ssh key的秘鑰對,id_rsa是私鑰,不能洩露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。

登入**託管**,在設定裡增加ssh key,填寫id_rsa.pub檔案的內容。

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

git branch dev

git checkout dev

例如:git checkout -b dev,建立了dev分支,然後切換到dev分支。

git switch,最新版本的git提供了這個新的命令來切換分支

git branch -d dev,刪除了dev分支

git branch,會列出所有分支,當前分支前面會標乙個*號。

git merge,用於合併指定分支到當前分支

例如:當前在master,使用git merge dev,則會把dev的內容合併到master。

git log --graph,可以看到分支合併圖。

git branch -d,如果要丟棄乙個沒有被合併過的分支,可以通過該命令強行刪除。

git rebase,可以把本地未push的分叉提交歷史整理成直線。rebase的目的是使得我們在檢視歷史提交的變化時更容易,因為分叉的提交需要三方對比。

搭建git伺服器需要準備一台執行linux的機器,強烈推薦用ubuntu或debian,這樣,通過幾條簡單的apt命令就可以完成安裝。

假設你已經有sudo許可權的使用者賬號,下面,正式開始安裝。

安裝git:

$ sudo apt-get install git

建立乙個git使用者,用來執行git服務:

$ sudo adduser git

建立證書登入:

收集所有需要登入的使用者的公鑰,就是他們自己的id_rsa.pub檔案,把所有公鑰匯入到/home/git/.ssh/authorized_keys檔案裡,一行乙個。

初始化git倉庫:

先選定乙個目錄作為git倉庫,假定是/srv/sample.git,在/srv目錄下輸入命令:

$ sudo git init --bare sample.git

git就會建立乙個裸倉庫,裸倉庫沒有工作區,因為伺服器上的git倉庫純粹是為了共享,所以不讓使用者直接登入到伺服器上去改工作區,並且伺服器上的git倉庫通常都以.git結尾。然後,把owner改為git:

$ sudo chown -r git:git sample.git

管理公鑰

如果團隊很小,把每個人的公鑰收集起來放到伺服器的/home/git/.ssh/authorized_keys檔案裡就是可行的。如果團隊有幾百號人,就沒法這麼玩了,這時,可以用gitosis來管理公鑰。

這裡我們不介紹怎麼玩gitosis了,幾百號人的團隊基本都在500強了,相信找個高水平的linux管理員問題不大。

管理許可權

有很多不但視源**如生命,而且視員工為竊賊的公司,會在版本控制系統裡設定一套完善的許可權控制,每個人是否有讀寫許可權會精確到每個分支甚至每個目錄下。因為git是為linux源**託管而開發的,所以git也繼承了開源社群的精神,不支援許可權控制。不過,因為git支援鉤子(hook),所以,可以在伺服器端編寫一系列指令碼來控制提交等操作,達到許可權控制的目的。gitolite就是這個工具。

廖雪峰官網-git教程

Git簡易使用教程

1.git 安裝 2.設定git登入資訊 3.git操作命令 4.提交 的過程中幾個命令的順序 5.git 學習資料.安裝完成後,滑鼠右鍵裡找到 git bash here 彈出乙個類似命令列的視窗,就說明git安裝成功!安裝完成後,可以使用git了。在上面的git bash命令視窗裡輸入以下命令,...

git簡易使用

git是分布式版本控制系統,和其他版本控制系統的主要差別在於git 只關心檔案資料的整體是否發生變化,而大多數其他系統則只關心檔案內容的具體差異。git 並不儲存這些前後變化的差異資料。git 更像是把變化的檔案作快照後,記錄在乙個微型的檔案系統中。每次提交更新時,它會縱覽一遍所有檔案的指紋資訊並對...

Git簡易使用

安裝git,安裝後右鍵滑鼠會多出來下圖標註的兩個標誌,證明安裝成功 點選git bash here 開啟類似於命令列的視窗建立新倉庫 以下參考自 建立新資料夾,開啟,然後執行 git init 以建立新的 git 倉庫。檢出倉庫 執行如下命令以建立乙個本地倉庫的轉殖版本 git clone path...