【Git】之Git使用案例
本帖主要介紹一下Git在實際專案開發中的使用流程,包括克隆、暫存、提交、推送、拉取、分支、衝突解決等,暫時還不包括回退。
1、首先需要安裝Git,下一步下一步就行,這裡就不說了。值得一提的是,如果Git安裝成功,當你在某個資料夾下點選滑鼠右鍵的時候,彈出的選單中會有一項是Git Bash Here,點選這一項就可以彈出Git的控制檯,我們對Git的所有操作都會在這個控制檯中進行:
2、然後我們需要在GitHub或OSChina上建立一個專案,這裡我是在OSChina的碼雲上建立了一個專案,命名為TestGit:
這裡需要強調的是,如果我們讓我們的本地倉庫連線遠端倉庫,就必須有一個SSH KEY
(1)在Git控制檯中輸入 ssh-keygen -t rsa -C "[email protected]",引號裡面的是你的郵箱地址,回車後就建立了一個SSH KEY,此時你就可以在你的當前使用者資料夾中看到多了一個 .ssh 資料夾。這個資料夾中有兩個檔案:id_rsa(私鑰) 和id_rsa.pub(公鑰),我們需要的是 id_rsa.pub 公鑰檔案。
(2)得到公鑰檔案之後,開啟GitHub或OSChina中的Settings選項,其中有一項是SSH KEY,我們需要在這裡建立我們的SSH KEY,標題任意,公鑰中填入id_rsa.pub檔案中的內容,點選確定即可。
3、在電腦中新建一個資料夾用來放本地倉庫,這裡我用的是我電腦中的 E:\GitWorkSpace 資料夾。
4、在 E:\GitWorkSpace 資料夾下空白區域右鍵點選 Git Bash Here 開啟 Git 控制檯,接下來我們就需要將遠端倉庫中的專案克隆到本地電腦中了。
5、為了克隆一個專案,我們需要它在遠端倉庫中的SSH地址,即下圖所示區域,選中SSH,點選最右邊的 複製 按鈕即可複製其SSH地址
6、在控制檯中輸入 git clone [email protected]:itgungnir/TestGit.git ,點選回車開始克隆倉庫,克隆成功後如圖所示:
此時我們到 E:\GitWorkSpace 目錄中,就可以看到一個TestGit的檔案夾了,開啟TestGit,我們可以看到一個隱藏的 .git 資料夾和一個readme檔案。
7、進入TestGit專案:在控制檯中輸入 cd TestGit即可,此時進入的是master分支,即主分支,如圖:
8、在克隆倉庫的時候,預設就建立了一個名為 origin 的遠端連線,我們可以通過 git remote -v來檢視:
9、在遠端倉庫中建立一個 dev 分支:
(1)點選下圖所示的區域,點選 管理分支
(2)可以看到,現在專案中只有 master 這一個分支,點選左側的 新建分支 按鈕新建一個分支
(3)在 新分支名稱 中輸入dev,點選建立分支
(4)建立完成後,就可以看到,多了一個 dev 分支
10、我們需要將遠端倉庫中的 dev 分支拉取到本地倉庫中:
(1)由於遠端倉庫的分支進行了更改,因此我們需要先更新遠端連線:在控制檯中依次輸入git remote show origin 、 git remote update 、 git fetch語句,如下圖:
可以看到,在執行了 git remote update 語句之後,提示我們有一個dev分支沒有更新,使用 git fetch 語句進行更新。
(2)更新完成之後,將遠端倉庫中的dev分支複製到本地:使用 git checkout -b dev origin/dev,如圖:
這條語句的作用是將 origin 中的 dev 分支複製到本地,本地的分支也叫 dev。
11、在團隊協作的時候,遠端倉庫中只有 master 和 dev 兩個分支就可以了,也就是說,我們在本地需要建立新的分支編寫自己的模組,寫完之後合併到 dev 分支,然後推送到遠端倉庫中即可。
12、在本地建立自己的分支:使用 git checkout -b wzy語句建立一個名為 wzy 的本地分支:
13、在本地 wzy 分支中進行程式碼的編寫。例如:我們在TestGit專案下新建一個 a.java 檔案,在 a.java 檔案中寫入一些程式碼,然後提交到本地倉庫中
(1)在TestGit中新建一個 a.java 檔案:
(2)在Git控制檯中使用 git status命令檢視當前專案中檔案的修改狀態(哪個檔案被改變了):
可以看到,a.java 被改變了,而且顯示為紅色,意思是還沒有進行暫存(暫存之後會變成綠色)
(3)對 a.java 進行暫存,使用 git add a.java命令:
如果沒有提示任何資訊,則表示暫存成功了。
(4)將暫存資訊提交到本地倉庫,使用 git commit -m "add a.java"命令:
提交成功後,會提示 1 file changed ,表示一個檔案被修改後提交了。
(5)此時我們再次呼叫 git status命令檢視狀態,就可以看到沒有任何檔案被修改的提示:
14、以上所有的檔案操作都是在 wzy 分支上進行的,現在我們想將 wzy 分支合併到 dev 分支上
(1)注意,merge 命令表示的是將引數(wzy)分支合併到當前分支,因此我們需要先切換到 dev 分支中,使用git checkout dev 命令:
(2)如果直接用 merge 命令,會直接將 wzy 分支刪除,這個叫做 Fast Feature,我們還想在合併之後檢視 wzy 分支的資訊,就需要停止 Fast Feature 功能,因此需要新增 --no-ff 。停止 Fast Feature 功能之後,會在分支合併點上建立一個新的 commit ,因此我們還需要新增一個提交說明(-m)。綜合以上,該命令是:git merge --no-ff -m "merge wzy" wzy ,如下圖:
(3)合併成功之後,wzy 分支就沒用了,我們可以使用 git branch -d wzy命令來刪除這個分支,刪除後重新使用 git branch 命令來檢視所有分支,發現 wzy 分支已經被刪除:
15、接下來就是推送到遠端倉庫了。如果我們現在推送,是肯定成功的,因為現在只有我們自己在操作 dev 分支,但我想給大家演示一下衝突的解決,所以,我們需要去遠端倉庫進行一些修改。
開啟遠端倉庫中的 TestGit 專案,切換到 dev 分支,然後建立一個 a.java 檔案並寫入一些資料,點選 提交 按鈕提交到 dev 分支,回到 dev 分支後發現多了一個 a.java 檔案:
16、回到控制檯,嘗試進行推送:
(1)使用 git push origin dev命令將改變推送到遠端倉庫的 dev 分支中,會發現報錯,原因是其他人在你將遠端倉庫克隆到本地之後的這段時間內對遠端倉庫dev 分支中的專案進行了更改,即我們本地倉庫中的專案不是最新版本的專案,需要從遠端倉庫拉取最新版本
(2)呼叫 git pull命令從遠端倉庫中拉取專案的最新版本,發現仍然報錯,原因是檔案衝突,衝突檔案是 a.java
(3)當遇到衝突的時候,我們有兩種解決方案:第一是在檔案系統中開啟這個檔案進行修改;第二是直接在Git控制檯中進行更改。呼叫 vi a.java命令對 a.java 檔案進行修改,會看到跳轉到了這樣一個介面:
在這個介面中,按 D可以刪除一行,按 A 可以開啟編輯,按 ESC可以退出當前狀態,輸入 :wq 可以儲存並退出這個頁面。使用這些操作對檔案進行修改,修改成我們想要的樣子,然後儲存退出即可。
另外我們可以看到,兩個版本的檔案中衝突的內容被 <<<<<<< 和 >>>>>>> 兩種符號括了起來,兩個版本的內容被 ======= 符號分隔開了,我們只需要在這個區域內修改,然後刪掉這三種符號即可。
修改完成之後的樣子如圖所示:
按 ESC退出編輯狀態,輸入 :wq 命令儲存當前檔案狀態並退出,就回到了控制檯頁面:
17、衝突解決完成之後需要再次暫存、提交之後才能再次推送:
(1)檢視當前狀態,發現 a.java 檔案沒有被暫存提交:
(2)對 a.java 檔案進行暫存和提交,然後再次檢視狀態,發現沒有需要提交的了:
18、現在就可以再次推送了:
回到遠端倉庫中檢視,可以看到 a.java 檔案的提交事件變為了 conflict fixed ,而且檔案內容也被改變了:
以上是一個操作 Git 進行版本控制的小DEMO,因為我是初學者,所以肯定會有些地方理解的不正確,希望大家提出寶貴的意見,讓我可以學習進步,謝謝大家!
相關推薦
【Git】之Git使用案例
本帖主要介紹一下Git在實際專案開發中的使用流程,包括克隆、暫存、提交、推送、拉取、分支、衝突解決等,暫時還不包括回退。 1、首先需要安裝Git,下一步下一步就行,這裡就不說了。值得一提的是,如果G
【開發工具 - Git】之本地項目托管到遠程倉庫
暫存 related 過程 用戶 進行 密碼 包含 提交 什麽 這裏所說的“本地項目托管到遠程倉庫”,說的是:例如,我們在本地有一個寫了很長時間的項目,現在想要托管到GitHub或碼雲上進行版本控制。 這個過程大致需要以下幾個步驟: (1)在本地初始化Git項目本
【重要】Pro Git 第二版 簡體中文
入門 -s view src 一份 itl title 可能 net 不管是入門還是精通git,下面這本書都是必讀,同時它也是官方推薦書籍。 Pro Git 第二版 簡體中文 我自己還收集了一份網頁版的progit,但可能不是progit
Python開發【筆記】:git&github 快速入門
精神 源代碼 公開 平臺 per 其中 http cvs tro github入門 簡介: 很多人都知道,Linus在1991年創建了開源的Linux,從此,Linux系統不斷發展,已經成為最大的服務器系統軟件了。 Linus雖然創建了Linux,但Linux的壯大
【轉】使用git將項目上傳到github(最簡單方法)
名稱 posit gitignore nor this strong 共享 window mas 原文地址:http://www.cnblogs.com/cxk1995/p/5800196.html 首先你需要一個github賬號,所有還沒有的話先去註冊吧! https:/
【GitHub】 初學Git,Github在Ubuntu下的配置
1.參考連結:https://blog.csdn.net/tina_ttl/article/details/51326684 http://www.runoob.com/w3cnote/git-guide.html 開始使用github 1. 配置git git config --g
【Flume】之 執行(案例一)
步驟 (1)配置檔案 在 /conf 下建立 exmaple.conf 拷貝,配置exmaple.conf # example.conf: A single-node Flume configu
【git】搭建git伺服器 在 Linux 下搭建 Git 伺服器
在 Linux 下搭建 Git 伺服器 目錄 ① 安裝 Git ② 伺服器端建立 git 使用者,用來管理 Git 服務,併為 git 使用者設定密碼 ③ 伺服器端建立 Git 倉庫 ④ 客戶端 clone 遠端倉庫 ⑤ 客
【Error】Another git process seems to be running in this repository, e.g.
使用git add時遇到錯誤: fatal: Unable to create '.../.git/index.lock': File exists. Another git process seems to be running in this repository, e.g. an e
【git】在git遠端倉庫中建立一個新專案並把原生代碼提交上去
一、確保你有管理員許可權。 如果你還不是管理員,請讓當前管理員編輯gitosis-admin專案下的gitosis.conf檔案,在[group gitosis-admin]下的members行裡新增你的名字。 二、把gitosis-admin專案clone下來 三、現
【Git】搭建Git伺服器——本地協議伺服器
環境 CentOS 7 x64 安裝 在終端下執行下面命令來檢查系統是否安裝git $ git --version 如果返回 “git: 未找到命令” 則需要安裝git。 執行下面命令安裝git和nfs $ sudo yum install -y
【GitHub】建立Git分支將Hexo部落格遷移到其它電腦
GitHub+Hexo搭建部落格的過程比較平滑,但是它的配置卻非常耗時間,一旦電腦出現問題或者需要在另外一臺電腦上寫部落格,那麼Hexo部落格的遷移非常就讓人頭疼。下面參考其他部落格的方法,整理出一個能在平時就管理重要檔案的方法,方便隨時遷移 必備
git命令之git stash 暫存臨時代碼
命令 tar 時代 代碼 但是 緊急 tails con net git stash — 暫存臨時代碼 stash命令可以很好的解決這樣的問題。當你不想提交當前完成了一半的代碼,但是卻不得不修改一個緊急Bug,那麽使用’Git stash’就可以將你當前未提交到本地(
【redis】之centos6.x安裝redis3.0.x
local con releases 新建 zxvf 分享 執行 .tar.gz all centos6.9_x86_64 1、下載redis安裝包 http://download.redis.io/releases/redis-3.2.9.tar.gz 2、解壓 tar
【AMQ】之JMS Mesage structure(JMS消息結構)
api 兼容 ctu 標識 提供商 nbsp 連接 特定 ext Δ消息體:JMS API 定義了5種消息格式也叫消息類型,可以使用不同形式發送和接收數據,並可以兼容現有的消息格式 TextMessage,MapMessage,ByteMessage,StreamMessa
【java】之java代碼的執行機制
() alt 分享 str clas not roc 成員 輸入 要在JVM中執行java代碼必須要編譯為class文件,JDK是如何將Java代碼編譯為class文件,這種機制通常被稱為Java源碼編譯機制。 1、JVM定義了class文件的格式,但是並沒有定義如何將ja
【springboot】之starter pom
soc jet rep uri shel mvc must batch god SpringBoot針對不同業務提供了不同的starter pom,根據springboot版本不同可能有差異。 spring-boot-starter springboot核心start
【MantisBT】之在linux環境上的安裝搭建
bts mantisbt 在工作中,選用了MantisBT作為公司的BTS工具。MantisBT的作為一款缺陷跟蹤管理系統,有以下優點:開源、 免費;可與開源的testlink集成,便於統計bug的用例發現率;具有bug關聯功能;權限設置靈活,不同角色有不同權限;具有郵件通知功能,每個用戶可根據自身的工
【XSS】之錨點
eval 源碼 div rip function 函數 settime cati ash 今天P師傅發了一個XSS鏈接,讓利用一下,源碼如下 <script type="text/javascript"> var x=location.hash; funct
day40 python MySQL【四】 之 【索引】【視圖】【觸發器】【存儲過程】【函數】
cin 數量 存儲 自動 條件語句 ima doc 有序 lan 1.索引 索引相當於圖書的目錄,可以幫助用戶快速的找到需要的內容. 數據庫利用各種各樣的快速定位技術,能夠大大提高查詢效率。特別是當數據量非常大,查詢涉及多個表時,使用索引往往能使查詢速度加快成千上