삽질에 기반한 git 명령어 정리

🐳ㅇㅡㄴㄱㅓ·2022년 6월 9일
0

git 저장소 생성

//비어있는 .git 폴더가 생긴다
$ git init

git -> local 소스 가져오기

$ git clone <https://github.com<xxxxxxxxx>.git{가져올 git 주소}>

원격저장소 연결 및 끊기

  • name 부분에 보통 origin
//연결
$ git remote add <name> <리모트 주소>

//끊기
$ git remote remove <name>

//저장소 확인하기
//v옵션을 붙이면 url과 함께 볼 수 있고 안붙이면 단축이름만 보임( origin )
$ git remote -v

fetch명령어로 업데이트

  • 모든 remote 저장소의 최신 상황을 업데이트
  • 상황이 로컬에 업데이트만 되는것이지 동기화가 되는것은 아니다!
$ git fetch --all
$ git fetch <name(ex: origin)>
$ git fetch origin <branch name>

Local 동기화

//pull로 동기화
$ git pull origin master

//reset으로 동기화
//--hard 뒤에 쓴 브랜치에 맞게 로컬을 바꿈
$ git reset --hard origin/master

삽질기록

  1. 운영서버 외 개발서버를 AWS상에 최초 세팅하고 git과의 동기화를 위해 아래와 같이 실행
$ git init
$ git remote add origin 주소
$ git fetch --all
$ git pull origin master => 여기서부터 문제발생
$ git clean -d -f -f
$ git pull origin master 
  1. 서버에 이미 소스는 올라가있는 상태이므로 remote 주소만 추가
  2. fetch 하고 pull도 실패 checkout도 오류나며 실패
  3. error: The following untracked working tree files would be overwritten by merge
    원인은 해당 오류때문
    => 여기저기 검색하니까 git clean으로 버전관리가 안된파일들을 다 지우고나서 pull로 다시 내려받으면 된다고함.
    => 여기서 참사 시작. 저렇게 할거면 ignore에 vendor를 먼저 빼놓은다음에 clean -> pull의 과정을 거쳤어야했는데
    vendor를 그대로 놔둔채로 진행했기때문에 vendor 폴더 증발!
    => 개발서버에서는 composer install을 실행을 다시 해주었었는데 운영서버에서도 똑같이 오류가 나서 똑같은 과정을 진행했다가 또 vendor 증발로 사이트가 잠시 안나오는 상황이 발생했다.
    => 개발서버 세팅시부터 vendor 폴더 내용들이 지워진것에 대해 의문을 가졌어야했는데 그냥 진행했더니 운영서버에 반영하며 대참사(다행히 아직 개발히스토리 규모가 크지않았고 복구 가능했음)
  4. 다른 로컬에서 테스트해본 결과 아래 순서대로 테스트하였더니 아까와 같은 오류도 나지 않았고, vendor폴더도 무사했으며 소스도 git과 동일했음.
$ git init
$ git remote add origin 주소
$ git fetch origin
$ git reset --hard origin/master
$ git pull origin master

회고

git은 보통 개발진행할 때는 phpstorm에서 바로 commit하거나 fork gui로 쓰면서 명령어로 직접 해볼일은 거의 없고
보통 운영서버에서 내가 배포할 때도 다 되있는 환경에서 git pull origin master만 잘 쓰면 됐었는데 처음부터 서버에서 직접 명령어 날려가면서 해보니 멘붕의 연속이다.
https://git-scm.com/ 페이지에서 기본 개념을 다시한번 다잡고 가봐야될것같다.

참고

AWS Ubuntu에서 github 연동하기
2.5 Git의 기초 - 리모트 저장소
git pull 명령 시에 untracked working tree files overwritten 나올 때

profile
재활훈련 중

0개의 댓글