| git init
: 지역 저장소 생성 및 초기화
| git init --bare (github와 같은 원격저장소를 사용하는 것이 아닌, 본인 pc를 서버로 사용할 때)
: 원격 저장소용 git을 생성하는 방법
| git remote add [저장소명] [저장소 주소]
: 원격 저장소 연결
| HTTP 방식
| git remote add [원격 저장소 약어] https://github.com/[본인 git 주소]/[본인 git 원격 저장소명].git
: github의 원격 저장소를 본인의 지역 저장소에 연결합니다. 처음 연결할 때에는 보통 원격 저장소 약어를 'origin'으로 설정을 하며, 추가로 다른 약어를 사용하셔도 무방합니다.
이 경우, push할 때 아이디와 password를 입력해야됨.
'Black Lives Matter' 운동의 일환으로 기존 Master/Slave(주/종) 관계를 뜻하는 단어를 다른 단어로 대체하기 위해서 branch명을 master에서 main으로 변경하도록 설정이 추가되었습니다. 이전 사용자분들도 참고하시길 바랍니다.
기존 master로 사용하던 명칭도 아래의 주소로 가시면 main으로 변경이 가능합니다.
https://github.com/settings/repositories
| SSH 방식
2021.08 업데이트
https://docs.github.com/en/developers/overview/managing-deploy-keys#deploy-keys
1. ssh-keygen을 통해 key값을 생성해준다.
2. key가 생성된 위치로 이동하여 public key를 복사한다.
$ cat ~/.ssh/id_rsa.pub
3. 본인의 github setting으로 이동하여 해당 public key를 등록해준다.
4. git remote add origin [ssh 주소]를 입력하여 원격 저장소와 연결한다.
| ssh-keygen
: ssh 방식을 사용하기 위해 공개키(public key)와 비밀키(private key)를 생성합니다.
| cd ~/.ssh
: 여기서 '~' 물결표시는 본인의 홈 디렉토리 주소를 의미한다. 즉, c/Users/[본인PC명] 과 같은 의미입니다.
SSH 방식은 공개키(public key)와 비밀키(private key)를 사용함으로써 로그인 보안을 높혀주는 또 다른 형태의 연결 방법이다. 두 키는 1:1 대응하며, 쉽게 말해 퍼즐조각이 하나 빠진 퍼즐판(public key), 마지막 퍼즐 조각(private key)로써 둘이 일치했을 때 로그인이 되는 것이다.
| cat id_rsa.pub
: 공개키(public key)값의 내용을 출력합니다.
| github > setting > SSH and GPG keys > New SSH key
복사한 공개키를 New SSH key를 통해 등록해줍니다.
| 원격 저장소 > Code > ssh > 주소 복사
이제 SSH로 연결하고 싶은 원격 저장소 폴더로 이동하셔서 SSH 주소를 복사해주세요.
| git remote add [원격 저장소 약어] git@github.com:[본인 git 아이디]/[본인 git 원격 저장소명].git
이 경우, HTTPS 방식과 달리 따로 로그인을 하지 않고도 자동으로 앞서 소개한 공개키와 비밀키의 일치여부를 판단하여 push를 할 수 있게 됩니다.
| git push -u origin main
: 원격 저장소 origin의 main branch에 내용을 업데이트합니다.
git push -u origin main 에러 해결하기!!
이 경우 반응이 없고 멈추어 버리는 에러가 발생하기도 합니다.
[발생원인]
이 때는 설치된 git 버전이 오래되었거나, master -> main으로 브랜치명이 변경된 것을 제대로 인식하지 못해서 발생하는 에러 같더군요.
[해결방안 1]
이 경우 git update-git-for-windows를 통해 업데이트를 진행해주세요.
[해결방안 2]
git을 삭제 후 재설치 해주세요.
이 때, 보통 기초 강의를 듣게 되면 아래 메뉴를 상단의 Let Git decide 메뉴를 선택하여 설치해도 된다고 안내를 해주십니다. 이 메뉴의 경우 기본 branch를 'master'로 설정해줍니다. 하지만, 'BLM' 운동의 일환으로 'Master' 대신 'Main'을 쓰게 되었지요. 저도 이렇게 설치했었다가, 계속 오류가 나서 하단의 Override the default branch name for reposiories 메뉴를 선택하여 해결하였습니다. 해당 메뉴는 override(덮혀쓰기) 기본 branch명을 'master'가 아닌 'main'으로 통일해주는 옵션을 선택해주었더니 위 에러가 해결되었습니다.
| git remote remove [저장소명]
: 원격 저장소를 제거합니다.
| git remote -v
: 원격 저장소 목록을 출력합니다.
| git push [업로드할 원격 저장소명] [브랜치명]
: 원격 저장소의 브랜치로 내용을 업데이트합니다.
| git push --set-upstream [업로드할 원격 저장소명] [브랜치명]
: 다음 git push 실행시 [업로드할 원격 저장소명] [브랜치명]로 자동으로 push 되도록 설정합니다.
즉, 다음 git push 에서는 [업로드할 원격 저장소명] [브랜치명]을 입력하지 않아도 됩니다.
| git clone [복제할 원격 저장소 주소] [생성할 복제 폴더명]
: 해당 폴더에 원격 저장소의 내용을 복제하여 가져옵니다.
| git log --reverse
: git log를 시간을 오름차순으로 표시합니다.
| git pull
: 원격 저장소에 올린 내용을 지역 저장소로 내려 받습니다.
git pull로 가져오게 되면 지역 저장소 내용에 원격 저장소 내용이 병합(merge) 됩니다.
항상 git push 전에는 git pull을 통해 지역 저장소에 원격 저장소에 병합을 하셔야 됩니다.
만약, git pull 하지않고 git push를 하게 되면 reject 에러가 발생하게 됩니다.
따라서 정리하면
1. git pull
2. git push
동시에 사용하는 명령어
git pull; git push;
| Tag
| git tag [태그명] | [원하는 커밋 해시] or [branch 명칭] // light weight tag
: commit에 이름을 달아주는 것. ex) 버전 관리
| git tag
: 현재 tag 목록을 출력합니다.
| git tag -a [태그명] | [원하는 커밋 해시] or [branch 명칭] | -m "[태그 설명]" // annotated tag
: 주석을 단다는 의미로 조금 더 자세한 tag 방식
| git tag -v [태그명]
: 해당 태그의 내용을 출력합니다.
| git push --tags
: tag를 원격 저장소에 업로드 합니다
| git tag -d [삭제할 태그명]
| 버전 관리 참고글
Semantic Versioning
| 참고 문헌
지옥에서 온 문서 관리자 깃 & 깃허브 입문, 이고잉, 고경희 지음, 이지스 퍼블리싱, 2019.12.06
'코딩 | 개념 정리 > Git & GitHub' 카테고리의 다른 글
vi 편집기 정리 (0) | 2022.01.26 |
---|---|
1day 1commit 프로젝트, github에서 발생하는 contribution 에러 (0) | 2021.07.17 |
git의 원리 분석 도구_gistory 사용법 (0) | 2021.07.13 |
git 무료 참고 도서 (0) | 2021.07.13 |
GIT 기초 사용법 2_브랜치 (0) | 2021.07.13 |