[Git] git config 활용

Git을 사용함에 있어서 gitconfig는 유용한 설정을 여러 저장소에 동일하게 적용할 수 있는 기능을 제공한다.
config에 여러 설정을 할 수 있고, 또 대부분의 메뉴얼을 보면 global config로 username과 email등을 설정하도록 가이드하고 있다.

iOS 프로젝트에서 오픈소스 라이브러리 의존성을 주입하는 방법으로 pod을 사용할 때,
{lib_name}.podspec 형태를 통해 메타를 관리하게 되는데 여기에서 저장소를 표현하는 방법은 크게 https와 ssh 일것이다.
대부분의 오픈소스의 경우 github을 경유하기 때문에 https 로 인증절차 없이 pull이 가능하지만, 일부 private repo의 경우에는 ssh를 사용할 수 있다.
이런 경우에 https와 ssh가 혼재되어 pod install을 할 때 특정 저장소의 인증을 요구하게 되는 경우가 있다.

이런 상황에서 이전 포스트였던 ssh 를 사용하게 되면 인증절차를 무시할 수 있지만, 문제는 podspec에서 https로 기술된 경우에는 인증 절차를 별도로 거쳐야 한다.
이 때, .gitconfig 에서 특정 설정을 해주게 되면 이 문제를 해결할 수 있다.
설정은 아래와 같다.

// for mac, /Users/{your_name}/.gitconfig

[url "{target}"]
    insteadOf = {origin}


// example
[url "git@github.com:fastlane"]
    insteadOf = https://github.com/fastlane

{target} 부분에는 변경할 url 혹은 패턴을, {origin} 에는 변경해야할 url 혹은 패턴을 지정해주면 된다.
예시에서는 github의 fastlane 아래에 있는 모든 url을 https 에서 ssh 형태로 변경한 경우이다.
이렇게 설정을 지정해 주면, git clone/pull/push 등의 모든 작업을 할 때 https로 기술된 fastlane 아래의 저장소에 대해서 ssh로 접근할 수 있다.