태그 보관물: git

Firewall 바깥의 git을 clone하기

Firewall등이 막고 있어서 외부의 git repository를 HTTPS로는 clone할 수 있지만 SSH로는 막히는 경우가 있다. 특히나 GitHub의 two-factor authentication을 설정한 경우라면 매번 token값을 입력하는 것 때문에 commit을 push하는게 매우 귀찮아진다.

이 문제는 ssh config file에 Proxy command를 설정해서 해결할 수 있는데
${HOME}/.ssh/config에 다음과 같이 추가해 주고, credential caching을 설정해 준다. (-S option에는 SOCKS port를 설정해야 함)

Host GitHub.com
  HostName github.com
  User git
  Port 22
  PorxyCommand connect-proxy -S {proxy-server}:{socks-port} %h %p

[Tip] Git:삭제한 file들 한번에 정리하기

Git repository에서 많은 파일들을 삭제하고 적용하는 경우, git rm 명령어로 파일이름들을 하나하나 입력해 주는것은 무척 귀찮다. 예전에는 세로 편집이 되는 Ultra-edit 같은 utility로 삭제된 목록을 복사한 다음 git rm 명령어 line으로 편집해서 다시 terminal에 붙여 넣는 삽질을 했었다.

Git-ls-files command를 쓰면 더 이상 그럴 필요가 없다. 이 command는 repository의 file들을 지정한 상태별로 알려준다. 예를들어, 삭제된 file의 목록을 보려면 다음과 같이 하면 된다.

git ls-files --deleted

이렇게 얻어진 목록을 git rm command에 넘겨도 대부분의 경우 동작하겠지만, 파일 이름에 공백문자를 포함하는 경우에는 제대로 동작하지 않는다. 공백문자에 대해서도 제대로 동작하도록 sed로 공백문자 앞에 ‘\’를 삽입하려면 다음과 같이 한다.

git ls-files --delete|sed 's/ /\\ /g'|xargs git rm