1. 程式人生 > >最常用git命令

最常用git命令

git status 顯示版本狀態

 

git branch 分支顯示/建立/刪除/遠端關聯

git branch 顯示所有本地branch,等於git branch —list

git branch —list 顯示所有本地branch

git branch -r 顯示所有遠端branch

git branch -a 顯示所有branch及細節,紅色是remote branch

git branch —merged/—no-merged 顯示哪些分支已被併入當前分支

git branch contains 顯示當前分支包含哪些子分支

git branch <branch_name> 在當前分支(假設為master)下建立新分支 = git checkout -b branch_name

git branch --set-upstream-to=origin/TopItem TopItem 本地新建一個分支後,必須要做遠端分支關聯,git clone的時候所有本地分支預設與遠端主機的同名分支,

git branch —unset-upstream 取消遠端分支關聯

git branch -d esCtr 刪除本地分支esCtr

git branch -d -r origin/esCtr 刪除遠端分支esCtr

 

git checkout 分支切換——HEAD是靈魂

git checkout <branch_name> 切換到branch_name分支

git checkout -b branch_name 在當前分支下建立一個新的branch並切換到該分支

git checkout -b branch_name develop 在develop分支下建立一個新的branch並切換到該分支

 

git fetch 從遠端拉取

git fetch <遠端主機名>  將遠端主機的更新取回本地

git fetch 預設取回全部分支的更新

git fetch origin master 取回origin主機上master 分支,在本地分支表示為origin/master,注意跟本地master分支不同

 

git merge 合併兩個或者以上分支

git merge b1 b2 在當前分支頂部合併b1和b2

git merge origin/master 在當前分支上合併遠端origin/master

git merge abort 取消merge,當合並開始時如果存在未commit的檔案,git merge --abort在某些情況下將無法重現合併前的狀態,建議使用git-stash命令將這些未commit檔案暫存起來,在解決衝突以後使用git stash pop把這些未commit檔案還原出來

git merge squash 從當前分支和對方分支的共同祖先節點之後的對方分支節點,一直到對方分支的頂部節點將會壓縮在一起,使用者可以經過審視後進行提交,產生一個新的節點

git merge ff /—no-ff,  是否使用fast-forward模式(預設--ff)進行合併,將不會創造一個新的commit節點。

git merge master feature 把master分支合併到feature上,= git checkout feature;  git merge master

 

git rebase 更乾淨的合併當前分支與待合併分支共同的祖先commit節點到當前分支當前commit節點之間的的commit暫存為補丁,當前分支更新到待合併分支最新節點,然後應用這些補丁到當前分支,因此合併不產生merge commit。但要注意永遠不在在一個公共的分支中使用rebase.

git fetch origin master 拉取遠端origin主機的master到本地,分支origin/master

git rebase origin/master 將origin/master合併到當前分支

git push 把當前分支push到遠端 

如果把這個rebase換成merge,則是把當前分支和origin/master自動生成一個commit,有兩個parents,導致review比較麻煩。

git pull 遠端拉取併合並

git pull <遠端主機名> <遠端分支名>:<本地分支名>,當前分支與遠端分支存在追蹤關係,git pull就可以省略遠端分支名

git pull origin master:esMerge

git pull origin master 從名為origin的遠端倉庫的master branch拉取最新版本,與當前branch合併

等同於:

git fetch origin

git merge origin/next

git remote

git remote add $name $gitAddress 新增一個命名為$name的遠端路徑

git remote rm $name 刪除一個遠端路徑

git remote -v 顯示fetch和push的origin

 

git push 本地分支的更新,推送到遠端主機

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

git push origin master 本地的master分支推送到origin主機的master分支(命令中遠端分支名可以省略)

git push origin :master = git push origin --delete master 如果省略本地分支名,表示刪除指定遠端分支,等同於推送一個空的本地分支到遠端分支

git push origin 當前分支推送到origin主機的對應分支(前提,當前分支與遠端分支之間存在追蹤關係

git push 當前分支只有一個追蹤分支,主機名也可以省略

git push -u origin master 當前分支與多個主機存在追蹤關係,-u指定預設主機,後面就可以不加任何引數使用git push

push配置:

git config --global push.default simple (預設)只push當前分支

git config --global push.default matching  會push所有遠端分支匹配上的本地分支

git push -all origin 本地所有分支推送到遠端,如果遠端沒有對應的分支,新建之

git push origin —tags 預設git push不會推送標籤(tag),除非使用–tags選項

git push origin HEAD 當前分支推送到遠端的同名的簡單方法

git push origin HEAD:master 當前分支推送到遠端的指定分支

git co . # 拋棄工作區修改

 

git diff

git diff <file> # 比較當前檔案和暫存區檔案差異 git diff

git diff <branch1> <branch2> # 在兩個分支之間比較

git diff origin/master master 檢視遠端分支與本地分支的差別

 

git tag/show 標籤和詳情

git tag 檢視所有標籤

git tag tagName 建立輕量級標籤

git tag -a tagName -m “mark” 建立帶註釋的標籤 如git tag -a v1.4.3 -m “v1.4.3" 

git checkout tagName 切換到某一標籤

git show tagName 檢視相應標籤的版本資訊

git push origin tagName 單獨將tag push到遠端

git push —tags 將所有tag push到遠端(不推薦)

 

git stash:

git  stash 當前未提交的修改暫存起來,讓倉庫還原到最後一次提交的狀態

git stash pop 將stash的內容彈出,預設彈出最上面的那條

git stash list 列出當前倉庫下所有的stash條目

git stash drop [[email protected]{n}] 丟棄stash條目,預設丟棄最上面的那條,[email protected]{0

git stash clear  清除所有的stash條目

 

Git global setup

git config --global user.name  "xxxxsx"

git config --global user.email "xxxx.com

 

git reset  重置

git fetch 

git reset —hard origin/master 將當前分支重置為遠端分支(捨棄所有與遠端分支不同的修改)

 

Create a new repository

git clone http://git.code.oa.com/OPENREC/juliasong.git

cd juliasong

touch README.md

git add README.md

git commit -m "add README"

git push -u origin master

Existing folder or Git repository

cd existing_folder

git init

git remote add origin http://git.code.oa.com/OPENREC/juliasong.git

git add .

git commit

git push -u origin master