물리 모델링 설계까지 끝났으니 이제 깃을 셋팅할 차례다.
우리 팀은 메인 사이트와 어드민, 총 두 개의 프로젝트를 각각 레포에 관리할 것이라서 organization을 생성했다.
인텔리제이와 Git을 같이 연동하는 것은 처음이라 삽질을 많이 했다.
initial commit용 프로젝트를 내가 만들었는데, 패키지명과 war 파일 이름이 내 기준이라서 팀명으로 변경했다.
에러 참고 사이트 (이름이 달라서 war파일이 실행이 안돼서 프로젝트 기동 실패)
https://m.blog.naver.com/PostView.naver?
isHttpsRedirect=true&blogId=visioner7&logNo=220915191233
깃 연동은 https://brunch.co.kr/@mystoryg/168를 참고했다. 정리를 잘했고, 따라하기 쉬웠다.
git에 unversioned files는 스테이지에 올라가지 않은 변경된 파일들이다. 백날 인텔리제이에서 커밋 버튼 눌러서 안되니까 터미널로 가서 git add . 해주면 간단하다.
인텔리제이 경고창 뜰 때
경고: you are about to commit CRLF line separators to the Git Repository.
commit as is 버튼을 선택하라고 한다. (개행 처리 관련 이슈다)
처음에 잘못 올려서 레포를 몇 번이고 밀어버리기도 했고, 깃을 지웠다 다시 하기도 했다.
로컬 깃을 잘못 해서 다시 하고 싶으면 어떻게 해야 할까?
rm -rf .git
git init
rm -rf .git는 해당 프로젝트의 .git 폴더를 삭제한다.
git init은 git을 초기화한다.
로컬 git을 다시 하고 싶으면 rm rf .git을 하고 git init하는게 좋다.
git init만 아무리 해도 해결되지 않았다.
프로젝트를 하면서 gitignore가 신경이 많이 쓰였다.
위 두 가지 외에도 .classpath, .settings~ 등등의 파일들도 gitignore에 올렸었는데
팀원들이 clone을 받았는데 프로젝트 시작이 안되는 이슈가 있었다. 이유를 정확히 파악 못해서 아까웠지만, 더 프로젝트를 미룰 수 없어서 일단 최소한의 파일을 제외하고 git에 다 올렸다.
gitignore 파일 내용
# Project exclude paths
### Maven ###
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
.mvn/wrapper/maven-wrapper.jar
/target
/.idea
*.iml
/src/main/webapp/WEB-INF/spring/root-context.xml
root-context.xml 파일을 왜 git에서 제외했냐면,
각자 디비 커넥션을 맺는 root 계정 비밀번호 등을 다르게 설정하기 때문이고,
확실치 않지만 디비 계정 정보를 노출하면 위험하지 않을까 하는 추측도 했다.
더 복잡하게 파고들어 설정할 수도 있겠지만, 시간 부족으로 그만했다.
했던 고민들 (근데 그닥 오래 하지 못했다.)
git ignore해야 할 파일들
재빌드하면 생기는 것들은 전부. + .classpath 이런 것들
보니까 git ignore 패턴을 만들어야 하는 것 같다.
https://rwd337.tistory.com/179
폴더의 경우
1. gitignore하고 싶은 파일들을 zip한다 (zip빼고 다 지운다)
2. 1로 인한 변경사항들을 다시 커밋푸시한다.
3. 1에서 했던 zip을 다시 푼다 (zip폴더들 삭제)
4. gitignore에 1에서 zip했던 파일들 경로를 적어준다.
5. 앞으로 커밋푸시할 때 gitignore에 설정한 파일들은 다시 안 올라갈 것이다.
파일의 경우(root-context.xml)
1. 파일을 다른 폴더로 잠깐 이동한다.
2. 1로 인한 변경사항을 커밋푸시한다.
3. gitignore에 1 파일 경로를 적어놓는다.
4. 다시 파일 위치를 원상복구한다.
5. 앞으로 커밋푸시할 때 root-context.xml은 안 올라갈 것이다.
어려웠던 점은 팀원들 git clone해주는 것이었다.
일단 먼저 github 계정 연동해두면 편하다. 초대된 organization의 repository 클릭하고 clone 버튼 누르면 된다.
그리고 root-context.xml을 새로 추가한다. spring 바로 안에 추가한다. (appServlet 안에 넣는 실수를 하지 말자.)
그 외에도 프로젝트 war파일 설정이나 루트 경로 설정은 스프링의 정석 강의와 학원에서 배운 것들을 적어놓았다가 셋팅에 참고했다. 체크리스트를 만들어 두면 막막함이 없다.
내 파트는 나만 작업을 할 것이고 다른 사람이 jin_user에서 git을 조작하지 않을 것이라서,
여기서 다 작업하기로 했다. 전 회사에서 develop에서 브랜치 만들어야 하는데 실수했던 거 생각났다;;
브랜치 생성 참고 사이트 (로컬 브랜치, 원격 브랜치 생성하는 법)
https://trustyoo86.github.io/git/2017/11/28/git-remote-branch-create.html
마지막으로 권한, use token 이슈가 있었다.
원격 git pull이 403 에러 뜨면서 안된다. 바로 개인 github 토큰을 생성해보자.
github에서 settings > developer settings > Personal Access tokens > classic 붙은 토큰 만들기를 클릭한다.
가장 중요: github에서 토큰 생성하는데 repo section은 올체크를 해야 한다.
발급받은 토큰을 복사해서 git pull할 때 비밀번호 대신 입력한다. (github 계정의 비번을 입력하는 게 아니다.)
참 신기하게도, 다 끝내고 정리하다 보면 거창하지도 않은데 막상 할 때는 어쩔 줄 몰라서 버벅인다는 점이다.
다음에는 아마 머지 관련해서 생긴 이슈들을 올릴 거 같다. 일정이 정말 타이트하니 더 신속하게 하자.