Git版本控制 2 git版本控制基本命令

2021-07-26 20:46:19 字數 4025 閱讀 9544

版本回退

現在,我們最次修改readme的檔案,並再次提交檔案:

$ git add readme.txt

1 file changed, 1 insertion(+), 1 deletion(-)

有些時候,在打boss之前,你會手動存檔,以便萬一打boss失敗了,可以從最近的地方重新開始。git也是一樣,每當你覺得檔案修改到一定程度的時候,就可以「儲存乙個快照」,這個快照在git中被稱為commit。一旦你把檔案改亂了,或者誤刪了檔案,還可以從最近的乙個commit恢復,然後繼續工作,而不是把幾個月的工作成果全部丟失。

$ git log

--pretty=oneline

ea34578d5496d7dd233c827ed32a8cd576c5ee85 add distributed

cb926e7ea50ad11b8f9e909c05226233bf755030 wrote a readme file

需要友情提示的是,你看到的一大串類似3628164…882e1e0的是commit id(版本號)。

在git中,用head表示當前版本,也就是最新的提交3628164…882e1e0,上乙個版本就是head^,上上乙個版本就是head^^,往上的地一百個版本可以表示為head~100

工作區和暫存區接下來的環節,我們要看看git版本控制系統的工作區和暫存區:

工作區(working directory):就是你在電腦裡能看到的目錄,比如我的learngit資料夾就是乙個工作區。

版本庫(repository):*工作區*有乙個隱藏目錄.git,這個不算工作區,而是git的版本庫。

git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區(我們執行新增(add)指令之後,就把檔案新增修改到暫存區),還有git為我們自動建立的第乙個分支master(就是把暫存區的所有內容提交到當前分支),以及指向master的乙個指標叫head,看圖:

從工作區add檔案到暫存區需要逐個檔案新增,如果從暫存區commit到分支上則只需提交一次。

管理修改

假如說你修改了兩次檔案,把第一次修改的檔案add到暫存區,而第二次的沒有add,然後我們commit到master裡面。理解了工作區和版本庫的知識後,這個管理的修改就特別容易理解。

提交後,用git diff head – readme.txt命令可以檢視工作區和版本庫裡面最新版本的區別:

$ git diff head -- readme.txt 

diff --git a/readme.txt b/readme.txt

index 76d770f..a9c5755 100644

--- a/readme.txt

+++ b/readme.txt

@@ -1,4 +1,4 @@

git is a distributed version control system.

git is free software distributed under the gpl.

git has a mutable index called stage.

-git tracks changes. /*版本庫*/

+git tracks changes of files. /*工作區*/

撤銷修改
$ git status

# on branch master

# changes not staged for commit:

# (use "git add ..." to update what will be committed)

# (use "git checkout -- ..." to discard changes in working directory)

## modified: readme.txt

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

我們會發現,git checkout – file可以丟棄工作區的修改,把readme.txt檔案在工作區的修改全部撤銷。

1:如果你還沒有把檔案add到暫存區,這個撤銷指令會把檔案恢復到很版本庫裡面的一樣。

2:如果你已經把檔案add到暫存區,然後再修改檔案,這個撤銷指令會會把檔案恢復到新增到暫存區後的狀態。

用命令git reset head file可以把暫存區的修改撤銷掉(unstage),重新放回工作區:

$ git reset head readme.txt

unstaged changes after reset:

m readme.txt

刪除檔案我們可以直接用rm指令把工作區的檔案刪除掉:

$ rm test.txt
git知道你刪除了檔案,工作區和版本庫不一致了,git status命令會立刻告訴你哪些檔案被刪除了:

$ git status

# on branch master

# changes not staged for commit:

# (use "git add/rm ..." to update what will be committed)

# (use "git checkout -- ..." to discard changes in working directory)

## deleted: test.txt

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

現在你有兩個選擇,一是確實要從版本庫中刪除該檔案,那就用命令git rm刪掉,並且git commit:

$ git rm test.txt

rm 'test.txt'

$ git commit -m "remove test.txt"

[master d17efd8] remove test.txt

1 file changed, 1 deletion(-)

delete mode 100644 test.txt

另一種情況是刪錯了,因為版本庫里還有呢,所以可以很輕鬆地把誤刪的檔案恢復到最新版本:

$

gitcheckout--

test

.txt

git版本控制

1.git 是乙個開源的分布式版本控制系統,可以有效 高速的處理從很小到非常大的專案版本 管理。2.git配置管理 一般,有乙個 集中庫,包含4個分支 qa才能merge production 發布生產,出現生產問題,轉hotfix 研發經理 hotfix 解決緊急生產問題,測試後轉producti...

版本控制 Git

git 是目前世界上最先進的開源的分布式版本控制系統 沒有之一 用於敏捷高效地處理任何或小或大的專案。git 是 linus torvalds 為了幫助管理 linux核心開發而開發的乙個開放原始碼的版本控制軟體。git 與常用的版本控制工具 cvs,subversion 等不同,它採用了分布式版本...

GIT版本控制

不同情況下,實現版本回退 1.對於修改內容後,未add,未commit 可以利用git checkout 檔名 2.對於修改內容後,add,未commit get reset head 檔名 git checkout 檔名 3.對於修改內容後,add,commit 可以回到任何乙個版本 root g...