開發(fā)項目時會有一些文件一直自動更新但是不必提交的文件如版本管理文件,如果不忽略提交代碼時會遇到下方報錯。比如xcuserstate
文件,這個文件會實時更新不管有沒有更改過代碼等斩启,此文件保存的是項目的狀態(tài)之類的序调,不需要提交。
The working copy “項目名稱” has uncommitted changes.
Commit or discard the changes and try again.
此時需要配置git的.gitignore
文件忽略掉不需要提交的文件兔簇。
1. 設(shè)置項目中的.gitignore
文件发绢。
.gitignore
文件是隱藏文件需要顯示隱藏文件才能看到硬耍,終端執(zhí)行下方命令可以顯示隱藏文件。有沒有大神知道顯示隱藏文件的快捷鍵边酒。
defaults write com.apple.finder AppleShowAllFiles -boolean true ; killall Finder
創(chuàng)建.gitignore
文件经柴,首先進入到項目目錄下執(zhí)行下面終端命令
touch .gitignore
.gitignore
打開編輯忽略配置文件
open .gitignore
直接通過命令打開或者找到此文件直接雙擊打開用文本編輯器或者其他編輯器都可以,然后把下面代碼(需要忽略的文件)粘貼進去保存提交到遠端就OK了墩朦。以后提交就不會出現(xiàn)上面的問題口锭。
或者點擊 GitHub Objective-C.gitignore項目地址 objc-c項目在GitHub上.gitignore地址
# ---> Objective-C
# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
##file
*.app.dSYM.zip
.DS_Store
## Build generated
build/
DerivedData
## .DS_store
*.DS_Store
.DS_Store
.DS_Store?
*.swp
*.swo
## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
## Other
*.xccheckout
*.moved-aside
*.xcuserstate
*.xcscmblueprint
## Obj-C/Swift specific
*.hmap
*.ipa
# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
#Pods/
# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts
Carthage/Build
2. 在SourceTree中設(shè)置.gitignore
文件。
SourceTree的偏好設(shè)置里面有一個可以設(shè)置.gitignore
文件選項介杆,可以直接在里面設(shè)置忽略文件鹃操,優(yōu)點是只要是使用SourceTree提交代碼就可以自動忽略,不用每個項目在設(shè)置忽略文件春哨。
SourceTree
寫在最后
Git忽略規(guī)則(.gitignore配置)不生效原因和解決
- 第一種方法:
.gitignore中已經(jīng)標(biāo)明忽略的文件目錄下的文件荆隘,git push的時候還會出現(xiàn)在push的目錄中,或者用git status查看狀態(tài)赴背,想要忽略的文件還是顯示被追蹤狀態(tài)椰拒。
原因是因為在git忽略目錄中,新建的文件在git中會有緩存凰荚,如果某些文件已經(jīng)被納入了版本管理中燃观,就算是在.gitignore中已經(jīng)聲明了忽略路徑也是不起作用的,
這時候我們就應(yīng)該先把本地緩存刪除便瑟,然后再進行g(shù)it的提交缆毁,這樣就不會出現(xiàn)忽略的文件了。
解決方法: 進入項目對應(yīng)路徑清除git本地緩存(改變成未track狀態(tài))到涂,然后再提交:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
git push -u origin master
需要特別注意的是:
- gitignore只能忽略那些原來沒有被track的文件脊框,如果某些文件已經(jīng)被納入了版本管理中,則修改.gitignore是無效的践啄。
- 想要.gitignore起作用浇雹,必須要在這些文件不在暫存區(qū)中才可以,.gitignore文件只是忽略沒有被staged(cached)文件屿讽,
對于已經(jīng)被staged文件昭灵,加入ignore文件時一定要先從staged移除,才可以忽略伐谈。
- 第二種方法:(推薦)
在每個clone下來的倉庫中手動設(shè)置不要檢查特定文件的更改情況烂完。
git update-index --assume-unchanged PATH //在PATH處輸入要忽略的文件