반응형
GitHub 활용
- 초기 원격저장소 설정하기
- New Repository
- 로컬 저장소에 원격 저장소 정보 설정하기
- 로컬 저장소에는 한번만 설정하면 된다.
- $ git remote add origin url
- 로컬 저장소의 버전을 원격 저장소로 Push
- $ git push <원격저장소이름> <브랜치이름>
- 원격 저장소는 저장소의 버전(커밋)을 관리
- $ git push <원격저장소이름> <브랜치이름>
- 로컬 저장소의 버전을 원격 저장소로 Pull
- $ git pull <원격저장소이름> <브랜치이름>
- 원격 저장소로부터 변경된 내역을 받아와서 이력을 병합
- $ git pull <원격저장소이름> <브랜치이름>
에러사항
- $ git commit 만 눌렀을때, commit 메시지 적고 esc누른다음 :wq! 적고 엔터누르기
- E45: 'readonly' option is set (add ! to override)
- :wq 뒤에 !가 없어서 에러났었음
- E45: 'readonly' option is set (add ! to override)
명령어
- git init
- 로컬에서 새로운 프로젝트 시작
- git clone url
- 원격저장소 복제
- git remote -v
- 원격저장소 정보 확인
- git remote add <원격저장소> url
- 원격저장소 추가(일반적으로 origin)
- git remote rm <원격저장소>
- 원격저장소 삭제
- git push <원격저장소> <브랜치>
- 원격저장소에 push
- git pull <원격저장소> <브랜치>
- 원격저장소로부터 pull
push 실패
- 로컬과 원격 저장소의 커밋 이력이 다른 경우 발생한 것이다.
- 원격저장소의 커밋을 로컬저장소로 가져오기(pull)
- 로컬에서 두 커밋을 병합 (추가 커밋 발생) ⇒ 동시에 같은 파일이 수정된 경우 merge conflict가 발생 ⇒ 브랜치
- 다시 GitHub로 push
gitignore
- 버전 관리를 별도로 하지 않는 파일/디렉토리를 Git 저장소에 .gitignore 파일을 생성하여 해당 내용 관리
- 작성 예시
- 특정 파일: a.txt(모든 a.txt), test/a.txt(테스트 폴더의 a.txt)
- 특정 디렉토리: /mt_secret
- 특정 확장자: *.exe
- 예외 처리: !b.exe
- 이미 커밋한 것은 무시X ⇒ 미리 .gitignore를 설정하자
Branch
- 독립적인 작업흐름을 만들고 관리
- 주요 명령어
- 브랜치 생성: (master) $ git branch {branch name}
- 브랜치 이동: (master) $ git checkout {branch name}
- 브랜치 생성 및 이동: (master) $ git checkout -b {branch name}
- 브랜치 목록: (master) $ git branch
- 브랜치 삭제: (master) $ git branch -d {branch name}
- merge
- 각 branch에서 작업을 한 이후 이력을 합치기 위해 merge 명령어를 사용
- merge 시, 서로 다른 commit에서 동일한 파일을 수정한 경우 충돌이 발생할 경우
- 직접 해당 파일을 확인하고 적절하게 수정 -> 직접 커밋 실행
- branch를 바꿔서 commit하고 다시 되돌아가면 바꾼 후 commit한 것은 뜨지 않음
- merge 과정 필요함
- 그 후 바꿨던 브랜치 지워주면 깔끔해짐
- merge conflict
- 같은 파일 수정했을때
- 충돌난 파일이 무엇인지 알고 싶다 → status
- 충돌→파일 확인 후 수정→add, commit 과정
- 메시지 없이 commit함 → 커밋메시지가 작성되어있음
Git Flow
- Git을 활용하여 협업하는 흐름으로 branch를 활용하는 전략
- 브랜치 만들기 → 작업 → 커밋 → GitHub로 브랜치를 push → Pull Request -(리뷰)→ merge
추가 정리
- a.txt, b.txt 가 있는데, a.txt만 커밋하려고 했는데, git add. 을 해버렸다.
- git restore --staged file
- 터미널 메시지에 나와있음
- git restore --staged file
- 코드가 지워졌다.
- git status 터미널 메시지
- git restore file
- 파일이 삭제된 사실을 없앤다
- git status 터미널 메시지
- 커밋 메시지 잘못 입력
- git commit --amend
- 함부로 하지 않기 ⇒ 해시값이 달라짐
- push 안 한 상태에서는 가능/push 한 이후는 하지말기
반응형
댓글