Git 是一個免費的開源分佈式版本控制系統,它的設計目的是爲了速度和效率的處理從小型到大型的項目;Git 能夠幫咱們管理咱們的代碼,記錄歷史,只要代碼提交到 Git 上就永久不會丟失,能夠隨時 「穿越」(回到以前的某一個版本);能夠多端共享,團隊協做中,多我的操做了同一個文件時,能夠實現自動合併(模塊化,組件化)、標記衝突,擁有強大的分支管理系統。html
SVN:集中式,須要一臺中央服務器,全部代碼的拉取和提交都是在中央服務器,一旦中央服務器或者網絡出現故障,則不能拉取和提交代碼,須要不斷去備份中央服務器,防止代碼丟失。前端
Git:分佈式,有一箇中央服務器的同時,每一個開發者本地都有本身的本地倉庫,擁有完整的版本庫,不用擔憂代碼丟失,Git 存儲的是代碼變化的快照,更新代碼的速度要比 SVN 更快。node
Windowsgit
Macgithub
能夠安裝 Homebrew,是 wmac 的包管理器,https://brew.sh/,下面是兩款界面美化插件:xcode
pwd
mkdir 文件夾名
進入盤符:服務器
cd d:
進入文件夾:網絡
cd 文件夾名
回上一級目錄:app
cd ..
進入某一個路徑:編輯器
cd 路徑
想要進入某一個不知道路徑的文件夾中,能夠直接拖拽該文件到命令窗口,會自動識別路徑。
lsls -al
下面命令加了 -al
參數能夠查看隱藏文件。
touch 文件名
mv 文件/文件夾 路徑
將文件或者文件夾移動到所輸入的路徑下。
cat 文件名
rm -rf 文件夾名rm 文件名
-rf
爲遞歸刪除,後面加上 *
爲參數會遞歸刪除整個文件夾的內容,rm -rf *
(慎用)。
clear
直接在命令行中查看:
history
將當前 Git 的命令歷史寫入文件中:
history > 文件名
vi 文件名
進入編輯模式:
i
進入命令模式:
Esc
保存並退出:
:wq
強制退出:
:q!
向文件輸入內容:
echo 內容 > 文件名
向文件追加內容:
echo 內容 >> 文件名
當使用 echo
編輯了一個不存在的文件時,會建立一個新文件並將內容編輯到文件中,而 touch
建立的是空文件。
Git 在管理文件時,全部文件都具備三種狀態,已修改、已暫存、已提交。
Git 在本地倉庫中由三部分組成,工做區、暫存區、版本庫。
Git 管理的文件夾下都有一個名爲 .git
的隱藏文件夾。
對應關係以下:
.git
文件夾下的 index
文件中)不配置用戶沒法提交代碼。
查看配置信息:
git config --list
配置用戶名:
git config --global user.name "你的名字"
配置郵箱:
git config --global user.email "你的郵箱"
在要初始化的文件夾下執行下面命令,告訴 Git 哪一個文件夾被 Git 所管理,一個項目初始化一次,不能嵌套。
git init
git status
文件爲紅色,表明有修改,文件名爲綠色,表明已經加入暫存區。
git add 文件名git add .
git add -A
.
和 -A
兩個參數均爲所有提交到暫存區,.
只監控修改、添加文件的變化,-A
監控修改、添加、刪除文件。
git rm --cached 文件名git rm --cached . -r
第一個命令是刪除某一個文件的暫存區,當參數爲 .
的時候刪除所有暫存區,因此須要加上表明遞歸刪除的參數 -r
。
從暫存區提交到版本庫:
git commit -m "版本信息"
從工做區直接提交到版本庫(須要以前添加過暫存區):
git commit -a -m "版本信息"
git log
工做區和暫存區比較:
git diff
工做區和版本庫比較:
git diff 分支名
暫存區和版本庫比較:
git diff --cached
git checkout 文件名git checkout .
撤銷操做是將暫存區覆蓋到工做區,會放棄掉當前工做區修改的內容,. 參數是將整個暫存區覆蓋當前工做區,一旦撤銷就回不到以前的工做區了。
當不當心將當前工做區錯誤的代碼提交到暫存區,可使用下面命令將暫存區回滾到上一個暫存區,只可回滾一次。
git reset HEAD 文件名
查看全部的版本號:
git reflog
按版本號回退版本:
git reset --hard 版本號
回退到上一個版本:
git reset --hard HEAD^
回退某一個版本的文件到工做區:
git checkout 版本號 文件名
回退版本會將當前版本庫選中的版本從新覆蓋暫存區和工做區。
查看分支:
git branch
Git 剛剛初始化管理的的文件夾必須有一次提交到版本庫(root-commit:根提交)之後纔會有主分支 master,不然即便建立了新分支也沒法切換回 master。
建立分支:
git branch 分支名
切換分支:
git checkout 分支名
建立並切換分支:
git checkout -b 分支名
刪除分支(需切換出要刪除的分支):
git branch -D 分支名
新建立的分支和主分支 master 仍是同一個區域,新建的文件只有提交到新分支的版本庫才真正脫離關係。
分支工做區有更改不能直接切換其餘分支,能夠提交更改或者暫存更改,若暫存更改(使用暫存區覆蓋掉工做區),等待從新切回分支時,還原暫存。
此處所說的暫存不是以前的將代碼提交到暫存區,由於當前分支工做區的代碼會變成要切換分支工做區的代碼,而致使當前分支工做區的更改丟失,此處的暫存相似於將修改寄存,從新切回該分支時再還原。
暫存更改:
git stash
還原暫存的內容:
git stash pop
合併分支:
將指定分支合併到當前所在的分支,因此,在分支開發完畢後,合併分支須要先切換回 master 主分支。
git merge 指定的分支名
查看分支合併的圖譜:
git log --graphgit log --graph --oneline
紅色線表明主分支,綠色線表明新建立的分支,分支上的 *
表明提交到版本庫的節點。--oneline
參數表示提交信息顯示爲一行。
當建立分支後,分支和 master 主分支分別提交代碼到版本庫,此時切換回 master 主分支,合併分支會出現衝突,需手動處理後,從新提交到暫存區並提交到版本庫。
// 代碼衝突 <<<<<<< HEAD (當前更改) master 分支代碼 ======= 開發分支的代碼 >>>>>>> 開發的分支 (傳入的更改)
遠程倉庫能夠是 Github、Gitee(碼雲)、Coding 或者中央服務器等等。
如下是經常使用免費倉庫的地址,能夠在首頁註冊帳號:
使用 WebStrom 編輯器編輯代碼時,會自動在根目錄生成 .idea
文件夾,使用 Mac 開發時根目錄下的 .DS_Store
文件夾,以及在項目開發時會安裝依賴存放在 node_modules
文件夾中,此類文件夾都是在把代碼上傳到遠程倉庫或中央服務器時不該該上傳的,所以應該在上傳以前過濾掉。
在根目錄建立
.gitignore
文件用於記錄上傳時被忽略的文件夾,內容(可根據須要自行配置)以下:
文件:.gitignore
.idea .DS_Store node_modules
Git 上傳時會自動忽略空文件夾,假設想要上傳一個名爲 public
的空文件夾,須要在文件夾內新建一個名爲 .gitkeep
的文件(名字隨意,最好有語義化),目的是使要提交的空文件夾再也不爲空。
git remote add origin 遠程倉庫地址
git remote -v
git remote rm 地址別名
地址別名指的是上面的 origin
,也能夠是其餘名稱,必須對應要刪除關聯的地址別名。
git push origin mastergit push -u origin master
若是加上了 -u
參數,之後再次提交時可省略地址別名和分支名稱,直接執行下面命令進行提交。
git push
在提交代碼時,若是直接提交到遠程倉庫,會將當前代碼覆蓋到遠程倉庫,若是別人以前也向遠程倉庫提交了代碼,會在遠程倉庫中形成衝突,因此通常在提交代碼以前先拉取遠程倉庫的代碼與本地代碼進行合併,併產生一個新的歷史記錄,若出現衝突,手動處理衝突後再統一提交到遠程倉庫。
拉取但不合並代碼(與 merge 配合,不經常使用):
git fetch origin master
拉取併合並代碼(經常使用):
git pull origin master
涉及到遠程倉庫網站上的操做均以 Github 爲例,其餘倉庫大同小異:
gh-pages
的分支;Settings
切換到 github-pages
;git checkout -b gh-pages
touch index.html
git add .
git commit -m "提交信息"
git push origin gh-pages
git clone 項目地址 項目別名
上面命令項目別名是可選的,至關於給項目根文件夾重命名。
Issue
選項;Fork
;Fork
是在當前項目下克隆了一份,若是代碼更新,不會隨之更新;clone
命令克隆本身的地址將項目拉到本地,進行操做;origin
地址,修改後能夠將代碼提交到本身的倉庫上;Fork
關係才能修改別人代碼後點擊 New pull request
發送提交請求;Create pull request
按鈕,填寫提交標題,和提交詳情,確認提交;Pull request
菜單中查看提交併處理;Close pull request
關閉,點擊 Merge pull request
贊成提交併合併。若是是一個團隊的其餘人須要操做同一個項目,上面的過程顯得很繁瑣,項目全部者能夠在 Settings
的 Collaborators
選項中經過添加別人的帳號或用戶名向項目中添加貢獻者,被添加的人擁有最大權限。
在當前的前端開發編輯器中,如 VSCode 和 WebStorm 等都集成了 Git,能夠直接點擊按鈕操做,沒必要使用命令行,這種操做 Git 的界面稱做 GUI 界面,我的建議仍是儘可能少的使用 GUI 界面,命令行是根本,仍是多敲命令行,孰能生巧。
<br/>