git 이란
- 형상관리 도구 중 하나이며, 여러명의 사용자들 간의 파일 변경사항 추적 및 작업 조율을 위한 분산 버전 관리 시스템
- 소프트웨어 개발에서 소스코드를 효과적으로 관리할 수 있는 공개 소프트웨어
- 프로젝트 폴더 내 작업을 기록하고 버전 관리를 통한 체계적인 개발이 가능
git 장점
- 분선적 개발 (전체 개발 내역을 각 개발자의 로컬 컴퓨터로 복사 가능, 데이터 Merge를 할 수 있다.)
- 효율적 개발 (많은 변경이력에 대해서도 효율적인 처리가 가능하다.)
- 비선형적 개발 (branch 라는 개념으로 프로젝트의 가지치기가 가능하다.)
- 변경 이력 보장 (작업되는 모든 내역(commit)모두 별도의 영역에서 안전하게 관리된다.)
github란
- 분산 버전 관리 툴인 깃(git)을 사용하는 프로젝트를 지원하는 웹호스팅 서비스
주요용어
- repository : git으로 관리되는 파일 및 프로젝트에 대한 저장소 역할
=> Local Repository : 내 컴퓨터에 저장된 프로젝트 저장소
=> Remote Repository : 원격 서버에 저장된 프로젝트 저장소 (협업 파트너와의 공유 저장소)
- branch : 독립적 작업 진행을 위한 공간 생성
=> 통합 브랜치 (Integration Branch) : 배포될 소스 코드가 기록되는 브랜치
(해당 프로젝트의 모든 기능이 정상적으로 동작하는 소스코드가 담겨 있다.)
=> 피처 브랜치 (Feature Branch) : 기능 추가, 버그 수정과 같이 단위 작업을 위한 브랜치
- merge : merge의 기본단위는 branch이며, 다른 branch로 합치는 것
- commit : 소스코드 변화에 대한 기록 (의미 있는 변경 작업을 저장소에 기록하는 동작)
- fork : 다른 사용자의 Repository를 복제하여 나의 repository에 복제하여 수정 및 삭제 등 작업 가능
=> pull request 를 통하여 원본에 변경사항 저장
- clone : 원격 저장소로부터 로컬 저장소로 복제
- push : 로컬 디렉토리 데이터를 Remote repository로 전송
- pull : 다른 사용자의 원격 저장소 업데이트에 대한 파일을 내 로컬 저장소의 상태와 동일하게 함
파트너와 Git hub 협업 실습
1. git 환경 설정
$ git config -- global user.name "나의 깃 사용자 이름" // 깃 사용자 이름 등록
$ git config -- global user.email "나의 깃 이메일 주소" // 깃 이메일 주소 등록
=> --global 옵션 사용 시 사용자 홈에 저장됨, github 사용자 이름이나 이메일이 변경된다면 다시 실행해야함.
2. SSH 설정
$ ssh-keygen // ssh 키 생성
$ cat ~/.ssh/id_rsa.pub // 공개키 확인 및 복사
마이페이지 내 Setting -> SSH and GPG keys -> New SSH key -> 복사한 공개키 입력
3. Local Directory 내 소스코드 작성
간단하게 덧셈함수 작성
4. git 메소드를 통한 데이터 업로드 (PUSH)
* git init // 해당 디렉토리에 Local Git repository를 설정한다.
*git remote add <이름> <주소>
- git remote add 명령어를 통하여 나의 깃 허브 주소를 등록한다.
$ git remote add origin <나의 깃 허브 주소>
$ git remote -v // remote로 등록된 주소 확인 가능
깃허브 주소는 연결할 Repositories 내에 (없을경우 우측 new를 통하여 생성)
우측 code 클릭 후 HTTPS 또는 SSH 복사하여 사용 // 이후 주소 입력 란을 한가지로 통일한다.
* git status // git 상태 확인 가능
- add.js 가 언트랙킹 되어 있어 git add 명령어를 통하여 staging area로 트랙킹 해야한다.
* git add <파일 이름>
$ git add add.js // staging area로 트랙킹
* git commit -m "<코멘트>"
- git commit -m 명령어를 통하여 데이터를 코멘트와 함께 커밋 시킨다.
* git log
- git log 명령어를 통하여 로그 데이터 확인 가능
* git push origin master
- 로컬 디렉토리 내 commit 된 데이터를 해당 Repository 로 업로드 한다.
5. git 메소드를 통한 데이터 복제 (PULL)
* git remote add <이름> <페어 깃 레파짓토리 주소>
- git remote add 명령어를 통하여 페어의 레파짓토리를 등록한다.
- git remote -v 를 통하여 등록된 정보 확인
* git pull <이름> master
- git pull 명령어를 통하여 페어의 해당 레파짓토리 복제 확인
- 내용 수정 후 push 명령어를 통하여 나의 레파짓토리에 등록하고 확인
git push 시
! [rejected] master -> master (fetch first)
위와 같은 오류가 날 수 있음. 데이터가 겹쳤을때 나는것 같음
$ git push origin +master 로 해결함 (master or main 등 브랜치 이름에 맞게)
이후 해당 레파짓토리에 추가된 파일 확인
*추가사항
git pull 명령어 입력 시 위와 같은 에러가 나올 수 있음
(From github.com ~~~~~~ branch master -> FETCH_HEAD
fatal: NEed to specify how to reconcile divergent branches.)
아래 세가지 중 한가지의 병합방법을 선택해야 한다.
hint: git config pull.rebase false # merge (the default strategy)
hint: git config pull.rebase true # rebase
hint: git config pull.ff only # fast-forward only
이 중 merge 를 사용하기위해
$ git config pull.rebase false 입력
6. git 메소드를 통한 내 Repository 데이터를 로컬 디렉토리로 가져오기
* git clone <해당 깃 레파짓토리 주소>
$ git clone 명령어와 나의 해당 레파짓토리의 HTTP or SSH 주소를 복사하여 사용
- 나의 Repository를 로컬 디렉토리로 가져와졌음을 확인한다 (ls 사용)
참고 링크
https://velog.io/@jini_eun/Github-Github%EB%9E%80-%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC
'업무 관련 툴' 카테고리의 다른 글
[Mac OS]GitHub Action을 이용한 Node.js CI (0) | 2023.01.12 |
---|---|
빠른 궁금증 해결을 위한 ChatGPT (OpenAI) (0) | 2022.12.21 |