談談自己對git的分支的理解
git和其他的一些csv工具(svn)不同,它在本地有乙個和伺服器有相同結構的git專案內容存在database中,這樣的好處就是所有東西都是在本地的,不需要聯網也能完成一些事情,最後只要push到伺服器就可以了。
剛開始的本地電腦上什麼git專案也沒有,我有兩種方式建立我的git專案。
途徑一: clone乙個遠端倉庫的git專案,這個遠端的專案可能已經有人在commit版本了,那麼clone到本地以後與遠端的對比圖如下
經過clone的git專案預設是origin來代表乙個遠端的倉庫。在my compuer圖中可以看到有兩個master,第乙個master是遠端下的乙個主分支, 而第二個master才是本地倉庫的主分支。 本地master已經和origin/master形成tracked的狀態了,所以以後push還是pull都能推送到對應的分支上
途徑二:本地建立乙個專案,然後使用進入這個專案的根目錄使用git init 命令初始化,會在根目錄下建立乙個隱藏的.git資料夾,在裡面來記錄以後你的git專案的各種資訊
當然建立好的專案裡面的檔案都是untracked狀態,我們需要通過git add 來讓它變成tracked狀態(tracked分三種:unmodified,modified,staged,add是讓files 變成staged,這樣下一次commit才能將staged area的內容形成快照)。以後我們對git專案的修改,刪除,提交就是tracked(unmodified,modified,staged)、untracked狀態的變化。
這個git專案經過多次的commit以後形成乙個乙個的快照,master的head也在隨著提交在移動,這時候是時候將這個本地專案放到remote上面去了。使用git add remote [shortname] url 命令(url是你事先在github或者碼雲等專案託管**建立的乙個空專案的路徑)。隨後就可以使用命令git push [remote-name] [branch-name].
在和其他開發人員合作時,其他人會是不是的push一些版本到remote,這時候remote的結構和本地結構就不太一樣了
remote和本地的對比圖
仔細觀察,本地的origin/master分支還停留在f4265這個版本,而remote因為有someone push了31b81和190a3兩個新版本,所有remote的master實在190a3這個最後提交的版本上。
這時候我們需要做的就是使用git fetch (獲取remote分支在本地沒有的資料,但是注意它和git fetch不同,不會把本地master分支merge了),因此我們可以看到如下的圖
因為不是使用git pull 而是使用git fetch所以在在my computer這幅圖中可以看到兩個分支,自己所在的開發master分支的資料還是沒有任何變化了,只有手動git merge origin/master才能將資料合併到master分支上,讓origin/maser 和master在合併後產生乙個新的節點上(同一條直線)
一般在多人合作的專案中,自己會建立乙個分支並推送到remote上,以後再新建的這個分支上開發功能,如果需要將master分支的內容合併到該分支上,只需要checkout到本地的master分支,並pull對應tracked的remote分支內容,再checkout到新建的分支上,使用git merget master即可將內容合併
git 遠端分支
git clone缺省會把遠端倉庫整個給clone下來 但只會在本地預設建立乙個master分支 如果遠端還有其他的分支,此時用git branch a檢視所有分支 master remotes origin head origin master remotes origin master remo...
git 遠端分支
1.git branch a 顯示本地分支和遠端分支。2.跟蹤遠端分支 當轉殖乙個倉庫事時,會自動建立乙個跟蹤遠端預設分支 假如為origin master 的本地分支master,當然,也可以在轉殖的時候指定要跟蹤的遠端分支。命令為 git clone b remote reporitory ad...
git遠端分支
1.同步遠端伺服器上的資料到本地 git fetch origin 2.新增遠端分支 git remote add teamone git 新增後git fetch teamone到本地 3.要把遠端分支合併到當前分支 git merge origin serverfix 4.要把遠端分支分化出乙個...