工作區和暫存區

2022-07-15 10:03:14 字數 3511 閱讀 2164

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

工作區中有乙個隱藏目錄.git,這個不算工作區,而是git的版本庫。

git的版本庫里存了很多東西,其中最重要的是稱為stage(或者是index)的暫存區,還有git為我們自動常見的第乙個分支master,以及指向master的乙個指標叫head。

把檔案網git版本庫里新增的時候,分為兩步執行:

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

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

因為在我們建立git版本庫時,git自動為我們建立了唯一乙個master分支,所以現在git commit就是往master分支上提交更改。

簡單的理解為,需要提交的檔案修改通通放到暫存區,然後,一次性提交暫存區的所有修改。

zhangkai@bogon  ~/git_zk/learngit   master ●  cat readme.txt 

git is a distributed version control system.

git is free software distributed under the gpl.

git has a mutable index called stage.

zhangkai@bogon  ~/git_zk/learngit   master ●  git status

on branch master

changes not staged for commit:

(use "git add

<

file

>

..." to update what will be committed)

(use "git checkout --

<

file

>

..." to discard changes in working directory)

modified: readme.txt

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

zhangkai@bogon  ~/git_zk/learngit   master ●  vim license

zhangkai@bogon  ~/git_zk/learngit   master ●  git status

on branch master

changes not staged for commit:

(use "git add

<

file

>

..." to update what will be committed)

(use "git checkout --

<

file

>

..." to discard changes in working directory)

modified: readme.txt

untracked files:

(use "git add

<

file

>

..." to include in what will be committed)

.ds_store

license

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

zhangkai@bogon  ~/git_zk/learngit   master ● 

git告訴我們,readme.txt被修改了,而license還沒有被新增過,所以他的狀態是untracked。

現在用git add把readme.txt和license都新增了,然後用git status在看一下:

zhangkai@bogon  ~/git_zk/learngit   master ●  git add readme.txt license .ds_store

zhangkai@bogon  ~/git_zk/learngit   master ✚  git status

on branch master

changes to be committed:

(use "git reset head

<

file

>

..." to unstage)

new file: .ds_store

new file: license

modified: readme.txt

zhangkai@bogon  ~/git_zk/learngit   master ✚ 

現在,暫存區的狀態就變成這樣了:

所以git add命令實際上就是把要提交的所有修改放到暫存區(stage),然後執行git commit就可以一次性把暫存區的所有修改提交到分支。

zhangkai@bogon  ~/git_zk/learngit   master ✚  git commit -m "add files"    

[master cf88bf6] add files

3 files changed, 5 insertions(+)

create mode 100644 .ds_store

create mode 100644 license

zhangkai@bogon  ~/git_zk/learngit   master 

一旦提交後,如果你又沒有對工作區做任何修改,那麼工作區就是乾淨的:

zhangkai@bogon  ~/git_zk/learngit   master  git status

on branch master

nothing to commit, working directory clean

zhangkai@bogon  ~/git_zk/learngit   master 

現在版本庫變成了這樣,暫存區就沒有任何內容了:

小結一點要知道暫存區和工作區的區別,要知道git到底操作了什麼。

工作區和暫存區

git和其他版本控制系統如svn的乙個不同之處就是有暫存區的概念。先來看名詞解釋。就是你在電腦裡能看到的目錄,比如我的learngit資料夾就是乙個工作區 工作區有乙個隱藏目錄.git,這個不算工作區,而是git的版本庫。git的版本庫里存了很多東西,其中最重要的就是稱為stage 或者叫index...

工作區和暫存區

git和其他版本控制系統如svn的乙個不同之處就是有暫存區的概念。先來看名詞解釋。工作區 working directory 就是你在電腦裡能看到的目錄,比如我的learngit資料夾就是乙個工作區 版本庫 repository 工作區有乙個隱藏目錄.git,這個不算工作區,而是git的版本庫。gi...

工作區和暫存區

git和其他版本控制系統如svn的乙個不同之處就是有暫存區的概念。先來看名詞解釋。工作區 working directory 就是你在電腦裡能看到的目錄,比如我的learngit資料夾就是乙個工作區 版本庫 repository 工作區有乙個隱藏目錄.git,這個不算工作區,而是git的版本庫。gi...