最近想總結(jié)下git的各種操作坛梁,于是有了這篇博客。
分布式與集中式
首先簡(jiǎn)單的了解了下分布式與集中式的概念柄错。
集中式
集中式是指版本庫(kù)都在中央服務(wù)器上嚎尤,任何人想要修改代碼都需要先聯(lián)網(wǎng),從中央服務(wù)器下載代碼酥泞,然后修改完再推送給中央服務(wù)器合并砚殿。
集中式的弊端就是必須得聯(lián)網(wǎng),如果網(wǎng)速慢就很痛苦芝囤。加上由于集中的原因似炎,代碼不夠安全(沒(méi)有備份),服務(wù)器一旦癱瘓所有人都不能下載悯姊。
這邊我自己有個(gè)疑問(wèn)羡藐,既然都下載了,不應(yīng)該就有備份了嗎悯许?而且分布式推送的時(shí)候不也要聯(lián)網(wǎng)嗎仆嗦?
分布式
分布式是指每個(gè)人電腦上都有代碼庫(kù),兩個(gè)人只需要將各自的修改推送給對(duì)方就能知道對(duì)方的代碼修改了先壕。(個(gè)人理解在企業(yè)內(nèi)部十分方便)假設(shè)兩臺(tái)電腦不在一個(gè)局域網(wǎng)瘩扼,就需要一臺(tái)充當(dāng)中央服務(wù)器的電腦,其存在只是為了方便交換修改代碼垃僚。
Git常見(jiàn)指令
本地指令
git init? 把當(dāng)前目錄變成git可管理的倉(cāng)庫(kù)
git add README.txt 把目錄下的文件添加到倉(cāng)庫(kù)
git commit? -m "xxx" 把文件提交到倉(cāng)庫(kù)集绰,xxx為備注,可以一次提交多個(gè)add的項(xiàng)目
git status 查看當(dāng)前倉(cāng)庫(kù)的狀態(tài)(告訴你是否有被修改)
git? diff xxx 查看xxx的改動(dòng)
git log (--pretty=oneline)輸出提交的歷史記錄
?git reset --hard commit_id 指向某個(gè)版本
git reflog 查看命令歷史,用來(lái)回到未來(lái)的版本
git checkout -- file? 把file在工作區(qū)的修改全部撤銷(xiāo)冈在,分為兩種情況:修改后還沒(méi)有提交到暫存區(qū)倒慧,這時(shí)回回到版本庫(kù)一模一樣的狀態(tài);提交到暫存區(qū)后又作了修改包券,撤銷(xiāo)修改就回到添加到暫存區(qū)后的狀態(tài)纫谅。
git reset HAED file 把暫存區(qū)最新版本的修改撤銷(xiāo)掉,重新放回工作區(qū)。
rm file 刪除文件????
git rm file -> git commit? ? 文件從版本庫(kù)刪除? ?
git checkout file 用版本庫(kù)里的版本替換工作區(qū)的版本
git branch 查看分支
git branch <name> 創(chuàng)建分支
git checkout <name> 切換分支
git checkout -b <name> 創(chuàng)建加切換分支
git merge <name> 合并某分支到當(dāng)前切換的分支
git branch -d <name> 刪除分支
推送指令
在本地learngit倉(cāng)庫(kù)以下運(yùn)行命令:
git remote add origin git@server-name:path/repo-name.git?
就能將本地倉(cāng)庫(kù)與github的遠(yuǎn)程倉(cāng)庫(kù)關(guān)聯(lián)
git push -u origin master?
把本地master推送到遠(yuǎn)程庫(kù)溅固,加上-u能在第一次推送順便關(guān)聯(lián)付秕,以后可以簡(jiǎn)化參數(shù)
git clone? 將遠(yuǎn)程庫(kù)clone到當(dāng)前目錄下