Git
: 코드의 변경점을 기록하기 위해 사용하는 것.
- 버전 관리 도구
- 형상 관리 도구(= SW의 변경사항을 체계적으로 추적하고 통제하는 것)
특징
- 기능을 개발하면서 코드 변경점 기록 가능
- 문제 발생시 특정 지점으로 되돌아가기 쉬움 (BUT, 웬만하면 과거로 돌아가지는 X)
Github
: 백업과 공유가 가능한 온라인 코드 저장소
장점
- 온라인 저장소에 백업 가능
- 팀원들과 협업시 코드 공유 가능
- 협업 가능
리눅스 명령어
>> pwd
- print working directory의 약자
- 현재 내가 작업하는 폴더를 보여달라는 명령어
>> ls
- list의 약자
- 현재 위치의 모든 파일 및 리스트를 보여주는 명령어
>> ls -a
- - 는 앞의 명령어(ex; ls)의 추가 기능을 사용하고 싶을 때 붙임
- a는 all의 약자
- 숨겨진 폴더도 보여줌
>> mkdir <폴더명>
- make directory의 약자
- 현재 경로에서 폴더를 생성하는 명령어
>> touch <파일명>
- 현재 경로에서 파일을 생성하는 명령어
- 원래는 파일의 생성과 파일의 날짜, 시간을 변경하는 명령어라고 함.
>> cd <경로>
- change directory의 약자
- 터미널에서 폴더 위치를 이동하기 위해 사용
- ls 명령어 입력 후 현재 내가 어떤 폴더로 이동할 수 있는지 확인부터 해야 함
- /(슬래시)는 '~안에서'라고 생각하면 됨
- .. 은 상위 디렉토리
Git 명령어
>> git init
: 프로그래밍을 git으로 관리하기 위해서는 초기화를 해야하는데 이 때 사용되는 명령어
- 초반에 딱 한 번만 입력하면 됨.
- initialize empty Git repository in ~~... 이라고 나오면 문제없이 실행된 것.
- 해당 명령어가 제대로 실행되었다면 ls -al 명령어로 폴더 확인하였을 때 .git 폴더가 하나 생성된 것 확인 가능.
이때부터 코드 변경을 git에서 추적함.
>> git add .
: 저장하고 싶은 파일을 지정하는 명령어
git add .
위와 같이 명령어를 입력하게 되면
점(.)은 현재 디렉토리에 있는 모든 파일을 의미하기 때문에 모든 파일을 지정하게 되는 것이고,
아래와 같이 명령어를 입력하게 되면
add 뒤에 작성한 특정 파일만 지정하게 되는 것이다.
git add <파일명>
>> git commit
: 변경된 내용을 저장(커밋)하는 명령어
git commit -m "커밋 메시지"
-
Git은 3가지 영역으로 나누어져 있음
- Working Directory
: 내가 작업하고 있는 프로젝트의 디렉토리 - Staging Area
: 커밋을 하기 위해 git add로 지정한 파일들이 모여있는 공간 - Repository
: 커밋한 파일들이 모여있는 공간
- Working Directory
>> git status
: 파일의 상태를 확인할 수 있는 명령어
- 어떤 파일이 add 됐는지, 어떤 파일이 변경됐는지, 현재 브랜치명 등 확인 가능.
>> git log
: 저장한 커밋 내역을 확인할 수 있는 명령어
- 커밋 메세지를 보고 특정 시점에 어떤 변경점이 있었는지 추측 가능
- 커밋 id를 이용해 과거의 코드 저장 시점으로 되돌아갈 수 있음
- q를 입력하게 되면 git log에서 빠져나오게 됨.
>> git push
: 수정된 코드를 온라인 저장소에 백업하는 명령어 (올리는 것.)
git push origin <브랜치명>
- 해당 명령어 입력 전 git add ., git commit을 해줘야 함.
>> git clone
: github에 있는 프로젝트를 복제해오는 명령어
git clone <github 주소> .
→ 폴더 안에 내용만 복제
git clone <github 주소>
→ 폴더까지 복제
>> git pull
: 온라인 저장소에서 변경된 코드를 적용하는 명령어 (가져오는 것.)
git push origin <브랜치명>
- git pull을 하지 않고 git push를 하게 되면 내가 다른 팀원의 코드를 덮어써서 없애버릴 위험이 있기 때문에 git pull을 통해 최신 코드를 내 코드에 적용시킨 후, git push를 해야 함.
요약 정리 (협업할 때)
팀장
1. git init (코드 작성 후 해도 상관 X)
2. 코드 작성 후 코드 저장 (git add . / git commit -m "<메세지>")
"please tell me who you are" 에러 발생시 아래와 같이 입력 (예시)
git config --global user.email "abc1234@gmail.com"
git config --global [user.name](http://user.name/) "nickname"
3. github에 repository 생성
4. github에 초기 코드 업로드
git remote add origin <github 주소>
git branch -M main
git push -u origin main
5. 코드 수정
6. 코드 저장 (git add . / git commit -m "<메세지>")
7. 깃허브에 변경된 코드 업로드 (git push origin <브랜치명>)
8. 코드 업로드 안될 때 git pull 후 7, 8번 진행
git pull 명령어 입력시 "fatal: Need to specify how to reconcile divergent branches" 에러가 발생하면 아래와 같이 입력
git config pull.rebase false
git pull origin main
팀원
1. github에서 코드 복제 (git clone <github 주소> .)
2. 코드 수정
3. 코드 저장 (git add . / git commit -m "<메세지>")
4. 깃허브에 변경된 코드 업로드 (git push origin <브랜치명>)
(* 업로드가 안된다면 github collaborator 등록했는지 확인)
5. 코드 업로드 안될 때 git pull 후 3, 4번 진행
6. 코드 업로드 안될 때 git pull 후 7, 8번 진행
git pull 명령어 입력시 "fatal: Need to specify how to reconcile divergent branches" 에러가 발생하면 아래와 같이 입력
git config pull.rebase false
git pull origin main
fork 한 repository 동기화
1. git remote add upstream <github 주소>
2. git remote -v
3. git push upstream main
'내일배움캠프(Sparta)' 카테고리의 다른 글
[Git & Github] 협업 하는 법 (1) | 2023.10.25 |
---|---|
Chapter 1. 프로젝트 팀원 코드 이해 (0) | 2023.10.18 |