集中式vs分布式
集中式版本控制系統(tǒng):
版本庫是集中存放在中央服務(wù)器的,干活時,用的都是自己的電腦牺弄,要先從中央服務(wù)器取得最新的版本料饥,然后開始干活蒲犬,干完活了,再把自己的活推送給中央服務(wù)器岸啡。中央服務(wù)器就好比是一個圖書館原叮,你要改一本書,必須先從圖書館借出來凰狞,然后回到家自己改篇裁,改完了,再放回圖書館赡若。最大的毛病就是必須聯(lián)網(wǎng)才能工作达布,如果在互聯(lián)網(wǎng)上,遇到網(wǎng)速慢的話逾冬,可能提交一個10M的文件就需要5分鐘
分布式版本控制系統(tǒng)
分布式版本控制系統(tǒng)根本沒有“中央服務(wù)器”黍聂,每個人的電腦上都是一個完整的版本庫,工作時身腻,不需要聯(lián)網(wǎng)产还,因為版本庫就在你自己的電腦上。
多個人如何協(xié)作:你在自己電腦上改了文件A嘀趟,你的同事也在他的電腦上改了文件A脐区,這時,你們倆之間只需把各自的修改推送給對方她按,就可以互相看到對方的修改了牛隅。分布式版本控制系統(tǒng)的安全性要高很多炕柔,因為每個人電腦里都有完整的版本庫,某一個人的電腦壞掉了不要緊媒佣,隨便從其他人那里復(fù)制一個就可以了匕累。而集中式版本控制系統(tǒng)的中央服務(wù)器要是出了問題,所有人都沒法干活了默伍。
在實際使用分布式版本控制系統(tǒng)的時候欢嘿,其實很少在兩人之間的電腦上推送版本庫的修改,因為可能你們倆不在一個局域網(wǎng)內(nèi)也糊,兩臺電腦互相訪問不了炼蹦,也可能今天你的同事病了,他的電腦壓根沒有開機显设。因此框弛,分布式版本控制系統(tǒng)通常也有一臺充當(dāng)“中央服務(wù)器”的電腦,但這個服務(wù)器的作用僅僅是用來方便“交換”大家的修改捕捂,沒有它大家也一樣干活瑟枫,只是交換修改不方便而已。
git使用(Windows版本)
- 下載 下載安裝地址
在開始菜單里找到“Git”->“Git Bash”指攒,蹦出一個類似命令行窗口的東西慷妙,Git安裝成功 - 配置賬號
注意git config命令的--global參數(shù),用了這個參數(shù)允悦,表示你這臺機器上所有的Git倉庫都會使用這個配置膝擂,當(dāng)然也可以對某個倉庫指定不同的用戶名和Email地址
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
-
工作流程
git.jpg
常用命令
mkdir <filename>:創(chuàng)建文件夾
rm <filename>刪除文件
cd <filename>:進(jìn)入文件
pwd :查看當(dāng)前所在目錄
ls -ah :顯示.git文件夾
vscode方法 :用戶設(shè)置 > 文本編輯器 > Exclude,找到對應(yīng)排除的項”/.git“隙弛,并刪除它架馋,隱藏的.git文件就會自動出現(xiàn)
我是一條分接線=================================================
創(chuàng)建倉庫:git init
添加文件:git add <filename> 添加文件至?xí)捍鎱^(qū)(git/index),可反復(fù)執(zhí)行添加多個文件
提交: git commit -m "xxx" 提交暫存區(qū)至當(dāng)前分支倉庫
查看狀態(tài): git status
差異:git diff <filename>
簡單log信息 :git log --pretty=onelin
git reflog :查看所有歷史記錄(包括回退等全闷,后悔藥)
反悔性操作
git checkout --<filepath 可多個> : 丟棄工作區(qū)修改(命令中的--很重要叉寂,沒有--,就變成了“切換到另一個分支”的命令)
git reset HEAD -- <filepath> 取消暫存(add過的文件會重新放入工作區(qū))
(commit 我是一條分界線==================================)
git reset --hard HEAD^ :回退上個版本 (^^上上個总珠,)
git reset --hard <commit id>回退指定版本號
刪除性操作
只是本地刪除:rm <filename>
恢復(fù)本地刪除的文件 : git checkout --<filename>
刪除版本庫文件 : git rm <filename> git commit -m ‘delete’
查看分支:git branch
創(chuàng)建分支:git branch <name>
切換分枝:git checkout <name>或者git switch <name>
創(chuàng)建+切換分支:git checkout -b <name>或者git switch -c <name>
合并某分支到當(dāng)前分支:git merge <name>
刪除分支:git branch -d <name>
強行刪除分支:git branch -D <name>
多分支工作
用法參考:https://blog.csdn.net/java_lifeng/article/details/103687114?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&dist_request_id=bc92ebe7-d1ff-432f-8ed6-2a11523f2eb5&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control
保留A分支工作現(xiàn)場:git stash
查看保留記錄:git stash list
還原工作現(xiàn)場:git stash pop (還原并清除存儲) /Git stash apply (要用git stash drop去刪除存儲)
復(fù)制某個分支的提交至當(dāng)分支:git cherry-pick <commit id>
git rebase
版本快照
設(shè)置tag : git tag <tagname>
設(shè)置固定版本 的tag:git tag <commit id>
取消本地分支和遠(yuǎn)端的映射:git branch --unset-upstream