前言:
1.文中的”$”不納入命令行中,只做標記用
2.文中會介紹常用的命令行操作方式和xcode界面化操作方式介紹git
3.以下均個人理解整理,如果有錯還請指出
git工作原理
工作區(Working Directory):倉庫文件夾裡除.git目錄以外的內容
版本庫(Repository):.git目錄,用於存儲記錄版本信息
暫緩區(stage):也叫暫存區 分支(master):.git自動創建的第一個分支 HEAD指針:用於指向當前分支
git add和git commit原理
git add:把文件修改或者新添加文件添加到暫緩區(暫存區) git commit:把暫緩區(暫存區)中的所有內容提交到當前分支
什麼是分支?
git可以創建無數個分支,且在創建一個git倉庫的的同時會自動創建第一個分支 分支的作用:舉個例子 —> 一個已經上架的項目,發現有重要Bug,為了不影響主分支的開發進度,一般會開個分支出來專門修復Bug用,等到Bug修復後,再與主分支進行合並操作
HEAD頭指針運作原理
HEAD指針就是為了在各個分支間進行切換,我們開發哪個分支,它就會指向哪個分支
git初始化和訪問配置(命令行方式)
初始化一個本地版本庫
$ git init 設置用戶名和郵箱
$ git config user.name “用戶名” $ git config user.email “
[email protected]”
設置全局用戶名和郵箱(優先級較高,如果同時設置,優先使用全局)
$ git config –global user.name “用戶名” $ git config –global user.email “
[email protected]”
git倉庫項目初始化操作
在git工作區(同級目錄和同級目錄的子目錄)中創建一個文件 main.m
$ touch main.m 查看文件狀態(查看文件是否被管理)
$ git status
說明:
1.如果文件的顏色為紅色,說明該文件並沒有被添加到git的暫緩區中
2.如果文件顏色為綠色,說明該文件已經被添加到git的暫緩區中 添加文件到暫緩區中,查看文件狀態
$ git add main.m 提交到本地版本庫中
$ git commit -m “創建了main.m文件” main.m
說明:
1.可以直接在後面跟上文件,表示把該文件提交到本地版本庫(暫緩區–>版本庫)
2.不跟任何文件名稱,表示把當前所有暫緩區中的內容都提交到版本庫中 修改文件,重新提交更改到本地版本庫(git中如果修改了文件,需要重新將文件添加到暫緩區中才能提交)
$ git add main.m $ git commit -m “修改了main文件” main.m
注意:在git中和svn不一樣的地方在於 —— 不管是創建文件還是修改文件都需要添加到暫緩區中然後再提交
git好用的功能 —— 起別名
我們來給status起別名 st
基本方式:(只能在當前文件夾內的git工作區內使用)
$ git config alias.st “status” 這樣以後要查詢文件狀態就可以直接使用 $ git st 就可以了 高級方式:(只能在當前文件夾內的git工作區內使用)
gitcommit?m"注釋"??> git config alias.ci “git commit -m” 這樣以後要提交文件就可以直接使用$ git ci “注釋” 全局別名:(設置一次,電腦中所有的地方都可以使用)
$ git config –global alias.st “status”
git刪除文件
先創建一個新的文件
$ touch test.m 將文件提交到暫緩區中
$ git add test.m 提交刪除操作到本地版本庫
$ git commit -m “刪除了test.m”文件 刪除test.m文件
$ git rm test.m
查看git版本信息
查看git歷史版本信息
基礎方式:
$ git log 高級方式:(可查看版本回退操作)
$ git reflog 因為git是分布式版本控制,有多個git本地版本庫,為了使版本號之間不互相沖突,所以git版本號是通過SHA1加密得到的密文。
版本回退操作
情況一:修改了本地版本庫文件,但還未提交
$ git reset –hard HEAD
情況二:修改了本地版本庫文件,且已經提交
回退到上一個版本
方法一: $ git reset –hard HEAD^ // 一個“^”號表示一個版本
方法二: $ git reset –hard HEAD~1 // ~號後面表示回退幾個版本(如10就是回退10個版本)
回退到指定版本
$ git reflog // 查看回退版本信息 $ git reset –hard 版本號(5位)
創建共享版本庫並初始化項目
創建共享版本庫方式
自己搭建服務器,自己在服務器上配置(復雜) 在U旁上創建共享版本庫 把共享版本庫創建到文件夾中 托管到github、oschina網站 創建共享版本庫步驟
初始化一個空的git共享版本庫(和本地版本庫不同的是,共享版本庫不會生成.git文件夾)
$ git init –bare
注:怎麼查看使用的版本庫是共享版本庫還是本地版本庫,我們可以打開git 中的config配置文件查看裡面的“bare”字段,如果現實為true表示為共享版本庫,反之不是。 管理者連接倉庫並下載倉庫到本地
$ git clone 共享版本庫路徑 初識化項目
在初始化項目前,我們需要先忽略一些不必要的文件
創建一個忽略文件.gitignore夾
$ cd git工作區路徑 $ touch .gitignore 到github上搜索gitignore並拷貝Objective-OC文件中的內容到我自己創建的忽略文件內保存(文件中裡面包含了我們需要忽略的文件配置) 添加並提交忽略文件到本地版本庫
$git add .gitignore $ git commit -m “新建.gitignore忽略文件” .gitignore 創建我們的XCode工程
項目保存路徑選擇我們本地的版本庫(這是下面的git選項就會變灰不可點擊,這是正常的,因為我們當前的目錄下就有了git倉庫) 提交到本地版本庫:創建完成後點擊XCode上面的Source Control –> Commit –> 添加注釋 –> 提交 提交到遠程版本庫(共享版本庫):Source Control –> Push –> 選擇遠程版本庫 –> Push
XCode使用git(添加第三方框架)
開發中我們或多或少會使用到第三方框架,而我們將框架拖入工程的時候會發現git無法識別的情況,這個原因是因為我們拖入的是整個文件夾,如果我們直接拖入的文件不是包含在文件夾下,那麼就可以識別
git中第三方框架(靜態庫)的處理方式
方式一:直接創建和框架相對應的文件夾,然後將框架文件夾內的文件拖入到工程中 方式二:直接右擊需要添加的文件 –> source control –> add 方式三:點擊需要添加文件所屬的文件夾 –> Source Control –> Add “xxxx” 方式四(命令行):
$ cd 文件所在路徑 $ git add .
XCode回退操作
在XCode中,我們要進行回退操作很簡單:Source Control –> Discard All Changes(取消所有的更改)就可以了
XCode多人開發沖突解決
在多人開發中,很容易出現版本之間的沖突問題,一般我們都是先提交代碼到本地倉庫,然後一段時間提交一次到遠程版本庫中,這段時間可能別的開發者已經提交過文件,並且修改了和你同一文件的同一行,那麼此時要提交就會報錯 處理方式:
Source Control –> Pull –> 選擇修改樣式 —-> 確定 Source Control –> push –> 提交
創建新成員的共享版本庫
有時候開發過程中會出現新的團隊成員,而考慮到新成員和老成員使用git方式不一樣或者不熟悉,為了保證代碼的安全性,會新建一個專門給新成員的共享版本庫,以供觀察 創建新成員共享版本庫(步驟)
在遠程共享版本庫中新建一個新成員文件夾 打開遠程共享版本庫
$ cd 遠程共享版本庫中新成員文件夾的路徑 初始化新的共享版本庫
$ git init –bare 為確保拷貝到新成員共享版本庫中的工程為最新版,操作之前先pull一次工程 Source Control –> 鼠標移至工程分支選項 –> 選擇彈出菜單中的Configure … –> 在彈出窗口中選擇 –> Remotes(遠程) –> 點擊左下角”+” –> Add Remote… –> name:分支標記 Address:需要添加的倉庫地址 –> Done –> Source Control –> Push –> 選擇新成員分支 –> push 到此,新成員拿到倉庫地址
$ cd 本地倉庫路徑 下載遠程倉庫中的工程
$ git clone 遠程倉庫路徑 如果要檢查新成員的工作成果,那麼也需要下載新人共享版本庫的工程
先在本地創建一個存儲目錄 然後打開該目錄
$ cd 本地存儲目錄路徑 下載工程
$ git clone 新人共享版本庫的路徑
查看提交日志
Source Control –> History… 在日志中可以點擊對應日志中右邊的 show 查看修改的情況
將工程托管到github或osChina平台
github篇:
使用github有個比較不好的地方 – 要想免費必須開源,如果不開源只能付費使用
肯定要有賬號(步驟就不演示了)
創建遠程git版本庫
點擊右上角 “+” 號 –> New repository repository name(一般為項目名稱) –> Description(項目描述) –> 開源選擇“Public”(免費)不開源選擇”Private”(收費,7美元/1個月) –> 選擇是否生成README說明文檔 –> 忽略文件選擇(選擇Objective-OC)–> 選擇協議(一般選擇 Apache License 2.0協議)–> 創建 連接遠程版本庫配置
打開XCode –> XCode –> Preferences –> Accounts –> 左下角 “+” –> Add Repository… –> Address:遠程版本庫的HTTPS地址 Type:管理工具類型 Authentication:認證方式 User Name:用戶名 Password:密碼 –> Add 連接遠程版本庫
Source Control –> Chack Out –> 在彈出的窗口中找到我們需要的版本庫並選擇 –> Next –> 在彈出窗口中選擇需要存儲的位置 創建工程:將項目添加到版本庫的目錄下 –> Source Control –> Commit –> 提交 將本地版本庫的工程提交到遠程版本庫:Source Control –> Push –> 提交
刪除代碼倉庫
登錄github –> 找到倉庫 –> Settings –> 最下面有個Delete this repository – 輸入需要刪除的倉庫名 – 提交
將舊項目添加到git版本庫中
創建遠程倉庫 配置遠程倉庫並連接 使用命令行將文件加入到管理列表中
$ git add . 提交代碼到本地版本庫
$ git commit -m “注釋” 提交代碼到遠程版本庫