參考 上一篇 完成本篇博客,本篇爲做者原創,僅供學習參考。html
本篇博文在上一篇的基礎上這裏記錄了個人一個小模擬練習。本篇做爲本身的學習筆記,也意在方便其餘人的學習使用,達到分享目的。下面主要是操做截圖 參考 cankao 參考linux
首先這裏我要重點說明一下:git 與 svn 的區別,git 是分佈式的管理服務器,一個很好的應用就是 gitHub 網站。是 Linux 內核開源的做者使用27天時間編寫成功的,是否是很是牛逼(參考 )。svn 是一個集中式的服務器。集中式的服務器對網絡的要求比較大,若是沒有網絡,他就不能很好地爲咱們服務,這也是我爲何要分享一下git的使用的緣由之一。可是較大的公司通常仍是出於保密不會使用第三方的託管工具,他們通常都會有本身的內網和代碼管理工具。git可以在沒有網絡的狀況下完成對版本的回覆,提交修改源碼,僅僅在同步服務器的時候須要網絡(將本地的服務器倉庫副本上傳到公司的服務器本來中)。git
首先創建如下文件夾,下面默認已經打開顯示隱藏文件(這個請參照上一篇中的命令)注意,下面出現的中文文件夾,沒有試驗成功,須要修改成英文的名字,這樣就可以進行了提交版本等等實驗。因爲截屏要花費時間,因此下面的博文,從不能實現的地方我進行了修改了英文,前面的重點是一些操做步驟。程序員
將初始化 服務器數據倉庫 爲遠程倉庫(就是咱們Project要託管的地方),打開終端,輸入命令以下:服務器
經理須要在 項目經理 文件夾中 克隆服務器倉庫副本到本地 ,而後再建立工程框架,建立一份濾過性說明文件 .gitignore ,最後將建立好工程框架的數據倉庫副本推送到服務器倉庫(push),截圖以下:網絡
在終端中找到路徑爲 項目經理/數據倉庫 的路徑,而後爲該服務器副本倉庫配置用戶名,郵箱,而後添加一個工程到副本內部,注意:濾過文件(.gitignore)與(.git)還有 工程文件 三個在同一級目錄(服務器副本文件夾)中。下面省去了用戶名,郵箱配置,截圖以下:框架
下面是將上面作好的工做,推送到公司服務器倉庫中:分佈式
程序員張三,去從公司服務器倉庫 獲得整個項目:ide
下面假設李四 和 王五 都作了上面的步驟,這樣 三四五都開始編碼了,第一天開工了:svn
張三工做,張三打開從服務器上克隆下來的工程文件,開始了本身的編碼,編碼一天了,開始提交本身的工做到公司服務器。
commit 的時候 順便再勾選一下左下角的 push to remote
經理晚上要看看張三這我的,這一天的任務量是否完成
點擊 Xcode菜單欄上的source control -> pull 進行更新
在pull的時候遇到錯誤以下:
能夠這樣的解決:
點擊 Xcode菜單欄上的source control -> Discard All Changes 進行將之前的更新撤銷,而後再從服務器拉取更新就OK了
作到這裏竟然張三提交到服務器的內容,對張3、經理、其餘人都不能pull下來。這裏我仔細檢查了半天,都沒有問題啊,緣由是我採用了中文的名字,在生成路徑的時候,很是的容易出錯,致使系統不能認出來了,因此之後仍是要寫成字母爲好。下面我又新建的文件,開始繼續上面的操做。
注意,user.anme user.email 是必須寫的,否則在提交代碼的時候會給出警告,不能提交,這裏若是忘了,能夠在終端輸入設置用戶名和用戶郵箱的命令。
這一次我快速的建立了字母的格式的文件夾,就行了,解決了上面的問題。那麼下面我就要基於我字母格式文件夾來模擬操做了。
好了下面的模擬很簡單,文件名字也很簡單(經理-jl,張三-zs ,王五-ww ,公司遠程服務器-sever)
下面模擬王五開始幹活,在工程中操做:
接下來,王五提交任務到服務器
因爲缺乏用戶名與郵箱,上傳到服務器的時候,以下:
解決辦法:
如今就能夠了,提交以後。jl打開而後pull 就能夠看到ww(王五)作了什麼工做了。
經理要的操做:打開工程-Source Control ->pull....
第二天,張三來的很早,第一件事就是從服務器上down一份最新的工程代碼
下載以前:
下載以後:(pull)
致此,已經模擬了項目經理上傳框架,員工下載框架,員工上傳本身的任務、經理下載查看任務完成狀況。
之後我還陸續更新,分支的使用,感受寫博客是一件費時的事情,可是呢也有收穫,本身可以再一次的學習理解,分享,還能在遺忘的時候快速回顧。
假設這時候公司來了一個新的員工叫 wm(王麻子)
建立分支: $ 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
(Over 版本控制僅僅是很淺的學習到這裏,之後還要繼續學習git的知識,這篇博文話費時間最久,決定之後要減小寫博客的時間)因爲我的使用習慣問題,實驗作完了,能夠將原本的隱藏文件設置爲隱藏狀態了,請看 上一篇 中的命令行。(本人用的是 mac 10.11 目前最新蘋果系統)
PS:在公司裏請不要隨意的升級系統,若是你升級了系統,與你的已經作了一半的工程裏面有東西不匹配了,工程報紅,就是你的責任了,你會挨批,會很差過的。因此注意不要擅自升級公司裏本身的系統。