[iOS | Git] gitignore 어떻게 만드나요..?

Minji Kim·2022년 1월 31일
3
post-thumbnail
post-custom-banner

프로젝트를 GitHub에 커밋할 때 Google API Key와 같이 숨기고 싶은 내용은 gitignore에 담아서 올리면 된다. 그렇다면 iOS 개발자가 gitignore를 생성해서 커밋하는 방법에 대해서 알아보자.

1. gitignore 파일 만들기

제일 먼저 .gitignore 파일을 만들어줘야 하는데 방법은 매우 간단하다. 우선, 해당 프로젝트 경로의 터미널을 열어준다.

터미널에서 sudo touch .gitignore 명령어를 입력하면 비밀번호를 입력하라고 하는데 컴퓨터 비밀번호를 입력한다.

그러면 해당 폴더 안에 .gitignore 파일이 생성된다. 만약 폴더에 들어갔는데 .gitignore 파일이 보이지 않는다면 shift + command + . 으로 숨겨진 파일을 보이게 하면 나타난다.

2. gitignore 작성하기

.gitignore 파일을 만들었으니 이제 내용을 작성하자.

⚠️ 그 전에! 쓰기 권한 오류 발생 시
만약에 .gitignore 파일에 내용을 작성하려는데 아래와 같은 창이 나타나면 다음 방법을 차례대로 따라하면 된다.

1. .gitignore 파일 우클릭 -> 정보 가져오기

2. 공유 및 사용 권한에서 오른쪽 아래 자물쇠 풀기 -> 왼쪽 아래 + 클릭

3. 본인 선택

4. 본인의 권한을 읽기 및 쓰기로 설정

제외할 파일 직접 언급하기

예를 들어, Info.plist에 Google API Key 처럼 숨기고 싶은 내용이 있다면 .gitignore 파일에 해당 파일명을 적으면 된다.

# file: .gitignore
Info.plist

GitHub 참고하기

gitignore/Swift.gitignore at main - GitHub에 Swift를 위한 gitignore가 있으니 이것을 그대로 .gitignore 파일에 붙여 넣는다. 그러면 굳이 안 올려도 되는 파일들을 알아서 숨겨준다.

# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore

## User settings
xcuserdata/

## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
*.xcscmblueprint
*.xccheckout

## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)
build/
DerivedData/
*.moved-aside
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3

## Obj-C/Swift specific
*.hmap

## App packaging
*.ipa
*.dSYM.zip
*.dSYM

## Playgrounds
timeline.xctimeline
playground.xcworkspace

# Swift Package Manager
#
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
# Packages/
# Package.pins
# Package.resolved
# *.xcodeproj
#
# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata
# hence it is not needed unless you have added a package configuration file to your project
# .swiftpm

.build/

# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
# Pods/
#
# Add this line if you want to avoid checking in source code from the Xcode workspace
# *.xcworkspace

# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts

Carthage/Build/

# Accio dependency management
Dependencies/
.accio/

# fastlane
#
# It is recommended to not store the screenshots in the git repo.
# Instead, use fastlane to re-generate the screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/#source-control

fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots/**/*.png
fastlane/test_output

# Code Injection
#
# After new code Injection tools there's a generated folder /iOSInjectionProject
# https://github.com/johnno1962/injectionforxcode

iOSInjectionProject/

gitignore.io 사이트 이용하기

gitignore.io 사이트에서 입력한 키워드에 맞게 gitignore를 작성할 수 있다.

예를 들어, Swift, Xcode, CocoaPods를 입력하면 gitignore가 작성되는데 이를 그대로 .gitignore 파일에 붙여 넣으면 된다.


# Created by https://www.toptal.com/developers/gitignore/api/swift,xcode,cocoapods
# Edit at https://www.toptal.com/developers/gitignore?templates=swift,xcode,cocoapods

### CocoaPods ###
## CocoaPods GitIgnore Template

