git 學習(git fetch/ git pull/ git rebase/ git cherry-pick的區別)

使用git做開發管理:

1. Git clone  將遠程代碼克隆到本地;

2. Git branch  查看本地branch (git clone 時會創建 master)

 

3. git branch -a  查看本地和遠程分支;(遠程分支包括 remotes/origin/master 遠程master分支)

 

4. Git remote -v 查看遠程庫對應的簡短名稱 (origin  。。。)

5. Git checkout -b bug origin/master 創建本地開發分支

6. Git branch -vv 查看本地分支關聯的遠程分支的對應關係

7. Git fetch origin master 

 

 

(git fetch 並沒更改本地倉庫的代碼,只是拉取了遠程 commit 數據,將遠程倉庫的 commit id 更新爲latest。具體的行爲你可以嘗試看看.git文件夾:./git/refs 裏面有三個文件夾:heads、remotes、tags。FETCH-HEAD origin/master)

8. git cherry-pick origin/master git rebase origin/master   git merge origin/master合併代碼

(merge 把另一個分支合併到當前分支上; rebase 變基 把當前分支的提交在另一分支上重演。如果可以成功重演,本分支將會消失, merge會有兩條提交歷史記錄線路,有個菱形圖,rebase只有一條提交歷史記錄線路圖,無菱形圖; cherry-pick 把本分支或者其他分支的某一次或某幾次提交,在當前分支上重演。操作單元是commit 不是branch)

或者合併7,8 :

git pull == git fetch;  git merge origin/master

git pull --rebase == git fetch;git rebase origin/master

 

因爲git中都fetch命令是將遠程分支的最新內容拉到了本地,但是fetch後是看不到變化的,本地多了一個FETCH_HEAD的指針,checkout到該指針後可以查看遠程分支的最新內容。理解git fetch,關鍵是理解FETCH_HEAD,FETCH_HEAD指的是:某個branch在服務器上的最新狀態。如果沒有顯示地指定遠程分支,則遠程分支的master將作爲默認的FETCH_HEAD。如:git fetch origin或者git fetch origin master。如果指定了遠程分支,則將這個遠程分支作爲FETCH_HEAD。

9. git push 提交到遠程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章