我的Git之旅以及感悟

楔子

前一段時間公司的源代碼管理從SVN過渡到了Git。其實在大三的時候,老師就叫我們學過Git,但是那個時候也只是漫無目的的在網(wǎng)上找一些關(guān)于Git的教程來看,不過大都沒看出個所以然來。
自從實習這五個月以來,我真正體會到了一個道理:學習東西最快的方式就是實踐它。以前我學習一個東西總是從基本概念起,要完完全全搞懂它的每一個知識點。那樣我才認為是自己學會了。但現(xiàn)在回過頭想一想,其實這樣是最慢的方式。身邊那一些學習比較快的同事和同學們,他們都是立即去實踐,然后就懂了。
其實我也是在公司必須用Git的時候才感覺一下子明白了好多以前看的概念。所以,如果正在看這篇文章的你也還不太懂什么是Git的話,別再一遍又一遍的看概念了,Just do it!

SVN之旅

6月份到公司的時候,公司項目還是在用SVN進行源代碼管理。我們iOS項目使用的是MAC下一個比較好用的SVN客戶端:Cornerstone

界面美觀又好用,現(xiàn)在不用了還真有點懷念呢。不過是收費軟件,網(wǎng)上可以找到破解的。

Git之旅

Git我使用的是SourceTree客戶端。

這個軟件有中文版,也非常好用,支持Windows和Mac雙平臺。而且是免費的,不要猶豫,馬上下載下來使用吧。
代碼托管平臺除了最強大的GitHub外,我們國內(nèi)也還有一些第三方Git平臺,比如Coding,碼云等等,結(jié)合這些網(wǎng)站配上SourceTree創(chuàng)建你的第一個Git項目吧,然后慢慢練習。
基礎(chǔ)教程我就不寫了,這篇文章只記錄我在使用Git過程中遇到的問題以及解決辦法。但是可以給大家推薦一些我看過的比較好的教程。(但千萬不要奢求你能全部看懂,最好是看個大概,用一段時間后再回過頭來看)

Git之旅,現(xiàn)在開始:

可以忽略的文件:

  • xcuserdata文件夾下的所有文件,這些文件都是Xcode記錄的你的一些操作數(shù)據(jù),無需上傳到git分享給同事
  • 不可以忽略的文件:
  • project.pbxproj這個文件是記錄的項目的目錄結(jié)構(gòu),當你新增,刪除了文件甚至是拖動了某一文件的順序這個文件都會改變
  • 當有一些文件無法忽略的時候:
    使用SourceTree的時候會出現(xiàn)有的文件無法點擊忽略(忽略二字是灰色的,不可點擊)這是因為Git服務器上已經(jīng)有這個文件了,你不能忽略它。如果你還是想忽略它,可以在項目中找到這個文件,把它刪除掉,再重新commit一次,commit后這個文件就可以點擊忽略了。
    如果你曾經(jīng)上傳過.DS_Store文件到Git上,現(xiàn)在想要忽略它,你就必須先刪除.DS_Store文件。(.DS_Store是隱藏文件,它主要存儲一些文件屬性。不需要上傳到Git)
    刪除.DS_Store文件方法:
    執(zhí)行命令:
sudo find / -name “.DS_Store” -depth -exec rm {} \;

Git使用原則:

一般的小項目的原則是至少要有兩個分支

  • dev分支:平時開發(fā)的修改都提交到這個分支
  • master分支:始終保持一個可以運行的穩(wěn)定正式版,當發(fā)布新版本時才把dev分支合并到master分支

dev分支如何合并到master分支:

先檢出(checkout)到master分支,再點擊合并(merge),選擇分支為dev分支
(檢出到某分支其實就是選中某分支進行操作的意思)

git checkout master
git merge dev

Git中如何實現(xiàn)遠程倉庫回滾:

  • 先checkout到本地的對應分支
  • git reset --hard HEAD^本地分支reset到上一個版本(HEAD^可以換為commit ID)
  • git push origin dev -f將本地分支push到遠程分支(因為本地版本低于遠程版本,所以必須加上-f強制push)
    注意:必須擁有管理員權(quán)限才能強制推送受保護的分支(如master分支)

解決Push時的代碼沖突

當甲乙都修改了同一份文件,甲push了,乙pull的時候就會報錯:

error: Your local changes to the following files would be overwritten by merge: xxx/xxx/xxx.m 
Please, commit your changes or stash them before you can merge.Aborting

解決辦法:

  • 笨辦法:檢查報錯的那個具體文件,將自己修改的部分記下來備份到一邊,再reset該文件,重新pull,再將自己的修改添加到該文件上,重新push,搞定?。ㄌ热裟阆敕艞壞愕男薷模梢灾苯觬eset該文件,然后pull)
  • 正確辦法:命令行執(zhí)行
git stash  //暫存自己的修改在Git棧
git pull  //拉取遠端
git stash pop  //從Git棧中恢復自己的修改

到此,解決沖突。如果仍未解決,可能是你們修改了同一個文件的同一個地方,這就必須手動解決這部分沖突了。
附送:

git stash list 查看所有暫存
git stash clear 清楚所有暫存

持續(xù)更新

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,719評論 9 163
  • 今天和Q微信視頻,跟我哭訴著說她跟男朋友吵架了。她跟她男友一天到晚就喜歡兩天吵架三天恩愛,簡直把吵架當情趣。調(diào)侃了...
    HelenLau閱讀 223評論 0 0
  • ??小編認識一位阿姨,她曾經(jīng)患上過非常嚴重的失眠,幾乎每晚都徹夜難眠,輾轉(zhuǎn)反側(cè)。大家都問她為什么這么心事重重,她只...
    海月中天閱讀 344評論 1 0
  • 昨天下午我很榮幸的做了一次守護上學路的志愿者。 在兒子上小學之前,我每天是沒有注意到學校路口的那些家長志愿者的。學...
    不猛不瘋閱讀 389評論 0 1