git的開發流程和常用命令

高山低谷發表於2019-11-08

前言

git相比svn做程式碼管理,感覺更有優勢,這兩者的區別體現在以下幾點:

  • 1、首先,工作原理不一樣,svn是一種集中式的版本控制器,git是一種分散式的版本控制器。svn只有一箇中心倉庫,所有開發人員維護同一個伺服器上的程式碼。而git不同,每個開發人員的本地都是一個獨立的伺服器倉庫。
  • 2、其次,分支管理不一樣,svn的分支是全域性的,你修改一個分支,所有人必須同步這個分支,才能進行其他操作。git可以本地建立多個分支,並且自由切換,不會影響到其他人。如果有需要就合併到master分支,然後push到遠端伺服器,讓大家同步;如果沒用也可以直接delete掉。
  • 3、另外,安全機制不一樣,svn容易出現單點故障,如果伺服器當機,那麼所有人都無法工作了。git的話,即使伺服器掛了,每個研發的本地都相當於一個伺服器,還可以進行正常的開發工作。

使用git的基本流程:

一般來講 我們都是基於工作開發使用git的,首先在gitlab搭建自己伺服器,再由管理員去給你分配賬號許可權,如果你是提交程式碼到個人的githHub上,你得先自己去申請賬號。

1、配置使用者名稱和郵箱

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
複製程式碼

用了這個引數,表示你這臺機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的使用者名稱和Email地址

2、生成公鑰並新增

ssh-keygen -t rsa -C ”yourEmail@example.com”
複製程式碼

最後顯示成:

git的開發流程和常用命令
在這裡可以看到id_rsa和id_rsa.pub已經生成,並且生成的路徑為/root/.ssh/。

開啟id_rsa.pub檔案,並且複製全部內容。(路徑 C:\Users\admin.ssh)。

開啟GitLab賬戶,開啟SSH Keys: 新增git祕鑰

3、拉取程式碼

git的開發流程和常用命令

4、增加/刪除檔案

$ git add file1 file2 ....  //  新增指定檔案到暫存區
$ git add [dir]            // 新增指定目錄到暫存區,包括子目錄
$ git add .                // 新增當前目錄下的所有檔案到暫存區
$ git rm  file1 file2 ...     // 刪除指定檔案,並將本次刪除放入暫存區
$ git rm --cached file    //停止追蹤該檔案,但該檔案會保留在工作區
$ git mv [file-original] [file-renamed]  // 改名檔案,並且將這個改名放入暫存區
複製程式碼

5、程式碼提交

$ git commit -m [message]  // 提交暫存區到倉庫區
 
$ git commit [file1] [file2] ... -m [message] // 提交暫存區的指定檔案到倉庫區

$ git commit -a // 提交工作區自上次commit之後的變化,直接到倉庫區

$ git commit  -v  // 提交時顯示所有diff資訊
$ git commit --amend -m [message] // 使用一次新的commit,替代上一次提交, 如果程式碼沒有任何新變化,則用來改寫上一次commit的提交資訊

$ git commit --amend [file1] [file2] ...// 重做上一次commit,幷包括指定檔案的新變化
複製程式碼

6、 分支的建立與刪除

$ git flow feature start <branch-name>   // git-flow 建立 feature 分支
$ git flow feature finish <branch-name>  // git-flow 結束 feature 分支
$ git flow release start 1.1.5          // git flow 建立release 分支
$ git flow release finish 1.1.5        // git flow 結束release 分支
$ git branch                           // 列出所有本地分支
$ git branch -r                        // 列出所有遠端分支
$ git branch -a                       // 列出所有本地分支和遠端分支
$ git branch [branch-name]            // 新建一個分支,但依然停留在當前分支
$ git checkout -b [branch]           // 新建一個分支,並切換到該分支
$ git branch [branch] [commit]       // 新建一個分支,指向指定commit
$ git checkout [branch-name]         // 切換到指定分支,並更新工作區
$ git checkout -                    // 切換到上一個分支
$ git merge [branch]                // 合併指定分支到當前分支
$ git cherry-pick [commit]          // 選擇一個commit,合併進當前分支
$ git branch -d [branch-name]       // 刪除分支
$ git push origin --delete [branch-name]  // 刪除遠端分支
$ git branch -dr [remote/branch]         // 刪除遠端分支

複製程式碼

7、檢視狀態和歷史記錄

$ git status       // 顯示有變更的檔案
$ git log         // 顯示當前分支的歷史版本
$ git log --stat  // 顯示提交歷史以及每次提交發生變更的檔案
$ git shortlog -sn // 顯示所有提交過得使用者,並按提交次數排序
$ git diff         // 顯示暫存區和工作區的差異
$ giy diff --cached [file] // 顯示暫存區和上一個提交的差異
$ git diff HEAD          // 顯示工作區與當前分支最新提交的差異
$ git show [commit]      // 顯示某次提交的源資料和內容變化
$ git reflog           // 顯示當前分支的最近幾次提交
$ git blame [file]  // 顯示指定檔案是什麼人在什麼時間修改過
複製程式碼

8、 遠端同步與撤銷暫存

$ git fetch [remote]    // 下載遠端倉庫的所有變動
$ git remote -v        // 顯示所有遠端倉庫
$ git remote show [remote]   // 顯示某個遠端倉庫的資訊
$ git remote add [shortname] [url]  // 增加一個新的遠端倉庫,並命名
$ git pull [remote] [branch]  // 取回遠端倉庫的變化,並與本地分支合併
$ git push [remote] [branch]  // 上傳本地指定分支到遠端倉庫
$ git push [remote] --force  // 強行推送當前分支到遠端倉庫,即使有衝突
$ git push [remote] --all   // 推送所有分支到遠端倉庫
$ $ git reset --hard  //重置暫存區與工作區,與上一次commit保持一致
$ git checkout .  // 恢復暫存區的所有檔案到工作區即撤銷暫存
$ git checkout [file] // 恢復暫存區的指定檔案到工作區
$ git checkout [commit] [file]  // 恢復某個commit的指定檔案到暫存區和工作區
$ git stash       //  暫時將未提交的變化移除,稍後再移入
複製程式碼

以上是所有git工作中常用的一些基本操作命令,在實際開發中,也許你會覺得這種用命令化的操作提交程式碼比較痛苦,下面將會為大家帶來一篇關於git視覺化管理工具的SourceTree使用,用圖形介面的操作替代這種黑視窗命令,讓你對程式碼的管理更加輕鬆自如。

下一篇 SourceTree跳過註冊安裝和使用

相關文章