微博項目使用github管理,將項目文件推送到github以方便管理,研究git
說明:按照如下的第1、九步驟便可推送到遠程倉庫。先在本地初始化創建git跟蹤目錄,而後推送到遠程代碼庫https://github.com/xxx/xxx.git便可。github
##1、建立一個本地代碼庫服務器
一、咱們首先須要告訴Git這個文件夾是咱們須要跟蹤的項目。因此咱們發送這個命令來初始化一個新的本地Git代碼庫,切換到本地項目目錄下(本地項目名爲ItcastWeibo-v10)併發
cd /Users/mac/Documents/學習區/IOS代碼/ItcastWeibo-v10
二、git init 初始化 Git會在ItcastWeibo-v10文件夾內建立一個名爲.git的隱藏文件夾,那就是你的本地代碼庫dom
git init
##2、加載(Stage)文件學習
咱們如今須要命令Git咱們須要加載(stage)全部項目文件。發送:code
git add .
最後的「.」符號的意思是「全部文件、文件夾和子文件夾」。假如咱們只想要把特定文件添加到源代碼控制中去,咱們能夠指定它們: git add my_file, my_other_file圖片
##3、提交文件開發
如今,咱們想要提交已加載(staged)的文件。閱讀「添加一個時間點,在這裏你的文件處在一個可還原的狀態」。咱們提交咱們的文件時,老是附帶着有意義的註釋,描述了它們如今的狀態。我一直用「initial commit」來做爲第一個提交的註釋。rem
git commit -m "initial commit"
就這樣。如今你隨時均可以回滾到這個提交狀態。若是你有須要檢查你如今的已加載(staged)和未加載(unstaged)文件的狀態、提交等,你能夠詢問git的狀態:
git status
##4、建立分支
創建分支是你建立代碼的獨立版本的動做,獨立於你的主幹分支。默認地,每次你提交到Git的文件都會被儲存到「master(主幹)」分支。 如今咱們來講說,你想要向項目裏添加一個功能,但你想要可以回滾到如今版本,以防出現差錯,或者你決定要放棄這個功能。這就是你建立分支的時候了。建立並同時切換到你新建的分支,發送:
git checkout -b new_feature
或者,你能夠先建立一個分支而後手動切換,就像這樣:
git branch new_featuregit checkout new_feature
要看你如今項目下全部的分支,發送這個:
git branch
如今你能夠在你的項目上無所顧忌地作任何你想作的:任什麼時候候,你均可以回到你建立分支前的狀態。注意,你同時能夠有多個分支,甚至能夠從一個分支上再建立一個分支。
##5、合併分支
當你對你的新功能滿意了的時候,你想要把它加到主幹分支上。當你在你的新功能分支上時,你首先須要加載(stage)而且提交你的文件:
git add .git commit -m "adds my new feature"
而後你移到你的主幹分支:
git checkout master
像這樣合併:
git merge new_feature
此時,你的主幹分支和你的新功能分支會變成同樣的了。
##6、丟棄分支
相反,若是你打算丟棄你在分支裏作的修改,你首先須要加載(stage)你的文件而且在分支裏提交:
git add .git commit -m "feature to be discarded"
而後,你移到主幹分支:
git checkout master
如今,你的代碼處於你建立分支以前的狀態了。
##7、刪除一個分支
若是你要把你的分支合併到主幹分支,從主幹(master)分支上發送:
git branch -d new_feature
假如修改已經合併了,它只會刪除分支。假如分支沒有合併,你會獲得一個錯誤信息。刪除一個未合併的分支(一般你不想保留的修改),你須要發送同樣的命令附帶一個大寫D。意思是「強制刪除分支,不管如何我不想要它了。」:
git branch -D new_feature
##8、回滾到以前的提交狀態
在某些時候,你可能想要回到以前的代碼版本。首先,你須要找到你想回到哪一個版本。要看全部的完成了的提交,發送:
git log
這會輸出你的提交的歷史記錄,像這樣:
commit ca82a6dff817ec66f44342007202690a93763949Author: your_username
your_email@domain.comDate: Mon Nov 4 12:52:11 2013 -0700 changes the frontpage layout commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7Author: your_username your_email@domain.comDate: Mon Nov 4 11:40:33 2013 -0700 adds my new feature commit a11bef06a3f659402fe7563abf99ad00de2209e6Author: your_username your_email@domain.comDate: Mon Nov 4 10:37:28 2013 -0700 initial commit 若是你想回到「adds my new feature」這個提交,簡單地用提交的ID作簽出(checkout)(我一般只用到ID開頭的9個字符)
git checkout 085bb3bcb
你也能夠簽出到一個新的分支,像這樣:
git checkout -b my_previous_version 085bb3bcb
只是別太瘋狂了!你的分支越複雜,就越難肯定你真正在作什麼。
##9、推送到遠程代碼庫
**在第一次你想推送一個本地代碼庫到遠程代碼庫時,你須要把它添加到你的項目配置裏。**像這樣作:
git remote add origin https://your_username@bitbucket.org/your_username/name_of_remote_repository.git
注意這裏的「origin」只是一個習慣。它是你的遠程代碼庫的別名,可是你能夠用其餘任何你喜歡的詞。你甚至能夠有多個遠程代碼庫,你只須要給它們起不一樣的別名。 以後,你想要推送你的本地代碼庫的主幹分支到你的遠程代碼庫:
git push origin master
若是你使用Bitbucket,在這時,你會被請求輸入你的密碼。照作,你的本地代碼庫會被推送到你的遠程代碼庫上。
取得遠程代碼庫的一份本地拷貝
若是你尚未一份遠程代碼庫的本地版本(例如,若是你在另外一臺機器上開始工做,這臺機器上尚未用過這個項目),你首先須要拷貝(clone)它。去到你的代碼庫想要拷貝到的文件夾下,併發送: git clone https://your_username@bitbucket.org/your_username/name_of_remote_repository.git 另外一方面,若是你已經在本地的項目上工做了,只是想從遠程代碼庫上取得它最新的版本,移動到項目的根目錄下,併發送:
git pull origin master
##10、別名
Git容許你爲你經常使用的命令建立快捷方式(別名)。例如,若是你不想每次都輸入git commit -m 「some comment」,而是輸入git c 「some comment」,你能夠向你的git全局配置裏添加一個別名來實現,像這樣:
git config --global alias.c 'commit -m'
這是我使用的別名列表: git config --global alias.c 'commit -m' git config --global alias.co 'checkout' git config --global alias.cob 'checkout -b' git config --global alias.br 'branch' git config --global alias.m 'merge' git config --global alias.a 'add .' git config --global alias.s 'status' git config --global alias.dbr 'branch -d'
咱們能夠在Xcode-》preference中添加我的倉庫repository,之後就能夠用Xcode來push更新的項目了,而不須要在客戶端使用命令來提交,大大提升了開發效率。
##11、處理服務器端和本地代碼衝突 如題,當咱們github中的代碼有改動時,這時若是本地的代碼須要推送到github倉庫時就會報錯,由於github倉庫中的版本比本地的新,因此這時須要先在本地pull倉庫中的代碼到本地,獲取到最新的版本以後,再推送到遠程倉庫中。
git命令
MacdeMacBook-Pro-3:~ mac$ cd /Users/mac/Documents/學習區/IOS代碼/ItcastWeibo-v10 MacdeMacBook-Pro-3:ItcastWeibo-v10 mac$ git pull origin master remote: Counting objects: 6, done. remote: Compressing objects: 100% (6/6), done. remote: Total 6 (delta 3), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (6/6), done. From https://github.com/corwien/SinaWeibo * branch master -> FETCH_HEAD 34ef98b..d408ada master -> origin/master Merge made by the 'recursive' strategy. README.md | 2 ++ 1 file changed, 2 insertions(+) MacdeMacBook-Pro-3:ItcastWeibo-v10 mac$
請看個人我的微博:Corwien我的博客