iOS開(kāi)發(fā)版本控制--git使用

現(xiàn)在公司仍然用的是SVN,究其原因可能是領(lǐng)導(dǎo)層認(rèn)為SVN比較“安全”,因?yàn)椋o你一個(gè)內(nèi)網(wǎng)IP你在除了公司外的地方無(wú)法對(duì)項(xiàng)目作出人和修改。但是現(xiàn)在看好多公司都在用git,覺(jué)得這個(gè)git一定有它的過(guò)人之處怯疤,所以就來(lái)學(xué)習(xí)一下吧!
一催束、 安裝
我們用的都是Mac,所以可以直接通過(guò)homebrew安裝Git集峦,具體方法請(qǐng)參考homebrew的文檔:http://brew.sh/

 $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然后再檢查

 $ git version // 判斷是否安裝成功,查看版本號(hào)

然后抠刺,設(shè)置你的個(gè)人信息

 $ git config --global user.name "YourName"
 $ git config --global user.email "YourEmail"
  • 注意'git config'命令的'--global'參數(shù)塔淤,用了這個(gè)參數(shù),表示你這臺(tái)機(jī)器上所有的Git倉(cāng)庫(kù)都會(huì)使用這個(gè)配置速妖,當(dāng)然也可以對(duì)某個(gè)倉(cāng)庫(kù)指定不同的用戶名和Email地址凯沪。

二、基本使用
1买优、可以新建一個(gè)文件夾妨马,mkdir testGit, 然后cd testGit

 $ git init  // 創(chuàng)建倉(cāng)庫(kù)
    Initialized empty Git repository in /Users/testGit/.git/

2挺举、增加你需要改變的東西,放到testGit中去烘跺,添加到倉(cāng)庫(kù)中去

 $ git add .  // 注意 . 是增加所有的

3湘纵、提交到倉(cāng)庫(kù)中去 -m “這里面是需要注釋的內(nèi)容”

 $ git commit -m "first init "

4、接下來(lái)就是看滤淳,你的遠(yuǎn)程倉(cāng)庫(kù)建在什么地方啦梧喷,我在github 和 coding 上都有,個(gè)人認(rèn)為剛開(kāi)始在coding 上使用還是不錯(cuò)的

 $ git remote add origin git@coding.com....

假如此時(shí)遇到這個(gè)問(wèn)題脖咐,fatal: Authentication failed for铺敌,那么有可能是沒(méi)有添加ssh key導(dǎo)致的,具體可以參考這文章
Git SSH Key 生成步驟
5屁擅、把內(nèi)容推送到遠(yuǎn)程庫(kù)上

  $ git push -u origin master //由于遠(yuǎn)程庫(kù)是空的偿凭,我們第一次推送master分支時(shí),加上了-u參數(shù)派歌,Git不但會(huì)把本地的master分支內(nèi)容推送的遠(yuǎn)程新的master分支弯囊,還會(huì)把本地的master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來(lái),在以后的推送或者拉取時(shí)就可以簡(jiǎn)化命令
  $ git push  origin master  // 后期胶果,當(dāng)然在分支的情況匾嘱,另論

6、然后每次用之前

 $ git pull origin master // 每次使用之前最好刷新一下

實(shí)際上現(xiàn)在到目前為止就可以開(kāi)始用起來(lái)啦早抠,當(dāng)然分支管理這個(gè)大部分我們后期在討論霎烙。
常用的命令

 $ git status   // 查看每次變化的
 $ git  log  // 查看每次記錄的 
 $ git log --pretty=oneline // 查看記錄更清晰

 $ git clone git@github.com:****.git  // 從遠(yuǎn)程倉(cāng)庫(kù)克隆,常用

7蕊连、建立分支并切換

  $ git  branch  分支名字  // 建立分支
  $ git checkout 分支名字  // 切換到分支

  $ git branch // 查看分支

8吼过、合并分支

  //先切換主支
 $ git checkout master
 $ git merge --no-ff  分支名字

三、理解

工作區(qū)-----倉(cāng)庫(kù)----遠(yuǎn)程倉(cāng)庫(kù)(git add; git commit ; git push )

1.png
2.png

四咪奖、常見(jiàn)問(wèn)題(陸續(xù)增加中···)

1(問(wèn))、合并的時(shí)候遇到的沖突

error: There was a problem with the editor 'vi'.
Not committing merge; use 'git commit' to complete the merge.
E325: ATTENTION
Found a swap file by the name ".git/.MERGE_MSG.swp"
owned by: eladb dated: Tue Aug 20 10:52:03 2013
file name: ~eladb/MyWorkspace/Client/.git/MERGE_MSG
modified: no
user name: eladb host name: Elads-MacBook-Pro-2.local
process ID: 29959 (still running)
While opening file ".git/MERGE_MSG"
dated: Tue Aug 20 10:53:11 2013
NEWER than swap file!
(1) Another program may be editing the same file.
If this is the case, be careful not to end up with two
different instances of the same file when making changes.
Quit, or continue with caution.
(2) An edit session for this file crashed.
If this is the case, use ":recover" or "vim -r .git/MERGE_MSG"
to recover the changes (see ":help recovery").
If you did this already, delete the swap file ".git/.MERGE_MSG.swp"
to avoid this message.
Swap file ".git/.MERGE_MSG.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)born:

