Git項(xiàng)目管理
Git簡(jiǎn)史
這里轉(zhuǎn)載一下Git官網(wǎng)上一本書的描述:
同生活中的許多偉大事物一樣料按,Git 誕生于一個(gè)極富紛爭(zhēng)大舉創(chuàng)新的年代鸿染。
Linux 內(nèi)核開源項(xiàng)目有著為數(shù)眾廣的參與者。 絕大多數(shù)的 Linux 內(nèi)核維護(hù)工作都花在了提交補(bǔ)丁和保存歸檔的繁瑣事務(wù)上(1991-2002年間)。 到 2002 年,整個(gè)項(xiàng)目組開始啟用一個(gè)專有的分布式版本控制系統(tǒng) BitKeeper 來管理和維護(hù)代碼。
到了 2005 年题诵,開發(fā) BitKeeper 的商業(yè)公司同 Linux 內(nèi)核開源社區(qū)的合作關(guān)系結(jié)束,他們收回了 Linux 內(nèi)核社區(qū)免費(fèi)使用 BitKeeper 的權(quán)力层皱。 這就迫使 Linux 開源社區(qū)(特別是 Linux 的締造者 Linus Torvalds)基于使用 BitKeeper 時(shí)的經(jīng)驗(yàn)教訓(xùn)性锭,開發(fā)出自己的版本系統(tǒng)。 他們對(duì)新的系統(tǒng)制訂了若干目標(biāo):
- 速度
- 簡(jiǎn)單的設(shè)計(jì)
- 對(duì)非線性開發(fā)模式的強(qiáng)力支持(允許成千上萬個(gè)并行開發(fā)的分支)
- 完全分布式
- 有能力高效管理類似 Linux 內(nèi)核一樣的超大規(guī)模項(xiàng)目(速度和數(shù)據(jù)量)
自誕生于 2005 年以來叫胖,Git 日臻成熟完善草冈,在高度易用的同時(shí),仍然保留著初期設(shè)定的目標(biāo)瓮增。 它的速度飛快怎棱,極其適合管理大項(xiàng)目,有著令人難以置信的非線性分支管理系統(tǒng)
Git基礎(chǔ)
三個(gè)工作區(qū)域
Git的三個(gè)工作區(qū)域分別是:工作目錄(Working Directory)绷跑、暫存區(qū)域(Staging Area)拳恋、Git倉(cāng)庫(kù)(Repository),他們分別對(duì)應(yīng)文件的三種狀態(tài)已修改(modified)砸捏、已暫存(staged)谬运、已提交(committed)。
他們的關(guān)系如下圖所示:
配置
安裝省略
/etc/gitconfig
: 系統(tǒng)全局配置垦藏。git config
加--system
時(shí)梆暖,它會(huì)從此文件讀寫配置變量。~/.gitconfig
掂骏、~/.config/git/config
:只針對(duì)當(dāng)前用戶轰驳。--global
選項(xiàng)讓 Git 讀寫此文件。.git/config
:針對(duì)該倉(cāng)庫(kù)。
每一個(gè)級(jí)別覆蓋上一級(jí)別的配置级解,所以 .git/config
的配置變量會(huì)覆蓋 /etc/gitconfig
中的配置變量冒黑。
當(dāng)安裝完 Git 應(yīng)該做的第一件事就是設(shè)置你的用戶名稱與郵件地址。 這樣做很重要蠕趁,因?yàn)槊恳粋€(gè) Git 的提交都會(huì)使用這些信息薛闪,并且它會(huì)寫入到你的每一次提交中,不可更改:
$ git config user.name yu
$ git config user.email yu@foxmail.com
基礎(chǔ)命令
命令 | 描述 | 可選項(xiàng) | |
---|---|---|---|
git status | 查看當(dāng)前狀態(tài) | ||
git add files | 將files由工作目錄添加到暫存區(qū)域 | ||
git diff | 工作目錄VS暫存目錄 | --staged:暫存目錄VSGit倉(cāng)庫(kù) | |
git commit | 提交暫存目錄的文件到Git倉(cāng)庫(kù) | -m, -a, --amend | |
git rm | 從暫存區(qū)域移除 | --cached | |
git mv | 對(duì)文件重命名 | ||
git log | 顯示提交歷史 | ||
git reset | 取消暫存的文件 | --soft, --hard | |
git checkout | 撤銷文件修改 | ||
git fetch | 從遠(yuǎn)程倉(cāng)庫(kù)拉取到本地俺陋,不合并 | ||
git pull | 從遠(yuǎn)程倉(cāng)庫(kù)拉取指定分支合并到指定分支 | ||
git push | 從本地分支推送到遠(yuǎn)程分支 | ||
git tag | 打標(biāo)簽,一般代表一個(gè)發(fā)布節(jié)點(diǎn) | ||
git config --global alias.st status | 創(chuàng)建別名昙篙,git st | ||
git branch | 分支管理 | ||
git merge | 分支合并 |