使用 Git 命令去管理項目的版本控制(二)

jopen 8年前發布 | 15K 次閱讀 Git 版本控制系統

參考上一篇完成本篇博客,本篇為作者原創,僅供學習參考。

本篇博文在上一篇的基礎上這里記錄了我的一個小模擬練習。本篇作為自己的學習筆記,也意在方便其他人的學習使用,達到分享目的。下面主要是操作截圖 參考 cankao 參考

首先這里我要重點說明一下:git 與 svn 的區別,git 是分布式的管理服務器,一個很好的應用就是 gitHub 網站。是 Linux 內核開源的作者使用27天時間編寫成功的,是不是非常牛逼( 參考 )。svn 是一個集中式的服務器。集中式的服務器對網絡的要求比較大,如果沒有網絡,他就不能很好地為我們服務,這也是我為什么要分享一下git的使用的原因之一。但是較大的公司一般還是出于保密不會使用第三方的托管工具,他們一般都會有自己的內網和代碼管理工具。git能夠在沒有網絡的情況下完成對版本的回復,提交修改源碼,僅僅在同步服務器的時候需要網絡(將本地的服務器倉庫副本上傳到公司的服務器原本中)。

首先建立以下文件夾,下面默認已經打開顯示隱藏文件(這個請參照上一篇中的命令)注意,下面出現的中文文件夾,沒有試驗成功,需要修改為英文的名字,這樣就能夠進行了提交版本等等實驗。由于截屏要花費時間,所以下面的博文,從不能實現的地方我進行了修改了英文,前面的重點是一些操作步驟。

將初始化 服務器數據倉庫 為遠程倉庫(就是我們Project要托管的地方),打開終端,輸入命令如下:

經理需要在 項目經理 文件夾中 克隆服務器倉庫副本到本地 ,然后再創建工程框架,創建一份濾過性說明文件 .gitignore ,最后將創建好工程框架的數據倉庫副本推送到服務器倉庫(push),截圖如下:

在終端中找到路徑為 項目經理/數據倉庫 的路徑,然后為該服務器副本倉庫配置用戶名,郵箱,然后添加一個工程到副本內部,注意:濾過文件(.gitignore)與(.git)還有 工程文件 三個在同一級目錄(服務器副本文件夾)中。下面省去了用戶名,郵箱配置,截圖如下:

下面是將上面做好的工作,推送到公司服務器倉庫中:

程序員張三,去從公司服務器倉庫 得到整個項目:

下面假設李四 和 王五 都做了上面的步驟,這樣 三四五都開始編碼了,第一天開工了:

張三工作,張三打開從服務器上克隆下來的工程文件,開始了自己的編碼,編碼一天了,開始提交自己的工作到公司服務器。

點擊 Xcode菜單欄上的source control -> commit 進行提交

commit 的時候 順便再勾選一下左下角的 push to remote

經理晚上要看看張三這個人,這一天的任務量是否完成

點擊 Xcode菜單欄上的source control -> pull 進行更新

在pull的時候遇到錯誤如下:

可以這樣的解決:

點擊 Xcode菜單欄上的source control -> Discard All Changes 進行將以前的更新撤銷,然后再從服務器拉取更新就OK了

做到這里居然張三提交到服務器的內容,對張三、經理、其他人都不能pull下來。這里我仔細檢查了半天,都沒有問題啊,原因是我采用了中文的名字,在生成路徑的時候,非常的容易出錯,導致系統不能認出來了,所以以后還是要寫成字母為好。下面我又新建的文件,開始繼續上面的操作。

注意,user.anme  user.email 是必須寫的,不然在提交代碼的時候會給出警告,不能提交,這里如果忘了,可以在終端輸入設置用戶名和用戶郵箱的命令。

這一次我快速的創建了字母的格式的文件夾,就好了,解決了上面的問題。那么下面我就要基于我字母格式文件夾來模擬操作了。

好了下面的模擬很簡單,文件名字也很簡單(經理-jl,張三-zs ,王五-ww ,公司遠程服務器-sever)

下面模擬王五開始干活,在工程中操作:

接下來,王五提交任務到服務器

由于缺少用戶名與郵箱,上傳到服務器的時候,如下:

解決辦法:

現在就可以了,提交之后。jl打開然后pull 就可以看到ww(王五)做了什么工作了。

