書接上回提出的Git在Xcode中的配置與使用常見問題4個問題
問題1,如何在Xcode中建立程式碼程式庫,並添加和提交代碼到程式碼程式庫?
問題2,如何在Xcode中提交推送給遠程伺服器程式碼程式庫?
問題3,如何在Xcode中複製遠程伺服器程式碼程式庫到本地?
問題4,如何使用Xcode擷取遠程程式碼程式庫資料,並解決衝突問題?
1、問題1
建立程式碼程式庫有兩種方式,一種是建立工程時候建立,另一種是把現有的工程拷貝到程式碼程式庫下,再初始化程式碼程式庫。
如果是建立工程時候建立,在儲存檔案時候可以選擇是否建立,如果勾選“Create local git repository for this project”,則就會為工程建立程式碼程式庫。
注意Xcode 4產生的目錄結構如下:
1 HelloWorld
2 ├── HelloWorld
3 │ ├── …
4 │ ├── ViewController.h
5 │ ├── ViewController.m
6 │ ├── en.lproj
7 │ │ ├── InfoPlist.strings
8 │ │ └── MainStoryboard.storyboard
9 │ └── main.m
10└── HelloWorld.xcodeproj
11│
12└──.git
第一行的HelloWorld是工程目錄也是程式碼程式庫的根目錄,第二行的HelloWorld目錄是存放來源程式目錄。而我們以前的目錄結構與此不同,目錄結構如下所示:
1 myrepo
2└── HelloWorld
3│ ├── HelloWorld
4│ │ ├── …
5│ │ ├── ViewController.m
6│ │ └── main.m
7│ └── HelloWorld.xcodeproj
8└──.git
第一行myrepo是程式碼程式庫的根目錄,第二行的HelloWorld是工程目錄,這樣的結構可以一個程式碼程式庫可以放置多個工程,是一對多的關係,而Xcode產生的方式是程式碼程式庫就是工程目錄,它們是一對一的關係。
如果我們還是採用一對多的關係,就不用在建立工程的時候勾選“Create local git repository for this project”選項了。這就需要將現有的HelloWorld工程拷貝到myrepo目錄,在終端中執行如下命令:
$ cd ~/myrepo
$ git init
Initialized empty Git repository in ~/.git/
初始化完成之後在添加並提交HelloWorld工程,在終端中執行如下命令:
$ git add .
$ git commit -m ‘tony init’
[master (root-commit) 98d7e4a] tony init
10 files changed, 643 insertions(+)
create mode 100644 HelloWorld/HelloWorld.xcodeproj/project.pbxproj
create mode 100644 HelloWorld/HelloWorld/AppDelegate.h
create mode 100644 HelloWorld/HelloWorld/AppDelegate.m
create mode 100644 HelloWorld/HelloWorld/HelloWorld-Info.plist
create mode 100644 HelloWorld/HelloWorld/HelloWorld-Prefix.pch
create mode 100644 HelloWorld/HelloWorld/ViewController.h
create mode 100644 HelloWorld/HelloWorld/ViewController.m
create mode 100644 HelloWorld/HelloWorld/en.lproj/InfoPlist.strings
create mode 100644 HelloWorld/HelloWorld/en.lproj/ViewController.xib
create mode 100644 HelloWorld/HelloWorld/main.m
然後就可以在Xcode中代碼這個工程了。我們修改並儲存檔案後,會看到在導航面板中檔案的後面有一個“M”表徵圖,這說明檔案修改了但沒有提交。
如 果只是想提交選中的檔案,可以是右鍵菜單Source Control→Commit Selected Files…,其中的Source Control菜單都是有關代碼控制的。如果想提交全部的修改檔案,可以菜單File→Source Control→Commit…。然後會彈出對話方塊。
其中有兩個代碼視窗,左邊是本地未提交版本,右邊是程式碼程式庫中的版本,這裡可以比較看看修改了哪些內容。在下面輸入框中添加註釋,點擊提交按鈕就可以提交了。
2、問題2
本地有程式碼程式庫提交推送給遠程伺服器程式碼程式庫,在Xcode中可以通過菜單File→Source Control→Push…進行推送,但是如果是第一次訪問,會出現對話方塊,沒有可以推送的遠程伺服器程式碼程式庫名。
我 們需要建立這個名字,在命令列中我們是通過$ git remote add hw git@192.168.1.108:myrepo建立的,其中hw就是這個名字。在Xcode中可以通過菜單Window → Organizer,選中Repositories→myrepo→Remotes,點擊左下角的“Add Remote”按鈕,彈出對話方塊,在Remote Name項目中輸入remote_repo,Location項目中輸入git@192.168.1.108:myrepo,完成之後點擊Create按 鈕建立這個名字。
建立完成再重新推送,如果彈出對話方塊,Push按鈕是可以點擊的,點擊Push按鈕推送。
3、問題3
這 個問題是從伺服器程式碼程式庫複製到本地,首先需要在Xcode中添加一個遠程程式碼程式庫,需要通過菜單Window → Organizer進入到Repositories畫面,點選左下角的“+”按鈕,選擇Add Repository,在Location項目中輸入git@192.168.1.108,Type項目選擇Git,Name項目會自動添加,如果 Authentication required為變為黃色小點,說明配置串連沒有問題,然後點擊Add按鈕建立。
如果建立成功,就會出現在左邊程式碼程式庫列表中,請選擇剛才建立的程式碼程式庫,然後選擇下面的Clone按鈕,並選擇本地儲存位置。
4、問題4
如果伺服器代碼有新的版本,擷取遠程程式碼程式庫資料到本地,可以通過菜單File→Source Control→Pull…。然後會彈出對話方塊。選擇Choose按鈕就可以擷取新的版本了。
如果這個過程中有衝突發生,會彈出對話方塊在兩個代碼視窗中可以看到它們的衝突點,
下面的4個按鈕,可以把衝突點進行合并,並進行編輯。如果沒有衝突,Pull是可以點擊,點擊Pull按鈕就可以了。