天天看點

Git 代碼管理常用指令

1) 遠端倉庫相關指令

檢出倉庫:$ git clone git://github.com/jquery/jquery.git

檢視遠端倉庫:$ git remote -v

添加遠端倉庫:$ git remote add [name] [url]

删除遠端倉庫:$ git remote rm [name]

修改遠端倉庫:$ git remote set-url --push[name][newUrl]

拉取遠端倉庫:$ git pull [remoteName] [localBranchName]

推送遠端倉庫:$ git push [remoteName] [localBranchName]

2)分支(branch)操作相關指令

檢視本地分支:$ git branch

檢視遠端分支:$ git branch -r

建立本地分支:$ git branch [name] ----注意新分支建立後不會自動切換為目前分支

切換分支:$ git checkout [name]

建立新分支并立即切換到新分支:$ git checkout -b [name]

删除分支:$ git branch -d [name] ---- -d選項隻能删除已經參與了合并的分支,對于未有合并的分支是無法删除的。如果想強制删除一個分支,可以使用-D選項

合并分支:$ git merge [name] ----将名稱為[name]的分支與目前分支合并

建立遠端分支(本地分支push到遠端):$ git push origin [name]

删除遠端分支:$ git push origin :heads/[name]

我從master分支建立了一個issue5560分支,做了一些修改後,使用git push origin master送出,但是顯示的結果卻是'Everything up-to-date',發生問題的原因是git push origin master 在沒有track遠端分支的本地分支中預設送出的master分支,因為master分支預設指向了origin master 分支,這裡要使用git push origin issue5560:master 就可以把issue5560推送到遠端的master分支了。

如果想把本地的某個分支test送出到遠端倉庫,并作為遠端倉庫的master分支,或者作為另外一個名叫test的分支,那麼可以這麼做。

$ git push origin test:master // 送出本地test分支作為遠端的master分支 //好像隻寫這一句,遠端的github就會自動建立一個test分支

$ git push origin test:test // 送出本地test分支作為遠端的test分支

如果想删除遠端的分支呢?類似于上面,如果:左邊的分支為空,那麼将删除:右邊的遠端的分支。

$ git push origin :test // 剛送出到遠端的test将被删除,但是本地還會儲存的,不用擔心

3)版本(tag)操作相關指令

檢視版本:$ git tag

建立版本:$ git tag [name]

删除版本:$ git tag -d [name]

檢視遠端版本:$ git tag -r

建立遠端版本(本地版本push到遠端):$ git push origin [name]

删除遠端版本:$ git push origin :refs/tags/[name]

推送所有tag: git push origin --tags

tag遷出branch:

git checkout tagname

git checkout -b new_branch_name

4)git stash暫存相關指令

git stash: 備份目前的工作區的内容,從最近的一次送出中讀取相關内容,讓工作區保證和上次送出的内容一緻。同時,将目前的工作區内容儲存到Git棧中。

git stash pop: 從Git棧中讀取最近一次儲存的内容,恢複工作區的相關内容。由于可能存在多個Stash的内容,是以用棧來管理,pop會從最近的一個stash中讀取内容并恢複。

git stash list: 顯示Git棧内的所有備份,可以利用這個清單來決定從那個地方恢複。

git stash clear: 清空Git棧。此時使用gitg等圖形化工具會發現,原來stash的哪些節點都消失了。

5)git rebase 使用

目前分支問題develop,從master拉取最新代碼

git pull --rebase origin master 或者 git rebase develop

先将develop分支的代碼checkout出來,作為工作目錄

然後将master分支從develop分支建立起的所有改變的更新檔,依次打上。如果打更新檔的過程沒問題,rebase就搞定了

如果打更新檔的時候出現了問題,就會提示你處理沖突。處理好了,可以運作git rebase –continue繼續直到完成

如果你不想處理,你還是有兩個選擇,一個是放棄rebase過程(運作git rebase –abort),另一個是直接用test分支的取代目前分支的(git rebase –skip)。

6) 工具

  SourceTree & git bash