git init // 初始化一個git倉庫 git add . git status git commit -m 'first add' git remote add origin https://github.com/shichangqi/scqvue.git // 創建遠程鏈接 git pull --rebase origin master // 拉取遠程master分支下的代碼 git push -u origin master // 推送至遠程倉庫master
--rebase
變基,至關於本地代碼與遠程倉庫代碼的merge
git push -u
第一次提交後,以後能夠簡化爲git push
如今項目臨時出了一個BUG,因此新建了一個bug分支專門用來解決,當bug解決完後要合併到master
上去vue
D---E bug / A---B---C---F--- master
使用merge
以下,合併後產生一個新節點G
git
D-------E / \ A---B---C---F----G--- bug, master
使用rebase
以下,並不會產生新節點,而是將兩個分支融合成一個線性的提交,若是出現衝突,先修改衝突,而後執行git rebase -continue
或git rebase -skip
github
A---B---D---E---C‘---F‘--- bug, master
我的理解:如上面代碼,在本地倉庫初始化時拉取遠程倉庫的代碼,使用--rebase
能夠獲得更好的提交樹,並且在合併的過程當中遇到衝突會中斷,提示去修改衝突
其餘狀況避免使用rebase
,如上,一旦bug
分支與master
分支合併,出現問題,能夠直接回退到版本F
,若是使用rebase
那就出現大問題了bash
git clone xxxx.git git branch -al // 查看本地和遠程的分支 git branch master // 建立本地分支master git checkout master // 切換到本地分支master git pull origin master // 將本地master與遠程master關聯 git branch -vv // 查看當前分支的關聯分支 git add . git commint git push
git checkout master git merge dev // 將dev分支的代碼合併到master上去
合併遠程分支日誌
git checkout -b dev origin/dev // 簡寫語法,至關於 // git branch dev // git checkout dev // git remote add origin xxx.git git pull git checkout master git merge dev // 合併本地master分支與dev分支 git push origin master // 推送至遠程倉庫,完成遠程合併
git log // 查看提交日誌,裏面包含提交的版本號 git reset --hard 版本號 // --hard會清空工做區未commit的修改,慎用 git push -f // 強制推送,由於本地的HEAD指向版本要比遠程舊
或者code
git reset --hard HEAD^ // 將代碼還原到上一版本,^的數量表示往上版本數量
未執行git add
ip
git checkout -- a.txt b.txt git checkout -- * git checkout -- *.txt
已執行git add
rem
git reset HEAD a.txt b.txt git reset HEAD *
git commit