1(答)解決方法:

找到".git/.MERGE_MSG.swp"酱床,之后刪除即可羊赵,然后重新git add .;
git commit -m "";git push master 之后,再執(zhí)行 git merge branchName 就好啦

2 (問(wèn)) git push 出現(xiàn)的警告問(wèn)題

warning: push.default is unset; its implicit value has changed in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the traditional behavior,use:
git config --global push.default matching
To squelch this message and adopt the new behavior now, use:
git config --global push.default simple
When push.default is set to 'matching', git will push local branches
to the remote branches that already exist with the same name.

(答)解決:

git config --global push.default matching或者git config --global push.default simple命令扇谣,以后再push就不會(huì)有警告了昧捷。
下面說(shuō)一下push.default matching和push.default simple的區(qū)別:
push.default設(shè)置maching的意思是:git push 會(huì)把你本地所有分支push到名稱相對(duì)應(yīng)的遠(yuǎn)程主機(jī)上。這意味著可能你會(huì)在不經(jīng)意間push一些你原本沒(méi)打算push的分支罐寨。
push.default設(shè)置成simple的意思是:git push僅僅把當(dāng)前所在分支push到從當(dāng)初git pull pull下來(lái)的那個(gè)對(duì)應(yīng)分支上靡挥,另外,這個(gè)過(guò)程也會(huì)同時(shí)檢查各個(gè)分支的名稱是否相對(duì)應(yīng)鸯绿。
平常最好用 $ git push origin BRANCH #BRANCH是你遠(yuǎn)程分支的名字

相應(yīng)的 git pull

  git pull origin BRANCH #BRANCH是你遠(yuǎn)程分支的名字

3 (問(wèn)) git merge 合并時(shí)遇到的沖突, Automatic merge failed; fix conflicts and then commit the result

$ git merge secondDev
Auto-merging myTest.txt
CONFLICT (content): Merge conflict in myTest.txt
Automatic merge failed; fix conflicts and then commit the result.

自動(dòng)合并失敗跋破。由于在同一行進(jìn)行了修改簸淀,所以產(chǎn)生了沖突。

在沖突處

add 把變更錄入到索引中
commit 記錄索引的狀態(tài)
pull 取得遠(yuǎn)端數(shù)據(jù)庫(kù)的內(nèi)容

然后重新提交

$ git add myTest.txt
$ git commit -m "合并secondDev分支"
# On branch master
nothing to commit (working directory clean)

五毒返、一張很好用git 的圖

G.png

參考鏈接(安裝中配置和使用的基本)

1租幕、基本的安裝及配置
2、詳細(xì)的講解和說(shuō)明??
3拧簸、git的使用規(guī)范
4劲绪、git的簡(jiǎn)單使用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市盆赤,隨后出現(xiàn)的幾起案子贾富,更是在濱河造成了極大的恐慌,老刑警劉巖牺六,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颤枪,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡兔乞,警方通過(guò)查閱死者的電腦和手機(jī)汇鞭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)庸追,“玉大人霍骄,你說(shuō)我怎么就攤上這事〉荩” “怎么了读整?”我有些...
    開(kāi)封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)咱娶。 經(jīng)常有香客問(wèn)我米间,道長(zhǎng),這世上最難降的妖魔是什么膘侮? 我笑而不...
    開(kāi)封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任屈糊,我火速辦了婚禮,結(jié)果婚禮上琼了,老公的妹妹穿的比我還像新娘逻锐。我一直安慰自己,他們只是感情好雕薪,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布昧诱。 她就那樣靜靜地躺著,像睡著了一般所袁。 火紅的嫁衣襯著肌膚如雪盏档。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天燥爷,我揣著相機(jī)與錄音蜈亩,去河邊找鬼懦窘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛勺拣,可吹牛的內(nèi)容都是我干的奶赠。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼药有,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼毅戈!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起愤惰,我...
    開(kāi)封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤苇经,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后宦言,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體扇单,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年奠旺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蜘澜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡响疚,死狀恐怖鄙信,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情忿晕,我是刑警寧澤装诡,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站践盼,受9級(jí)特大地震影響鸦采,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜咕幻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一渔伯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肄程,春花似錦锣吼、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鲜侥。三九已至褂始,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間描函,已是汗流浹背崎苗。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工狐粱, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人胆数。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓肌蜻,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親必尼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蒋搜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容