# 로컬 git 환경 설정
Git 다운로드 페이지 -> https://git-scm.com/
# github user 연결
git에 github에 설정되어 있는 본인 사용자 이름와 이메일 설정을 해야 함.
-> 커밋 시 커밋메세지가 본인 깃허브로 연동되어 나타나게 됨, 이를 설정하지 않으면 git에 어떤 사람이 커밋했는지 확인 불가
$ git config --global user.name "깃허브 이름"
$ git config --global user.email "깃허브 이메일"
$ git config --global user.name(email)
설정이 잘 되어있는지 확인
# 리포지토리 클론하기
github Repository의 원격저장소가 폴더 형태로 저장됨.
$ cd 원격 저장소를 저장할 경로
$ git clone 깃허브 주소(.git 형식)
++ git bash에서 붙여넣기 단축키는 shift + insert를 하면 됨.
오류 없이 이런 화면이 떴다면 파일 탐색기에 들어가서 폴더가 생성되었는지 확인
# 원격 저장소에 변경 사항 업로드 하기
괄호 내 이름이 main -> 브랜치를 뜻함, 나중에 공동 작업할 때 각각의 브랜치에서 작업하고 병합할 수 있음
현재는 main 브랜치에서 작업 중이라는 표시
이제 원격 저장소 경로로 들어가서 작업하면 됨.
새로운 텍스트 파일을 만들어서 깃허브와 잘 연동되는지 확인
# 작업 및 커밋
원격 저장소에 있는 파일들을 모두 업로드 함. 기존에 있던 파일에서 수정사항 있으면 수정했던 폴더만 add 시켜줌
$ git add .
깃허브에 업로드 할 때 커밋 메시지를 설정함(어떤 작업을 해서 올렸는지 설명하는게 좋음)
$ git commit -m "작업 내용 설명"
깃허브에 업로드 하는 명령어, 기본 브랜치라면 main, 새롭게 브랜치를 생성했다면 main 자리에 브랜치 이름을 넣으면 됨
$ git push origin main
그 다음 깃허브에 들어가서 리포지토리를 확인하면
# 브랜치 (branch)
깃허브에서는 공동 작업을 지원함. 리포지토리 생성자가 같이 작업할 깃허브 유저들을 초대
여러 브랜치를 생성하여 각각의 브랜치에서 작업 후 풀리퀘스트를 통해 리포지토리 책임자에게 검토를 맡고 병합하는 기능
github 내에서 만들거나
$ git checkout -b branch-name
위 명령어로 새로운 브랜치를 생성할 수 있음
# 브랜치 접속
$ git checkout 브랜치
저 환경에서 수정하면 main 브랜치는 유지, 자신이 생성한 브랜치 내에서 작업 변경 사항이 올라간다.
백업용으로도 사용 가능
# 자주 뜨는 워닝과 오류
- LF or CRLF 오류
$ git add .
실행 후 파일을 push할 때 줄 끝 정규화, LF or CRLF 오류(워닝) 자주 뜸. 뜨는 게 정상
아래 코드 실행 후 다시 파일 올리는 작업을 진행하면 됨.
$ git config --global core.autocrlf input
$ git config --global core.autocrlf true
처음 이름이나 이메일 설정할 때 같이 해줘도 좋음.
- 자신이 생성한 branch나 main에 add, commit 과정에서 아래와 같은 hint 포함 오류 메시지가 뜰 때
$ git push origin minseo
To https://github.com/mxnseo/airlab_ai.git ! [rejected] minseo -> minseo (fetch first)
error: failed to push some refs to 'https://github.com/mxnseo/airlab_ai.git'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
이유 : 로컬 브랜치가 원격 브랜치에 비해 뒤쳐졌다는 뜻. 로컬에는 없는 변경 사항이 있을 경우 생긴다.
원격 브랜치에서 최신 변경 사항 가져오기
$ git pull origin 브랜치
위 명령은 브랜치의 변경 사항을 로컬 브랜치와 병합함.
저 명령어를 실행 시 중간에 내부 파일로 들어가버리는 상황이 오는데... 그냥 무시하고 :q 를 작성하여 빠져나오면 됨.
그 다음에 실행하려던 명령어 계속 실행
그래도 여전히 같은 오류가 생기면 강제 병합을 진행하면 됨.
$ git push origin main --force