關於Git

1、前言

  記錄一下工做中經常使用到的git命令,只是簡單的筆記,歡迎你們交流... git

2、git branch 和 git checkout

1
2
3
4
5
6
7
8
9
10
11
12
git branch//查看當前分支
git branch -r//列出遠程分支
git branch -a//列出全部分支
 
git branch branchName//建立分支
git checkout branchName//切換分支
git checkout -b branchName//建立並切換到分支
 
git checkout //後面不跟任何參數,則就是對工做區進行檢查
git checkout --filename//從暫存區中恢復文件(確保filename與branch名稱不一樣)
 
git status//查看狀態

3、git clone 和 git remote

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
git clone <版本庫的網址> <本地目錄名>
git clone支持多種協議,除了HTTP(s)之外,還支持SSH、Git、本地文件協議等,下面是一些例子。
 
$ git clone http[s]://example.com/path/to/repo.git/
$ git clonessh://example.com/path/to/repo.git/
$ git clone git://example.com/path/to/repo.git/
$ git clone/opt/git/project.git
$ git clonefile:///opt/git/project.git
$ git cloneftp[s]://example.com/path/to/repo.git/
$ git clonersync://example.com/path/to/repo.git/
 
SSH協議還有另外一種寫法
$ git clone [user@]example.com:path/to/repo.git/
 
=========================================
 
git remote
git remote -v //查看遠程主機的網址
git remote show <主機名>//查看該主機的詳細信息
git remote add <主機名> <網址>//添加遠程主機
git remoterm<主機名> //刪除遠程主機
git remote rename <原主機名> <新主機名>//重命名遠程主機

4、git pull 和 git push

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
$ git pull <遠程主機名> <遠程分支名>:<本地分支名>
$ git push <遠程主機名> <本地分支名>:<遠程分支名>
                         from         to
 
git pull origin master:master
取回origin主機的master分支,與本地的master分支合併
 
git push origin master:master
推送本地的master分支,與origin主機的master分支合併
 
 
 
git pull origin master
若是遠程分支是與當前分支合併,則冒號後面的部分能夠省略。
 
git push origin master
本地的master分支推送到origin主機的master分支。若是後者不存在,則會被新建
 
 
 
git pull origin
本地的當前分支自動與對應的origin主機」追蹤分支」(remote-tracking branch)進行合併。
追蹤分支 是 遠程的同名分支
 
git push origin
當前分支與遠程分支之間存在追蹤關係,則本地分支和遠程分支均可以省略
 
 
 
git pull
當前分支自動與惟一一個追蹤分支進行合併
 
git push
當前分支只有一個追蹤分支,那麼主機名均可以省略

5、git merge 和 git rebase

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
git merge
用"pull"命令把"origin"分支上的修改拉下來而且和你的修改合併;
結果看起來就像一個新的"合併的提交"(merge commit):
 
 
//使用 rebase 合併
$ git checkout mywork
$ git rebase origin
這些命令會把你的"mywork"分支裏的每一個提交(commit)取消掉,
而且把它們臨時 保存爲補丁(patch)(這些補丁放到".git/rebase"目錄中),
而後把"mywork"分支更新 到最新的"origin"分支,
最後把保存的這些補丁應用到"mywork"分支上
 
 
在rebase的過程當中,也許會出現衝突(conflict). 在這種狀況,
Git會中止rebase並會讓你去解決 衝突;在解決完衝突後,
用"git-add"命令去更新這些內容的索引(index), 而後,你無需執行 git-commit,只要執行:
 
$ git rebase --continue
這樣git會繼續應用(apply)餘下的補丁。
 
在任什麼時候候,你能夠用--abort參數來終止rebase的行動,而且"mywork"分支會回到rebase開始前的狀態。
$ git rebase --abort


6、git log

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
git log --stat -n 5  //簡單的列出了修改過的文件
 
git log -p  -n 5 //詳細的列出修改過的文件,及提交文件的對比
 
git log --graph//ASCII 字符串表示的簡單圖形,形象地展現了每一個提交所在的分支及其分化衍合狀況
git log --all --decorate --graph
 
git log --pretty=oneline//只顯示哈希值和提交說明
 
git log --pretty=oneline/short/full/fuller/format:""(格式等)
 
git log --name-only //僅在提交信息後顯示已修改的文件清單
 
git log --no-merges//不顯示merge的log
 
 
經常使用的命令:
 
git log --name-status -n 5 --no-merges path/filename//顯示新增、修改、刪除的文件清單(不包含merge的log)
git log --name-status --skip=5 -n 5 --no-merges path/filename//略過5條,從第6條開始取5條log

7、git stash

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
保存工做現場
 
git stash    //保存工做現場
 
dosome work
 
git pop//返回工做現場
 
 
 
git stash list//查看 stash 隊列
 
git stash pop stash@{num} 
//num就是list中要恢復的工做現場編號
//使用pop命令恢復的工做現場,其對應的stash 在隊列中刪除
 
git stash apply stash@{num}
//num就是list中要恢復的工做現場編號
//使用apply命令恢復的工做現場,其對應的stash 在隊列中不刪除
 
 
git stashclear//狀況 stash 隊列

8、分支合併

1
2
3
4
5
6
7
8
9
分支合併:
 
1.保持工做目錄 clean
2.git checkout master //切換到主幹
3.git merge subscribeQY //在主幹上合併分支
4.若是有衝突就解決一下
 
master push前,在分支上merge master
而後,在master上,merge 分支,在 push

9、其餘

1
2
3
4
$ git fetch <遠程主機名> <分支名>
 
git fetch origin master
取回origin主機的master分支
相關文章
相關標籤/搜索