GIT操做

第一次初始化

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以下,合併後產生一個新節點Ggit

D-------E
      /          \
 A---B---C---F----G---   bug, master

使用rebase以下,並不會產生新節點,而是將兩個分支融合成一個線性的提交,若是出現衝突,先修改衝突,而後執行git rebase -continuegit rebase -skipgithub

A---B---D---E---C‘---F‘---   bug, master

什麼時候用rebase

我的理解:如上面代碼,在本地倉庫初始化時拉取遠程倉庫的代碼,使用--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^ // 將代碼還原到上一版本,^的數量表示往上版本數量

放棄本地修改

  1. 未執行git addip

    git checkout -- a.txt b.txt
    git checkout -- *
    git checkout -- *.txt
  2. 已執行git addrem

    git reset HEAD a.txt b.txt
    git reset HEAD *
  3. 已執行git commit
    執行版本回退
相關文章
相關標籤/搜索