git 常用命令


 Git 常用命令速查

 從服務器上將代碼給拉下來

Git 幾個專用名詞的譯名如下。

Workspace:工作區
Index / Stage:暫存區
Repository:倉庫區(或本地倉庫)
Remote:遠程倉庫

遠程倉庫相關命令

 1 檢出倉庫:$ git clone git://github.com/jquery/jquery.git
 2 
 3 查看遠程倉庫:$ git remote -v
 4 
 5 添加遠程倉庫:$ git remote add [name] [url]
 6 
 7 刪除遠程倉庫:$ git remote rm [name]
 8 
 9 修改遠程倉庫:$ git remote set-url --push [name] [newUrl]
10 
11 拉取遠程倉庫:$ git pull [remoteName] [localBranchName]
12 
13 推送遠程倉庫:$ git push [remoteName] [localBranchName]

注:  git commit -m "用戶權限管理" --no-verify

 

如果想把本地的某個分支test提交到遠程倉庫,並作為遠程倉庫的master分支,或者作為另外一個名叫test的分支,如下:

git push origin test:master // 提交 本地test 分支作為遠程的master分支
git push origin test:test // 提交 本地test 分支作為遠程的test分支

- 分支(branch)操作相關命令

1 * git branch --set-upstream dev origin/next 
2 * // 手動建立追蹤關系。dev分支追蹤origin/next分支
3 * git branch 列出所有本地分支
4 * git branch -r 列出所有遠程分支
5 * git branch -a 列出所有本地分支和遠程分支
6 * git branch [branch-name] 新建一個分支,但依然停留在當前分支
7 * git checkout -b [branch-name] 新建一個分支,並切換到該分支
8 * git branch --track [branch][remote-branch]

新建一個分支,與指定的遠程分支建立追蹤關系

1 * git checkout [branch-name] 切換到指定分支,並更新工作區
2 * git branch -d [branch-name] 刪除分支-d選項只能刪除已經參與了合並的分支,對於未有合並的分支是無法刪除的。
3 * git push origin --delete [branch-name] 刪除遠程分支

版本(tag)操作相關命令查看版本:$ git tag

 1 創建版本:$ git tag [name]
 2 
 3 刪除版本:$ git tag -d [name]
 4 
 5 查看遠程版本:$ git tag -r
 6 
 7 創建遠程版本(本地版本push到遠程):$ git push origin [name]
 8 
 9 刪除遠程版本:$ git push origin :refs/tags/[name]
10 
11 合並遠程倉庫的tag到本地:$ git pull origin --tags
12 
13 上傳本地tag到遠程倉庫:$ git push origin --tags
14 
15 創建帶注釋的tag:$ git tag -a [name] -m 'yourMessage'

合並分支

比如,如果要將開發中的分支(develop),合並到穩定分支(master)

1 首先切換的master分支:git checkout master。
2 然后執行合並操作:git merge develop。
3 如果有沖突,會提示你,調用git status查看沖突文件。
4 解決沖突,然后調用git add .
5 所有沖突解決后,git commit 提交更改。

拉取分支

獲取最新版本有兩種 拉取和 獲取 pull 和 fetch

1 git pull 相當於git fetch 和 git merge
2 
3 git pull 從遠程拉取最新版本到本地自動合並 merge 
4 git pull origin master
5 git fetch 從遠程獲取最新版本到本地不會自動合並 merge 
6 git fetch origin master
7 git log -p master..origin/master
8 git merge origin/master

以上命令的含義:
首先從遠程的origin的master主分支下載最新的版本到origin/master分支上
然后比較本地的master分支和origin/master分支的差別
最后進行合並
實際使用中使用git fetch 更安全在merge之前可以看清楚 更新情況 再決定是否合並

當前的分支20171208,獲取20171214分支最新代碼,然后再推送到遠程遠程20171214

1 git fetch
2 git checkout 20171214
3 git merge 20171208
4 git push

 推送分支

(1)本地分支與遠程分支可以不是追蹤關系
* 如果想把本地的某個分支test提交到遠程倉庫,並作為遠程倉庫的test分支,或者作為另外一個名叫test的分支,如下:

* 本地先開好分支然后推送到遠程

$ git checkout -b test //創建並切換到分支test 
$ git push origin test:test // 推送本地的test(冒號前面的)分支到

遠程origin的test (冒號后面的)分支(沒有會自動創建)
(2)本地分支與遠程分支是追蹤關系
* 如果想把本地的某個分支dev提交到遠程倉庫,並作為遠程倉庫的dev分支,或者作為另外一個名叫dev的分支,如下:

 * 本地先開好分支然后推送到遠程
  $  git checkout -b dev   //創建並切換到分支dev 
  或者當前的分支就是dev
  $  git push origin dev
  eg.2
  git push origin payght  // 將本地dev 分支推送到遠程 payght 分支

