一、集中式版本控制系統與分布式的區別
集中式:版本庫集中存放在**伺服器(即存放版本庫的伺服器),必須先從**伺服器取得最新版本的,處理完後再推送到**伺服器(如svn),缺點是必須聯網。
分布式:沒有所謂的「**伺服器」,每乙個人的電腦就是乙個完整的版本庫,因此工作的時候不需要聯網。協作的時候只需要把各自的修改推送給對方。和集中式相比,其安全性更高,由於每個人的電腦都有乙個完整的版本庫,若某人的電腦出現問題,可在他人的電腦複製乙份即可繼續工作,而集中式版本控制的**伺服器若出現問題,所有人都無法繼續幹活了。且開發者之間的衝突更容易得到解決。(實際使用時,通常也會有一台充當「**伺服器」的電腦,僅用來方便交換修改)
git版本控制的優勢:1.不需聯網;2.強大的分支管理;
二、git的常用命令
git init:把當前目錄變成git可以管理的倉庫;
git add (filename):把檔案新增到git倉庫中;
git commit -m 「***」:告訴git,將檔案提交到倉庫中,-m後面輸入的是本次提交內容的說明,方便找到改動的記錄;
git status:時刻掌握倉庫的狀態,是否修改等;
git diff:檢視不同的地方,修改了什麼;
git log:顯示最近到最遠的提交日誌;
git log –pretty=oneline :顯示版本號(conmmit id)+提交說明;
git reset –hard head^:版本回退更改操作;(head:當前版本,head^:上一版本,head^^:上上乙個版本。使用版本號也可以進行回退。)
git reflog:記錄每一次的命令操作。
三、git工作區與暫存區的理解
工作區:就是工作的乙個區域(目錄)。
版本庫:工作區中有乙個隱藏目錄.git,稱為git的版本庫,裡面存放了很多東西,包括最重要的乙個概念:暫存區stage(或 index),同時使用git時會自動建立的第乙個分支master,以及指向master的指標head。
暫存區:可以理解為,需要提交的檔案修改的存放區。
理解往git版本庫新增檔案時的流程:
1.git add:實際上就是把檔案以及修改新增到暫存區中;
2.git commit:實際上就是把暫存區的所有內容提交到當前分支上;
理解點:git跟蹤並管理的是修改,而不是檔案。故每次修改,若不add到暫存區中,那麼就不會加入到commit中。
四、git撤銷修改以及刪除檔案
git checkout –file:把某檔名檔案在工作區的修改全部撤銷掉;
注意點,這裡的撤銷修改有兩種情況,分別如下:
1.file檔案自修改後還未放到暫存區中,即是撤銷後讓其回到和版本庫一樣的狀態;
2.file檔案已經新增到暫存區後,又進行了修改操作,即是撤銷後要回到暫存區的狀態。
git reset head file:可以把暫存區的修改撤銷掉,重新放回工作區中;
git reset:既可用來回退版本,也可以把暫存區的修改回退到工作區。
總結
場景1:當你改亂了工作區的某個檔案時,向直接捨棄工作的修改時,使用git checkout –file命令。
場景2:當你改亂了工作區的某個檔案的內容,且還新增進了暫存區中,此時想捨棄修改,分兩步走,先用命令git reset head file,回到場景1;再同場景1的操作進行。
場景3:已經提交了不合適的修改到版本庫,向撤銷本次修改,直接進行版本回退即可。(前提是沒推送到遠端庫中)
git rm file:刪除工作區的檔案;
1.從版本庫中刪除該檔案:git rm file命令刪除,並且用git commit來提交;
2.將工作區誤刪的檔案恢復:git checkout –file(用版本庫里的版本替換工作區的版本)
深度理解git版本控制
什麼是git git是乙個c語言編寫分布式版本控制系統。不需要 伺服器,不需要聯網 對應的是 集中式的版本控制系統是需要 伺服器的,版本庫是放在 伺服器的,而分布式的版本控制的優點就是沒有 伺服器,每個電腦都是乙個完整的版本庫。這樣,你工作的時候,就不需要聯網了,因為版本庫就在你自己的電腦上 類似系...
git版本控制
1.git 是乙個開源的分布式版本控制系統,可以有效 高速的處理從很小到非常大的專案版本 管理。2.git配置管理 一般,有乙個 集中庫,包含4個分支 qa才能merge production 發布生產,出現生產問題,轉hotfix 研發經理 hotfix 解決緊急生產問題,測試後轉producti...
版本控制 Git
git 是目前世界上最先進的開源的分布式版本控制系統 沒有之一 用於敏捷高效地處理任何或小或大的專案。git 是 linus torvalds 為了幫助管理 linux核心開發而開發的乙個開放原始碼的版本控制軟體。git 與常用的版本控制工具 cvs,subversion 等不同,它採用了分布式版本...