經理要的操作:打開工程-Source Control ->pull....

次日,張三來的很早,第一件事就是從服務器上down一份最新的工程代碼

下載之前:

下載之后:(pull)

致此,已經模擬了項目經理上傳框架,員工下載框架,員工上傳自己的任務、經理下載查看任務完成情況。

以后我還陸續更新,分支的使用,感覺寫博客是一件費時的事情,但是呢也有收獲,自己能夠再一次的學習理解,分享,還能在遺忘的時候快速回顧。

假設這時候公司來了一個新的員工叫 wm(王麻子)

公司第一次給新人的是一個公司服務器倉庫的副本

所以就要求項目經理創建一下新人服務器的遠程倉庫

a、創建一個遠程倉庫文件夾 并初始化 git init —bare

b、有項目經理操作:操作流程:Xcode -> source control -> 主倉庫-master -> configure 主倉庫 -> Remotes -> 左下角+ 添加一個新人服務器地址 -> 填完用戶名和地址之后 done

c、向新人服務器里面添加項目

項目經理->Xcode->source control->push->新人服務器地址里面

我們建立一個文件夾,模擬一下經理創建的 新人服務器的遠程倉庫:

輸入命令設置用戶名,用戶郵箱,不然后期沒有辦法操作。

添加一個新人折騰用的服務器。

注意下面經理要push 到 我們的新人搗蛋折騰服務器哦

經理 push新人使用服務器工程 成功

新人從項目經理那邊拿到新人服務器的地址,開始clone,并開發。

新人已經從折騰服務器中clone 了工程

新人這時候自己玩吧

公司經理分配任務:(讓王五(ww)來修復 1.0版本的 bug ,讓張三(zs)來開發項目1.1版本,新人(xr)負責瞎搗蛋,經理(jl)負責檢查上面員工的進度)這時候經理(jl)在將系統打好版本標記 v1.0   v1.1 如下:

經理找來王五開始修改v1.0的bug

王五應該拿到貼有1.0標簽的這個版本的項目

(經理修改或者切換自己的版本為1.0版本,然后push 1.0版本到服務器,王五從服務器 pull下來,并創建分支然后切換到創建的分支,注意看 “常見命令”)

git checkout -b xiugaiBug 

這時候,王五pull之后,bug修改好了,要提交到主分支并與之合并,可以 Xcode ->Souce Control ->xiugaiBug->Merge into Branch.... 然后一步一步確定Ok

最后 張三從服務器 pull 一份,可以看到里面修改好了bug 。

 創建分支: $ git branch mybranch
切換分支: $ git checkout mybranch
創建并切換分支: $ git checkout -b mybranch

更新master主線上的東西到該分支上:$git rebase master

切換到master分支:$git checkout master

更新mybranch分支上的東西到master上:$git rebase mybranch

提交:git commit -a

對最近一次commit的進行修改:git commit -a –amend

commit之后,如果想撤銷最近一次提交(即退回到上一次版本)并本地保留代碼:git reset HEAD^
合并分支:(merge from) $ git checkout master
$ git merge mybranch (merge from mybranch)
刪除分支: $ git branch -d mybranch
強制刪除分支: $ git branch -D mybranch
列出所有分支: $ git branch
查看各個分支最后一次提交: $ git branch -v

查看哪些分支合并入當前分支: $ git branch –merged

查看哪些分支未合并入當前分支: $ git branch –no-merged

更新遠程庫到本地: $ git fetch origin
推送分支: $ git push origin mybranch
取遠程分支合并到本地: $ git merge origin/mybranch
取遠程分支并分化一個新分支: $ git checkout -b mybranch origin/mybranch
刪除遠程分支:                 $ git push origin :mybranch

rebase: $ git checkout mybranch
$ git rebase master (rebase from master)

舉例: $ git checkout server
$ git rebase –onto master server client
$ git checkout master
$ git merge client (fostforward)
$ git rebase master server (checkout sever)
$ git merge server
$ git branch -d client
$ git branch -d server

View Code 常見命令

(Over 版本控制已經就這些,僅僅是很淺的學習到這里,以后還要繼續學習git的知識,這篇博文話費時間最久,決定以后要減少寫博客的時間)

來自: http://www.cnblogs.com/benpaobadaniu/p/5126425.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!