# CocoaPods - Only use to conserve bandwidth / Save time on Pushing
#           - Also handy if you have a large number of dependant pods
#           - AS PER https://guides.cocoapods.org/using/using-cocoapods.html NEVER IGNORE THE LOCK FILE
Pods/

### Swift ###
# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore

## User settings
xcuserdata/

## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
*.xcscmblueprint
*.xccheckout

## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)
build/
DerivedData/
*.moved-aside
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3

## Obj-C/Swift specific
*.hmap

## App packaging
*.ipa
*.dSYM.zip
*.dSYM

## Playgrounds
timeline.xctimeline
playground.xcworkspace

# Swift Package Manager
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
# Packages/
# Package.pins
# Package.resolved
# *.xcodeproj
# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata
# hence it is not needed unless you have added a package configuration file to your project
# .swiftpm

.build/

# CocoaPods
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
# Pods/
# Add this line if you want to avoid checking in source code from the Xcode workspace
# *.xcworkspace

# Carthage
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts

Carthage/Build/

# Accio dependency management
Dependencies/
.accio/

# fastlane
# It is recommended to not store the screenshots in the git repo.
# Instead, use fastlane to re-generate the screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/#source-control

fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots/**/*.png
fastlane/test_output

# Code Injection
# After new code Injection tools there's a generated folder /iOSInjectionProject
# https://github.com/johnno1962/injectionforxcode

iOSInjectionProject/

### Xcode ###

## Xcode 8 and earlier

### Xcode Patch ###
*.xcodeproj/*
!*.xcodeproj/project.pbxproj
!*.xcodeproj/xcshareddata/
!*.xcworkspace/contents.xcworkspacedata
/*.gcno
**/xcshareddata/WorkspaceSettings.xcsettings

# End of https://www.toptal.com/developers/gitignore/api/swift,xcode,cocoapods

3. gitignore 적용하기

레포지터리에 .gitignore를 적용할 건데, 이때 두 가지 경우로 나눌 것이다.

1) 이전 작업에도 gitignore를 적용하고 싶을 때
2) 아직 아무런 커밋을 하지 않았거나 이전 작업에는 gitignore를 적용하지 않아도 될 때

1) 의 경우에는

sudo git rm -r --cached .		// 깃 트랙킹 풀기
sudo git add .				// 커밋 대상 설정
sudo git commit -m ".gitignore 생성"	// 커밋
sudo git push origin main		// 푸시

2) 의 경우에는

sudo git commit -m ".gitignore 생성"	// 커밋
sudo git push origin main		// 푸시

결과

  • .gitignore 커밋 전
  • .gitignore 커밋 후

필자는 .gitignore 파일에 Info.plist와 GitHub에서 제공한 Swift gitignore을 붙여 넣었다.

GitHub에서 변경된 내용을 확인해 보니 이렇게 Info.plist의 내용이 안 보인다.

그리고 프로젝트 안에서도 Info.plist를 찾아볼 수 없다. gitignore가 잘 적용되었다.

gitignore에 대해서 알고 있었지만 MacOS에서 다루는 방법을 몰랐다. 그래서 중요한 값이 포함된 프로젝트는 모두 Private으로 올렸는데 이제는 gitignore로 숨기고 Public으로 올리면 되겠다!

gitignore는 프로젝트 만들고 아예 처음부터 설정해야 적용된다는 글을 봐서 걱정만 앞서고 계속 미루다가 이제야 해봤는데 아니었다.. 커밋 엄청 많이 하다가 중간에 적용해 봤는데 잘 된다..!😗


+ .gitignore 적용 안 될 때

이렇게 하면 잘 적용된다.

git rm -r --cached .
git add .
git commit -m ".gitignore 적용"

💙 참고한 블로그 💙

https://seolhee2750.tistory.com/68
https://webstudynote.tistory.com/114

profile
iOS Developer
post-custom-banner

0개의 댓글