내 프로젝트의 수정사항이 생겼을 때 push 하는 방법은 다음과 같다.
🔖 Git Branch 생성 후 push 하기
- git branch 브랜치명
- git checkout 브랜치명
- git status로 변경사항 확인
- git add . (수정 사항 전체 add)
- git commit -m “메세지”
- git log로 커밋 확인
- git push origin 브랜치명
- 코드 업로드 및 pull request 생성
- github에서 rebase&merge / merge
- 로컬에도 반영 : git pull origin main
원격 브랜치 확인
- 원격 브랜치 확인 : git branch -r
- 원격에 있는 브랜치로 변경 : git checkout -t origin/브랜치명
⚠️ 문제 발생
단순하게 위의 방식으로 작업을 진행중에 문제가 발생했다.
- 브랜치로 푸시 후 pull request 생성 안됨
- 충돌 발생 : DS_Store, UserInterfaceState.xcuserstate 파일
1. Pull Requests 생성되지 않는 문제
수정 작업 후 브랜치로 푸시 후 자동으로 Pull Requests가 생성되지 않아서 당황했는데
이 때 해결법은 직접 생성해주면 된다!
- 우측에 New pull request 버튼을 선택
- compare 의 브랜치를 원하는 브랜치로 바꿔주고 merge 작업 진행하면 된다!
안 생긴 이유를 정확히는 모르겠지만 Github로 이동해서 바로 pr을 진행하지 않아서 활성화된 버튼이 자동으로 사라진 것 같았다.
아주 간단하게 해결할 수 있었다.
2. Pull Requests confilct 문제 / DS_Store, UserInterfaceState.xcuserstate 파일
push를 하는 과정에서 골치 아픈 충돌이 생겼다.
문제 상황
- main으로부터 pull 을 받지 않고 push를 해버려서 시점이 엉켜버렸다.
- update를 받지 않은 상태에서 add . 을 함으로써 DS_Store 파일에서 conflict 발생함
- UserInterfaceState.xcuserstate 충돌
충돌 파일
- DS_Store
- UserInterfaceState.xcuserstate
시도해본 것들
- git ignore 파일 추가 (해당 줄 추가해줌)
.DS_Store
._.DS_Store
**/.DS_Store
**/._.DS_Store
*.xcuserstate
- DS_Store 파일 삭제
# 상위 디렉토리에서 현재 디렉토리 아래의 .DS_Store 파일 모두 제거
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
- UserInterfaceState.xcuserstate 라는 파일 삭제
git rm --cached [Project Name].xcodeproj/xcuserdata/[User Name].xcuserdatad/UserInterfaceState.xcuserstate
이렇게 충돌이 나는 파일들을 삭제해줌에도 불구하고 push 후 pull request에서 충돌이 해결되지 않았다.
그 과정에서 파일을 지워도 계속 지워지지 않고 충돌이 나는 이유에 대해 고민해보았다.
이전 commit 상태에 파일이 남아있기 때문인 것 같았다..!
해결 방법 ⚙️
- main에 있는 충돌 파일을 직접 삭제 후 commit -> push
- main에 있는 충돌 파일들 생성되지 않도록 삭제 명령어 처리
- 충돌 파일이 생성이 되지 않기 때문에 conflict 발생 x
여러번 브랜치를 이동하며 명령어와 삭제 과정을 반복하면서 해결했다.
앞으로 .ignore을 통해 꼬옥 충돌 방지를 미리해줘야겠다는 생각이 들었던 충돌 해결과정 시간..😮💨
앞으로 주의해야할 점❗️
- gitignore 파일 추가하기!⭐️⭐️
- 항상 git_status로 파일의 update 및 변경사항 확인하기
- git commit시 add .로 모든 파일을 수정하기보다는 변경이 된 파일만 add하기
- 바뀐게 많아서 add . 을 하게 됐을시는 git status로 modified 파일을 확인(빨간색은 적용X, 초록색은 적용O)
- 빨간색 파일이 있으면 오류가 발생할 확률이 높음
- 해결방법 : commit시 git stash 해두고 git add . 하면 불필요한 캐시파일이 add 되지않음
- conflict 이 발생하면 GitHub에 버튼이 활성화 되지 않음
- 터미널에서 conflict log 확인
- 왜 오류가 났는지 디버깅 하고 오류가 난 부분 반드시 해결 후 다시 update, commit, push 순서로 진행하기
과제 기능 작업중에 Confilct 해결하느라 시간이 많이 지체됐지만 자꾸 부딪히며 깃허브와 친해지는 과정이라고 생각한다.
깃허브 관련 협업 과정도 더 연습하면서 익숙해지도록 공부해야겠다.
'Devlog👩🏻💻 > etc' 카테고리의 다른 글
[GitHub/iOS] 깃허브 프로젝트 업로드(.gitignore 파일 추가해서 올리기) (8) | 2024.05.05 |
---|---|
hELLO 스킨 글 배치 오류 해결 및 스킨 적용하기 (5) | 2024.04.30 |
[GitHub] The requested URL returned error: 403 (1) | 2024.04.24 |
TMDB API 사용법 (2) | 2024.04.23 |
프로그래머스 Github 자동으로 커밋하기 (2) | 2024.03.20 |