git 常用命令

git branch

git branch -r, 查看遠端庫的分支情況
git branch -a, 查看所有分支
git branch -vv, 查看當前本地分支與遠程分支的映射關係

git branch, 新建本地分支

  • $ git checkout -b dev origin/dev
    # 遠程分支dev已存在時,用此命令建立本地分支,同時設置tracking映射。

git branch -m | -M old_branch new_branch,重命名分支,如new_branch已存在,則用-M強制重命名。
git branch -d | -D branch_name, 刪除branch_name分支
git branch -d -r branch_name, 刪除遠程branch_name分支

git branch –set-upstream-to=origin/dev [dev],映射本地dev分支與遠程origin/dev分支(如果failed,則先用git pull更新本地的遠程分支信息)
git branch -u origin/dev [dev],同上

git branch [–set-upstream | –track | –no-track] [-l] [-f] branch_name [start-point]

git branch –unset-upstream [branch_name],撤銷本地分支與遠程分支的映射關係


git remote

git remote,查看遠程分支(簡略)
git remote -v,查看遠程分支(詳細)


git push

  • git push <遠程主機名> <本地分支名>:<遠程分支名>

git push origin DEV:dev,將本地DEV分支push到遠程主機origin的dev分支上。
git push origin [空]:<遠程分支名>,默認刪除遠程分支,等價於 git branch -d -r <遠程分支名>。
注:即使沒有使用git pull更新本地的遠程分支,都有效

  • git push origin –delete DEV,刪除遠程分支DEV
    等價於 git push origin [空]:DEV,以及 git branch -d -r DEV

  • git push origin HEAD:DEV, 將當前本地分支推送到遠程origin的DEV分支(方便易用)

    示例

  • $ git push origin master
    將本地master分支推送到origin主機的master分支。如果master不存在,則會被新建。

  • $ git push origin :master
    $ git push origin --delete master

    刪除origin主機的master分支

  • $ git push -u origin master
    將本地的master分支推送到origin主機,同時(-u)指定origin爲默認主機,後面就可以不加任何參數使用git push了,即 git push (本地與遠程分支不同名時,不可用)。

  • git push
    不帶任何參數的git push,默認只推送當前分支,這叫做simple方式。
    注:單個本地分支可以track多個遠程分支

  • $ git config --global push.default matching
    $ git config --global push.default simple

    Git 2.0版本之前,默認採用matching方法,會推送所有有對應的遠程分支的本地分支。
    Git 2.0版本之後,默認採用simple方式,只推送當前分支至同名遠程分支(即push your code branch by branch)。

  • $ git push origin HEAD
    將當前分支推送到遠程的同名的簡單方法

  • $ git push origin HEAD:master
    將當前分支推送到源存儲庫中的遠程引用匹配主機。 這種形式方便推送當前分支,而不考慮其本地名稱。


git pull

取回遠程主機某個分支的更新,再與本地的指定分支合併,它的完整格式稍稍有點複雜。
默認模式下,git pull是git fetch後跟git merge FETCH_HEAD的縮寫。
(Fetch from and integrate with another repository or a local branch)

語法

  • $ git pull <遠程主機名> <遠程分支名>:<本地分支名>
    <本地分支名>可省略,如爲當前分支。

  • $ git branch --set-upstream master origin/next
    上面命令指定本地master分支追蹤origin/next分支。

  • $ git pull origin
    如果當前分支與遠程分支存在追蹤關係,git pull就可以省略遠程分支名。
    上面命令表示,本地的當前分支自動與對應的origin主機”追蹤分支”(remote-tracking branch)進行合併。

  • $ git pull
    如果當前分支只有一個追蹤分支,連遠程主機名都可以省略。
    上面命令表示,當前分支自動與唯一一個追蹤分支進行合併。

  • $ git pull --rebase <遠程主機名> <遠程分支名>:<本地分支名>
    如果合併需要採用rebase模式,可以使用–rebase選項。

注:在實際使用中,git fetch更安全一些,因爲在merge前,我們可以查看更新情況,然後再決定是否合併。


git rebase

git rebase 之後再推送(push),會改變log曲線,按照各個協作者推送的順序來單線排列。

  • rebase操作可以把本地未push的分叉提交歷史整理成直線。
  • rebase的目的是使得我們在查看歷史提交的變化時更容易,因爲分叉的提交需要三方對比。

git tag

  • $ git tag tag_name [commit_id]
    給指定commit打標籤; 默認標籤打在HEAD最新提交的commit上。

  • $ git tag -a tag_name -m "version xx released" commit_id
    創建帶有說明的標籤,用-a指定標籤名,-m指定說明文字。

  • $ git tag
    查看tag列表(簡略)。

  • $ git show tag_name
    查看某個tag的詳細說明信息。

  • $ git tag -d tag_name
    刪除某個標籤(創建的標籤只本地存儲,不自動遠程推送;打錯的標籤可在本地安全刪除)。

  • $ git push origin tag_name
    單獨推送某個標籤。

  • $ git push origin --tags
    一次性推送全部尚未推送到遠程的本地標籤。

如果某個標籤已經推送到遠程,刪除步驟如下:
  1. $ git tag -d tag_name, 先從本地刪除。
  2. $ git push origin :refs/tags/tag_name,用push刪除遠程標籤(refs/tags/固定)。

注:標籤總是和某個commit掛鉤。如果此tag關聯的commit既出現在master分支,又出現在dev分支,則兩個分支上都可以看到這個標籤。

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