分支操作

 1 # 列出所有本地分支
 2 $ git branch
 3 
 4 # 列出所有遠程分支
 5 $ git branch -r
 6 
 7 # 列出所有本地分支和遠程分支
 8 $ git branch -a
 9 
10 # 新建一個分支,但依然停留在當前分支
11 $ git branch [branch-name]
12 
13 # 新建一個分支,並切換到該分支
14 $ git checkout -b [branch]
15 
16 # 新建一個分支,指向指定commit
17 $ git branch [branch] [commit]
18 
19 # 新建一個分支,與指定的遠程分支建立追蹤關系
20 $ git branch --track [branch] [remote-branch]
21 
22 # 切換到指定分支,並更新工作區
23 $ git checkout [branch-name]
24 
25 # 切換到上一個分支
26 $ git checkout -
27 
28 # 建立追蹤關系,在現有分支與指定的遠程分支之間
29 $ git branch --set-upstream [branch] [remote-branch]
30 
31 # 合並指定分支到當前分支
32 $ git merge [branch]
33 
34 # 選擇一個commit,合並進當前分支
35 $ git cherry-pick [commit]
36 
37 # 刪除分支
38 $ git branch -d [branch-name]
39 
40 # 刪除遠程分支
41 $ git push origin --delete [branch-name]
42 $ git branch -dr [remote/branch]

查看信息

 1 # 顯示有變更的文件
 2 $ git status
 3 
 4 # 顯示當前分支的版本歷史
 5 $ git log
 6 
 7 # 顯示commit歷史,以及每次commit發生變更的文件
 8 $ git log --stat
 9 
10 # 搜索提交歷史,根據關鍵詞
11 $ git log -S [keyword]
12 
13 # 顯示某個commit之后的所有變動,每個commit占據一行
14 $ git log [tag] HEAD --pretty=format:%s
15 
16 # 顯示某個commit之后的所有變動,其"提交說明"必須符合搜索條件
17 $ git log [tag] HEAD --grep feature
18 
19 # 顯示某個文件的版本歷史,包括文件改名
20 $ git log --follow [file]
21 $ git whatchanged [file]
22 
23 # 顯示指定文件相關的每一次diff
24 $ git log -p [file]
25 
26 # 顯示過去5次提交
27 $ git log -5 --pretty --oneline
28 
29 # 顯示所有提交過的用戶,按提交次數排序
30 $ git shortlog -sn
31 
32 # 顯示指定文件是什么人在什么時間修改過
33 $ git blame [file]
34 
35 # 顯示暫存區和工作區的代碼差異
36 $ git diff
37 
38 # 顯示暫存區和上一個commit的差異
39 $ git diff --cached [file]
40 
41 # 顯示工作區與當前分支最新commit之間的差異
42 $ git diff HEAD
43 
44 # 顯示兩次提交之間的差異
45 $ git diff [first-branch]...[second-branch]
46 
47 # 顯示今天你寫了多少行代碼
48 $ git diff --shortstat "@{0 day ago}"
49 
50 # 顯示某次提交的元數據和內容變化
51 $ git show [commit]
52 
53 # 顯示某次提交發生變化的文件
54 $ git show --name-only [commit]
55 
56 # 顯示某次提交時,某個文件的內容
57 $ git show [commit]:[filename]
58 
59 # 顯示當前分支的最近幾次提交
60 $ git reflog
61 
62 # 從本地master拉取代碼更新當前分支:branch 一般為master
63 $ git rebase [branch]

撤銷

 1 # 恢復暫存區的指定文件到工作區
 2 $ git checkout [file]
 3 
 4 # 恢復某個commit的指定文件到暫存區和工作區
 5 $ git checkout [commit] [file]
 6 
 7 # 恢復暫存區的所有文件到工作區
 8 $ git checkout .
 9 
10 # 重置暫存區的指定文件,與上一次commit保持一致,但工作區不變
11 $ git reset [file]
12 
13 # 重置暫存區與工作區,與上一次commit保持一致
14 $ git reset --hard
15 
16 # 重置當前分支的指針為指定commit,同時重置暫存區,但工作區不變
17 $ git reset [commit]
18 
19 # 重置當前分支的HEAD為指定commit,同時重置暫存區和工作區,與指定commit一致
20 $ git reset --hard [commit]
21 
22 # 重置當前HEAD為指定commit,但保持暫存區和工作區不變
23 $ git reset --keep [commit]
24 
25 # 新建一個commit,用來撤銷指定commit
26 # 后者的所有變化都將被前者抵消,並且應用到當前分支
27 $ git revert [commit]
28 
29 # 暫時將未提交的變化移除,稍后再移入
30 $ git stash
31 $ git stash pop

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM