Git 版本控制系統(tǒng)
???? 優(yōu)點(diǎn):
????????????????? 更好的備份挤聘,更好的回溯轰枝,更好的團(tuán)隊(duì)協(xié)作
????????????????? 每一次提取都相當(dāng)于完整備份一次代碼庫(kù)
????????????????? 本地執(zhí)行,速度快组去,段網(wǎng)的時(shí)候不受影響
????????????????? 文檔詳細(xì)鞍陨,命令行的提示明確,輕量級(jí)
?? 缺點(diǎn):
????????????????? 每個(gè)開(kāi)發(fā)人員都擁有所有代碼从隆,不利于核心代碼的保密
?? 組成:
??????? ????????? 工作區(qū):存放git版本倉(cāng)庫(kù)的目錄就是工作區(qū)
???????????????? 版本庫(kù):工作區(qū)有個(gè)隱藏目錄.git诚撵,是git的版本庫(kù)
????????????????? 暫存區(qū):最重要的是stage(或者index)的暫存區(qū)
添加修改到暫存區(qū):
????????????????? git??? add??? 文件名??? 或者????? git???? add??? *
版本日志:
????????????????? git?? log
顯示分支:
????????????????? git? log???? --graph
創(chuàng)建本地庫(kù):
????????????????? mkdir??? gittest
????????????????? cd??? gittest/
????????????????? git??? init?? //初始化版本庫(kù)
????????????????? ls?? -a??????? //查看庫(kù)目錄
?????????????????????????????????? . ? ? .. ? ?? .git
????????????????? 隨便創(chuàng)建一個(gè)測(cè)試文件???? readme.txt
?????????????????????????????????? Git is a version control system.
?????????????????????????????????? Git is free software.
????????????????? git?? add?? readme.txt //建立跟蹤
????????????????? git??? status????? //查看狀態(tài)
????????????????? git? rm -cached ? readme.txt ? //可以刪除文件跟蹤 ,但不可以退回键闺,建議使用撤銷修改
????????????????? git?? commit?? -m? "test" //提交文件到倉(cāng)庫(kù)分支
????????????????????????????????? -m???? 本次提交的說(shuō)明
??????????????????????????? [master(根提交) addd750] test
??????????????????????????? 1 file changed, 2 insertions(+)
???????????????????????????? create mode 100644 readme.txt
????????????????? git??? status??????? //查看git狀態(tài):
??????????????????????????? # 位于分支 master
????????????????????????????? 無(wú)文件要提交寿烟,干凈的工作區(qū)
????????????????? echo? hello?? >>? readme.txt??? //修改文件后再次查看狀態(tài):
????????????????????????????? # 位于分支 master
????????????????????????????? # 尚未暫存以備提交的變更:
????????????????????????????? #? (使用 "git add ..." 更新要提交的內(nèi)容)
????????????????????????????? #? (使用 "git checkout -- ..." 丟棄工作區(qū)的改動(dòng))
????????????????????????????? #
????????????????????????????? #修改:? ? ? readme.txt
????????????????????????????? #
????????????????????????????? 修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
????????????????? git??? diff??? //查看修改了什么內(nèi)容
????????????????????????????? [root@vm20 gittest]# git diff
????????????????????????????? diff --git a/readme.txt b/readme.txt
????????????????????????????? index 795d143..57083df 100644
????????????????????????????? --- a/readme.txt
????????????????????????????? +++ b/readme.txt
????????????????????????????? @@ -1,2 +1,3 @@
????????????????????????????? Git is a version control system.
????????????????????????????? Git is free software.
????????????????????????????? +hello
????????????????? 再次提交可以先add再commit,也可以使用-a和commit一起:
????????????????????????????? [root@vm20 gittest]# git commit -a -m "添加hello一行"
????????????????????????????? [master 7e99d94] 添加hello一行
????????????????????????????? 1 file changed, 1 insertion(+)
????????????????????????????? [root@vm20 gittest]# git status
????????????????????????????? # 位于分支 master
????????????????????????????? 無(wú)文件要提交辛燥,干凈的工作區(qū)
撤銷修改:
??????????????????? [root@vm20 gittest]# git checkout -- a.txt
版本回退:
?????????????????? git??? log???? //? 查看現(xiàn)在的版本
??????????????????????????? [root@ansible gittest]# git log
??????????????????????????? commit 898a61cb50da77daeda51453bef38c98fecd46a0
??????????????????????????? Author: Alex
??????????????????????????? Date:Sun Feb 25 18:04:27 2017+0800
??????????????????????????? test1
??????????????????????????? commit d75411fb17e661cefc1900a09c8a784e8aa0d79a
??????????????????????????? Author: Alex
??????????????????????????? Date:Sun Feb 25 17:56:45 2017+0800
??????????????????????????? test1
?????????????????? git reset --hard HEAD^?? // 回到上一個(gè)版本
?????????????????? git reset --hard 6fe5b9a2?? // 回到指定版本(根據(jù)版本號(hào))
?????????????????? git?? reflog???? //可以查看消失的版本ID筛武,用于退回到消失的版本
??????????????????????????? [root@vm20 gittest]# git reflog
??????????????????????????? 32c31f5 HEAD@{0}: reset: moving to 32c31f54c1
??????????????????????????? 6fe5b9a HEAD@{1}: reset: moving to 6fe5b9a2
??????????????????????????? 928ab9e HEAD@{2}: reset: moving to HEAD^^
??????????????????????????? 83f6e8d HEAD@{3}: reset: moving to HEAD^
??????????????????????????? 6fe5b9a HEAD@{5}: commit: 這個(gè)能寫(xiě)中文
刪除文件:
??????????????? 從工作區(qū)刪除a.txt缝其,并且從版本庫(kù)一起刪除
??????????????? [root@vm20 gittest]# rm -rf a.txt
??????????????? [root@vm20 gittest]# git status
??????????????? # 位于分支 master
??????????????? # 尚未暫存以備提交的變更:
??????????????? #? (使用 "git add/rm ..." 更新要提交的內(nèi)容)
??????????????? #? (使用 "git checkout -- ..." 丟棄工作區(qū)的改動(dòng))
??????????????? #
??????????????? #刪除:? ? ? a.txt
??????????????? #
??????????????? 修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
??????????????? [root@vm20 gittest]# git rm a.txt
??????????????? rm 'a.txt'
??????????????? [root@vm20 gittest]# git commit -m "刪除文件a.txt"
??????????????? [master 4bb90a4] 刪除文件a.txt
??????????????? 1 file changed, 4 deletions(-)
??????????????? delete mode 100644 a.txt
??????????????? [root@vm20 gittest]# git status
??????????????? # 位于分支 master
??????????????? 無(wú)文件要提交,干凈的工作區(qū)
??????????????? 刪除了文件readme.txt之后又后悔了徘六,恢復(fù)回來(lái)
??????????????? [root@vm20 gittest]# ls
??????????????? readme.txt
??????????????? [root@vm20 gittest]# rm -rf readme.txt
??????????????? [root@vm20 gittest]# git checkout -- readme.txt
??????????????? [root@vm20 gittest]# ls
??????????????? readme.txt
替換本地改動(dòng):
??????????????? 假如你想要丟棄你所有的本地改動(dòng)與提交内边,可以到服務(wù)器上獲取最新的版本并將你本地主分支指向到它:
??????????????? [root@ansible gittest]# vim a.txt
??????????????? [root@ansible gittest]# git fetch origin
??????????????? [root@ansible gittest]# git reset --hard origin/master
??????????????? HEAD 現(xiàn)在位于 5b83380 hello