目前市場主流的版本控制系統主要分爲:集中式版本控制系統與分佈式版本控制系統。
集中式版本控制目前主流的:SVN
分佈式版本控制系統目前主流的:Git
兩者之間的區別:
集中式有中央服務器,開發人員需要從中央服務器獲得最新版本的項目然後在本地開發,開發完推送到中央服務器中,因此無法脫離服務器。
分佈式沒有中央服務器,開發人員本地都有local repository
集中式必須要聯網才能工作,而且對網絡的依賴性較強,如果推送的文件比較大而且網絡狀態欠佳,則提交文件的速度會受到很大的限制。
分佈式在沒有網絡的情況下也可以執行commit、查看版本提交的記錄,以及分支操作,在有網絡的情況下執行push到 Remote Repository。
集中式提交的文件會直接記錄到中央版本庫,分佈式提交是本地操作,需要執行push操作纔會到主要版本庫。
Git工作過程圖:
本地庫與遠程庫交互的方式:
1、團隊內協作
成員1創建本地庫,將代碼提交到遠程倉庫,成員2clone下代碼,加入團隊後纔可以進行push操作。
2、跨團隊協作
團隊2可以fork團隊1的代碼,團隊2通過pull request之後,通過團隊1進行審覈。
Git配置:
項目級別的配置:
git config user.name tom
git config user.email [email protected]
修改的文件在:當前項目下.git/config
用戶級別的配置:
git config --global user.name tom
git config --global user.email [email protected]
Git命令:
創建倉庫:git init
查看狀態:git status
創建一個文件添加到git中
git add aa.txt 將aa.txt添加到git暫存區中。
git -rm --cached aa.txt:將aa.txt從暫存區刪除。
提交:git commit -m "添加新文件"
添加並提交:git commit -am "xxx" add並commit
查看提交記錄:git log 或者: git log --pretty=oneline 或者 git log --oneline 或者 git reflog
版本的前進與後退:git reset --hard 版本的索引值
版本的後退:只能後退:
git reset --hard HEAD^ 後退一步
git reset --hard HEAD^^^ 後退三步
git reset --hard HEAD~3 後退三步
--hard --soft --mixed
--hard:工作區與暫存區與本地庫一起改變
--soft:工作區與暫存區不變,本地庫落後
--mixed:工作區不變,暫存區與本地庫落後
git reset --hard HEAD 將暫存區與工作區與本地庫狀態同步
在當前版本的中刪除了文件a.txt,然後查看git status,然後git add a.txt git commit -m 'delete'
當時,當前版本的中a.txt將不在存在,我們如果想找回,需要回到上一個版本中。纔可以找回。
對於刪除文件記錄提交到暫存區,想恢復:
git reset --hard HEAD 這個時候,會將暫存區與工作同的內容與本地庫進行同步操作。
--------前提是刪除前的狀態,提交到了git本地庫裏面。----------
比較文件差異:
git diff 文件名 默認是將當前工作區中的文件與暫存區中的文件進行比較的。
git diff HEAD 文件名 當前工作區與本地庫中的版本進行比較的。
分支操作:
創建分支:git branch dev
查看分支:git branch -v
切換分支:git checkout dev
合併分支:git checkout master git merge dev
合併分支衝突問題:當修改了相同的內容的時候,會產生衝突問題
產生衝突時,需要對產生衝突的文件進行手動的合併操作
合併完成後,git add xx
git commit -m "xxxx" 注意:此時不帶文件名。
git pull 從遠程上拉取項目,它相當於git foreach與git merge兩個命令的組合使用。
GitHub
git連接github
git remote origin xxxxxxx.git地址
git remote -v 查看
從服務器中拉取項目
從服務器中上傳項目
解決衝突問題。
git push origin master
git remote add origin 倉庫的地址
2、查詢用戶信息
git config --list
3、如果push遇到在輸入密碼是熟錯後,就會報這個錯誤fatal: Authentication failed for
解決辦法:
git config --system --unset credential.helper
之後你在push就會提示輸入名稱和密碼
所以我們需要先同步一下
git pull origin master
6、更新項目
git push origin master
7、創建分支
git checkout -b dev
等於:
git branch dev
git checkout dev
8、切換分支
git checkout dev
9、合併分支,在合併分支的時候,需要合併到哪個分支,就要先切換到哪個分支
git checkout master
git merge dev 合併分支
git reset --hard dev;
git pull --force origin master