git簡單介紹(1)

2021-08-17 13:59:00 字數 4231 閱讀 6633

git是乙個流行的分布式版本控制工具,在本地存放版本庫,在斷網時可以將**提交到本地,待有網時再把**提交到遠端庫,而集中式的svn共用乙個版本庫,必須在網路連通的情況下才能工作。我使用的windows平台,安裝過程略去。

我們建立乙個目錄來作為工作空間(working tree):

mkdir mygit
cd  mygit
初始化乙個倉庫: 

$ git init
initialized empty git repository in d:/mygit/.git/
可以看到生成乙個隱藏的.git目錄,倉庫就建好了。接下來在工作空間裡增加乙個readme.txt檔案,add到版本庫里:

$ git add readme.txt
on branch master

no commits yet

changes to be committed:

(use "git rm --cached ..." to unstage)

new file: readme.txt

提交一下,-m 後面是對本次操作的注釋:

$ git commit -m "wrote a readme file"
[master (root-commit) 748b8cf] wrote a readme file

committer: zdh your name and email address were configured automatically based

on your username and hostname. please check that they are accurate.

you can suppress this message by setting them explicitly:

git config --global user.name "your name"

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

after doing this, you may fix the identity used for this commit with:

git commit --amend --reset-author

1 file changed, 0 insertions(+), 0 deletions(-)

create mode 100644 readme.txt

使用git status 檢視當前git本地工作區、暫存區中檔案的修改狀態

$ git status
on branch master

nothing to commit, working tree clean

為了知道這個過程發生了什麼,先來了解一下git的原理:

git add將工作區的修改新增到暫存區,檢視上面add命令的輸出:

changes to be committed:
(use "git rm --cached ..." to unstage)
說明我們可以做的操作,要麼commit到master,要麼可使用 "git rm " 來刪除add到暫存區的檔案,撤銷掉add操作。git認為檔案的新建,更新,刪除都是一種修改。commit命令作用是將修改提交到master分支上,可以add多次,commit 一次,每次commit都會將暫存區所有的修改提交。

$ git log
commit 127e1c9c59ca798ace9ca5954f935276039e91fe (head -> master)

author: zdh date:   sun mar 25 15:09:50 2018 +0800

455commit d7283083464bfa82450e9ed1261f221d9b466459

author: zdh date:   sun mar 25 15:08:18 2018 +0800

2333

commit 748b8cf26e00a8294ad6ba26cf20b032c17de12b

author: zdh date:   sun mar 25 12:19:56 2018 +0800

來檢視提交歷史,commit後面的一串數字用來唯一標識此次提交,head是乙個指向當前版本的指標,回退版本時可以使用commit id 的前幾位來區分不同的版本:

$ git reset --hard d7283
head is now at d728308 2333
此時本地檔案已經回退到上乙個版本了。

對本地檔案修改的撤銷

在工作區刪除本地檔案:

$ rm readme.txt
使用git status 檢視當前git本地工作區、暫存區中檔案的修改狀態:

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: readme.txt

提示我們工作區的修改沒有儲存到暫存區,紅色表示修改未進行add,我們可以做兩件事,使用:

$ git rm readme.txt或 $ git add readme.txt
將修改add到暫存區,或者是使用下面的命令撤銷掉工作區的修改,其實是用暫存區的檔案進行覆蓋:

$ git checkout readme.txt
此時,本地又有了該檔案。使用git status 檢視當前git本地工作區、暫存區中檔案的修改狀態:

on branch master

nothing to commit, working tree clean

工作區恢復到了刪除前的狀態。

2.對add/rm 操作的撤銷

在暫存區將檔案刪除:

$ git rm readme.txt
rm 'readme.txt'
該命令執行後,同時也將本地檔案刪除了,使用git status 檢視當前git本地工作區、暫存區中檔案的修改狀態:

changes to be committed:

(use "git reset head ..." to unstage)

deleted:    readme.txt

注意到顏色為綠色,表明該修改已經被add到暫存區了,根據提示我們使用 「git reset head  」撤銷此次修改:

$ git reset head readme.txt
$ git status
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:    readme.txt
與一開始只刪除工作區檔案的輸出相同,說明暫存區的rm操作撤銷成功。

小結:對add/rm操作的撤銷使用 git reset head ,對工作區的修改撤銷使用git checkout ,對 commit過的東東撤銷只好回退版本了。

Git學習筆記1 Git原理簡單介紹

git 是乙個分布式的版本號控制工具,假設想用github等版本號控制系統,核心就是git,以下簡介一些git的基礎原理,原文 git不像傳統的vcs將程式按檔案存放管理 例如以下圖 當有檔案有修改時,下個version會將整個修改的file複製。這種管理方式既費事,又占用大量冗餘空間。而git訪問...

Git學習 簡單介紹

git的作者是linux之父 linus benedict torvalds 為了輔助linux核心的開發而開發出來的。是目前世界上最先進的分布式版本控制系統。git是乙個分布式管理 在伺服器和客戶端都有版本控制能力。都能進行 的提交與合併等。git會在根目錄下建立乙個.git隱藏資料夾,作為本地的...

Git的簡單介紹

同生活中的許多偉大事物一樣,git 誕生於乙個極富紛爭大舉創新的年代。linux 核心開源專案有著為數眾多的參與者。絕大多數的 linux 核心維護工作都花在了提交補丁和儲存歸檔的繁瑣事務上 1991 2002年間 到 2002 年,整個專案組開始啟用乙個專有的分布式版本控制系統 bitkeeper...