就是你在電腦裡能看到的目錄,比如我的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.txtgit告訴我們,readme.txt被修改了,而license還沒有被新增過,所以他的狀態是untracked。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 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...