Git分布式版本控制器的使用:
1.創(chuàng)建一個版本庫:mkdir repository(庫名稱)
2.進入該庫:cd repository
psw 命令用于顯示當前目錄
3.git init : 把這個目錄變成git可以管理的倉庫,可見到生成了.git目錄
4.新建項目文件test.txt,放到倉庫根目錄或者子目錄下都行
5.執(zhí)行git add test.txt ,把文件添加到倉庫
6.git commit -m "這里是注釋"
git status 命令 可以讓我們時刻掌握倉庫當前的狀態(tài)。
git diff 命令查看修改過的內容。
7.當我們再次修改完test.txt文件的時候,可以先通過git status和git diff命令查看當前文件的狀態(tài),最后再依次執(zhí)行5,6的操作,并再次查看一下狀態(tài)。
git log 命令顯示從最近到最遠的提交日志;git log --pretty=oneline 命令可以顯示精簡版提交日志
git reflog 命令查看命令歷史,方便我們知道版本id。
cat test.txt 命令查看文件的內容
8.當我們想回退或者前進到那個版本的時候,有兩種方法:
1.在git中,HEAD表示當前版本,上一個版本是HEAD,上上個版本是HEAD^,上100個版本可以HEAD~100
2.通過版本id來查找。
git reset --hard commit_id(推薦)
git reset --hard HEAD~num
工作區(qū)和暫存區(qū):
工作區(qū):就是在電腦能看到的目錄,比如repository文件夾就是一個工作區(qū)。
版本庫:工作區(qū)有一個隱藏目錄.git,這個不算工作區(qū),而是git的版本庫。git的版本庫存放了很多東西,其中最重要的就是稱為stage(或者index)的暫存區(qū),還有git為我們自動創(chuàng)建的第一個分支master,以及master的一個指針叫HEAD。
第一步git add是把文件添加進去,實際上就是把文件修改添加到暫存區(qū)
第二步git commit提交,實際上就是把暫存區(qū)的所有內容提交到當前分支
簡單理解:需要提交的文件修改統(tǒng)統(tǒng)放到暫存區(qū),然后,一次性提交暫存區(qū)的所有修改。
git 追蹤并管理的是修改,不是文件。
9.撤銷修改:
a.當你改亂了工作區(qū)某個文件的內容,想直接丟棄工作區(qū)的修改時,用命令git checkout -- test.txt
b.當你不但改亂了工作區(qū)某個文件的內容,還添加到了暫存區(qū)時,想丟棄修改,分兩步,第一步用git reset HEAD test.txt,就回到a場景,第二步按照場景a來操作。
c.已經提交了不合適的修改到版本庫,想要撤銷本次提交,可以直接回退到前一版本,不過前提是沒有推送到遠程庫。
10.刪除文件:
rm test.txt //刪除工作區(qū)的文件
git rm test.txt //刪除工作區(qū)和暫存區(qū)的文件,commit后才會刪除版本庫的文件
git commit -m "注釋"
11.創(chuàng)建遠程倉庫:
①創(chuàng)建ssh key。在windows下打開git bash,輸入命令:ssh-keygen -t rsa -C "你本人郵箱";就會在你的用戶主目錄下找到.ssh目錄,里面有id_rsa和id_rsa.pub兩個文件,這兩個就是ssh key的密鑰對,id_rsa是私鑰,不能泄露,id_rsa_pub是公鑰,可以放心告訴別人。
②登錄github,在setting里面找到ssh key頁面添加新的ssh key,添加任意title,在key文本框里粘貼id_rsa.pub文件的內容,點擊添加即可。
③在本地創(chuàng)建一個git倉庫,在github上面也創(chuàng)建一個一樣名字的倉庫;現(xiàn)在就可以通過以下命令來讓本地倉庫和遠程的倉庫實現(xiàn)同步:
git remote add origin git@github.com:XXX/xxx.git
其中XXX是你自己在github的賬戶名,添加后,遠程庫的名字就是origin,這是git默認的叫法。
接著輸入以下一條命令即可實現(xiàn)把本地的倉庫內容推送到github上的倉庫
git push -u origin master
第一次推送,由于遠程庫是空的,我們第一次推送加了-u參數(shù) ,git不但會把本地的master分支內容推送到遠程新的master分支,還會把本地的master分支和遠程的master分支關聯(lián)起來,在以后的推送或者拉取時就可以簡化命令。以后只要在本地commit了,只要執(zhí)行一下命令即可:
git push origin master
上面是先創(chuàng)建本地倉庫在創(chuàng)建遠程倉庫,其實最好是先在github上面創(chuàng)建一個倉庫,任何人都可以通過復制上面的倉庫內容到本地,然后進行操作。執(zhí)行以下命令:
git clone git@github.com:XXX/xxx.git
XXX是創(chuàng)建遠程倉庫那個人的github賬戶名,xxx是倉庫名
12.分支:
a.查看分支:git branch
b.創(chuàng)建分支:git branch 分支名稱
c.切換分支:git checkout 分支名稱
d.創(chuàng)建+切換分支:git checkout -b 分支名稱
e.合并某分支到當前分支:git merge 需要被合并的分支
f.刪除分支:git branch -d 需要被刪除的分支
g.假如主分支做了修改,別的分支也做了修改,那么合并分支就會出現(xiàn)沖突,git會標記處不同分支的內容
刪除沖突后再添加提交一次,就可以合并成功了,可以用命令:git log --graph --pretty=oneline --abbreb-commit 來查看合并情況。
分支策略:master分支應該是非常穩(wěn)定的,也就是僅用來發(fā)布新版本,平時不能在上面干活,創(chuàng)建一個dev分支,干活都在dev分支上,也就是說dev分支是不穩(wěn)定的,等到需要發(fā)布的時候,再把dev分支合并到master上,再在master分支上發(fā)布;多人都在dev上干活,每個人都有一個分支,是不是往dev分支上合并就行了。
bug分支:當我們在某個分支上工作到一半時,需要臨時去處理一個緊急bug,這時候我們可以先把你正在工作的工作現(xiàn)場保存起來, 等以后恢復現(xiàn)場后繼續(xù)工作。保存工作現(xiàn)場的命令:git stash ; 查看工作現(xiàn)場列表命令:git stash list ;恢復工作現(xiàn)場命令:git stash apply,恢復后stash內容并不刪除,需要使用git stash drop命令來刪除。也可以合起來:git stash pop :恢復的同時刪除stash內容。
如果一個分支還沒合并之前就想把它刪除掉,git branch -d [fileName]是刪除合并后的命令,git branch -D [fileName]是刪除合并前的命令。
多人協(xié)作:
git remote / git remote -v:查看遠程庫信息
master分支和dev分支都是要時刻與遠程倉庫同步的。
a.首先,可以試圖用git push origin branch-name推送自己的修改;
b.如果推送失敗,則因為遠程分支比你本地的更新,需要先用git pull試圖合并;
c.如果合并有沖突,則解決沖突,并在本地提交;
d.沒有沖突或者解決掉沖突后,再用git push origin branch-name推送就能成功;
e.如果git pull提示no tracking information,則說明本地分支和遠程分支的鏈接關系沒有創(chuàng)建,用命令git branch --set-upstream branch-name(本地) origin/branch-name(遠程)
13.版本標簽:
git tag [tagName] : 新建一個標簽,默認為當前最新提交的版本,也可以指定一個commit_id;
git tag -a [tagName] -m "標簽信息..." : 可以指定標簽信息
git tag : 可以查看所有標簽
git tag -d [tagName] : 刪除本地標簽
git push origin [tagName] : 推送標簽到遠程
git push origin --tags : 一次性推送全部尚未推送到遠程的本地標簽
git tag -d [tagName] + git push origin :refs/tags/[tagName] : 刪除遠程標簽