일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- Homebrew
- Oracle
- ibatis
- nodejs
- 생활코딩
- python
- Error
- 맥
- pyqt
- 이클립스
- ddit
- spring
- jsp
- 대덕인재개발원
- 단축키
- Android
- Mac
- FastAPI
- html
- Java
- API
- 객체지향
- servlet
- 자바
- 컬렉션프레임워크
- 배열
- JDBC
- crud
- 자바문제
- 반복문
- Today
- Total
romworld
[Github] 깃허브(Github)란 무엇인가 ! 사용법을 알아보자 ! 본문
깃허브란?
- VCS(Version Control System)
- 분산 버전 관리 툴인 깃(git)을 사용하는 프로젝트를 지원하는 웹호스팅 서비스
깃(Git)이란?
- 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템
- 스프트웨어 개발에서 소스 코드 관리에 주로 사용되지만 어떠한 집합의 파일의 변경사항을 지속적으로 추적하기 위해 사용될 수 있다.
- git 최초 설정
git config --global user.name "(본인 이름)"
git config --global user.email "(본인 이메일)"
- 기존 브랜치명 변경 (master - slave 보단 main으로 대체하자)
git config --global init.defaultBranch main
CLI로 해보기 (프로젝트 생성 & Git 관리)
- vs코드에서 폴더를 추가하고 vs터미널을 킨다음 아래 명령어 입력
- .git 폴더 생성
git init
- git 상태
git status
소스트리로 해보기
- 저장소 추가
- 소스트리에 폴더 드래그, 로컬 저장소 추가
- git이 관리하는 저장소 새로 만들기
- .git 폴더 삭제 후 진행
- 소스트리에 폴더를 드래그하거나, 로컬 저장소 생성
it의 관리에서 특정 파일/폴더를 배제해야 할 경우
a. 포함할 필요가 없을 때
- 자동으로 생성 또는 다운로드되는 파일들 (빌드 결과물, 라이브러리)
- ex) java파일 class 파일
b. 포함하지 말아야 할 때
- 보안상 민감한 정보를 담은 파일
- ex) 아이디, 비밀번호나 개인정보
gitignore 파일을 사용해서 배제할 요소들을 지정
- .gitignore
- .gitignore 파일을 생성해서 안에 사용을 배제할 파일명을 적어주면 관리대상에서 제거 된다.
gitignore 형식
# 이렇게 #를 사용해서 주석
# 모든 file.c
file.c
# 최상위 폴더의 file.c
/file.c
# 모든 .c 확장자 파일
*.c
# .c 확장자지만 무시하지 않을 파일
!not_ignore_this.c
# logs란 이름의 파일 또는 폴더와 그 내용들
logs
# logs란 이름의 폴더와 그 내용들
logs/
# logs 폴더 바로 안의 debug.log와 .c 파일들
logs/debug.log
logs/*.c
# logs 폴더 바로 안, 또는 그 안의 다른 폴더(들) 안의 debug.log
logs/**/debug.log
git 버전 (타임캡슐) 담기
- git 변경상태 확인
git status
- 파일 하나 담기 (예제파일 : tigers.yaml)
git add tigers.yaml
- git status로 확인
- 모든 파일 담기 (vs 코드 기능)
git add .
- git status로 확인
타임캡슐 저장
git commit
- Vi 입력 모드로 진입
작업Vi 명령어상세
입력 시작 | i | 명령어 입력 모드에서 텍스트 입력 모드로 전환 |
입력 종료 | ESC | 텍스트 입력 모드에서 명령어 입력 모드로 전환 |
저장 없이 종료 | :q | |
저장 없이 강제 종료 | :q! | 입력한 것이 있을 때 사용 |
저장하고 종료 | :wq | 입력한 것이 있을 때 사용 |
위로 스크롤 | k | git log등에서 내역이 길 때 사용 |
아래로 스크롤 | j | git log등에서 내역이 길 때 사용 |
- FIRST COMMIT 입력한 뒤 저장하고 종료
- 커밋 메시지까지 함께 작성하기
git commit -m "FIRST COMMIT"
- 아래 명령어와 소스트리로 확인
git log
- 파일의 추가,변경,삭제 확인
git diff
작업Vi 명령어상세
위로 스크롤 | k | git log등에서 내역이 길 때 사용 |
아래로 스크롤 | j | git log등에서 내역이 길 때 사용 |
끄기 | :q | :가 입력되어 있으므로 q만 눌러도 됨 |
add와 commit 한꺼번에
git commit -am "(메시지)"
- 새로 추가된 파일이 없을 경우에만 가능 (untracked)
Git 프로젝트를 이전으로 되돌리는 방법
- reset : 원하는 시점으로 돌아간 뒤 이후 내역들을 지운다
- revert : 되돌리기 원하는 시점의 커밋을 거꾸로 실행 (필요한 것만 변경할 수 있고 그 기록도 다 남길 수 있다)
한번 공유공간에 올라간 내역을 reset해버리면 협업 시 문제 발생, 충돌이 생길 수 있으므로
revert를 이용해서 되돌려야 한다.
*CLI 방법
- reset을 사용해서 돌아가기
git log
- 먼저 git log를 통해 커밋 내역 확인 후
- vs터미널에서 보이는 commit 옆의 로그를 복사해준다. (되돌리기 원하는 시점의 로그 복사) - 앞의 7-8글자만 복사해도 된다.
- :q 로 빠져나오기
git reset --hard (돌아갈 커밋 해시)
- reset 하기 전 시점으로 돌아가기
git reset --hard
- 뒤에 커밋 해시가 없으면 마지막 커밋 시점으로 돌아감
- revert를 사용해서 과거의 커밋 되돌리기
git revert (되돌릴 커밋 해시)
- :wq로 커밋 메시지 저장
- 만약 :wq가 먹질 않는다면 :w! 입력 (강제로 저장) 후 :wq
만약 전에 커밋한 곳으로 되돌리려는데 충돌이 나는 경우
- git rm (파일명) 으로 Git에서 해당 파일 삭제
- git revert --continu
- :wq
커밋 하지 않고 revert로 돌아가기
- git revert --no-commit (되돌릴 해시)
- 원하는 작업을 추가한 다음 함께 커밋
- 취소하려면 git reset --hard
*소스트리 방법
- reset
- 대기 중인 파일의 체크박스를 선택하면 add가 된다
- 해당 커밋에서 마우스 우클릭 ..이 커밋으로 초기화
- 선택지에서 hard 선택
- revert
- 마우스 우클릭 커밋 되돌리기
- revert 사용시 충돌났을 경우 (window)
1. 커밋 되돌리기
2. 충돌 해결 - 저장소 인것을 사용하여 해결
3. 메세지 입력 후 커밋
- 맥(Mac)인 경우
맥의 소스트리는 해당 상황에 대한 기능이 미비하여
위와 같은 오류 팝업이 나타난다.
때문에 팝업에 나와 있듯, CLI에서 git rm (파일명) 명령어로 해당 파일을 지운 뒤
git commit을 입력하여 수동으로 해결해주어야 한다.
브랜치 생성/이동/삭제하기
- branch 생성
git branch add-coach
- branch 목록 확인
git branch
- add-coach 브랜치로 이동
git switch add-coach
- checkout 명령어가 Git2.23버전부터 switch, restore로 변경됨
- 브랜치 생성과 동시에 이동하기
git switch -c (새 브랜치명)
- 기존 checkout -b (새 브랜치명)
- 브랜치 삭제하기
git branch -d (삭제할 브랜치명)
- git branch -D
- 다른 브랜치로 가져오지 않은 내용이 있는 브랜치를 지울 때 (강제삭제)
- 브랜치 이름 바꾸기
git branch -m (기존 브랜치명) (새 브랜치명)
결과보기
- 위치한 브랜치에서의 내역만 볼 수 있음
git log
- 여러 브랜치 내역 보기
git log --all --decorate --oneline --graph
- 소스트리에서 확인(제일 편함)
서로 다른 브랜치 합치기
marge : 두 브랜치를 한 커밋에 이어 붙힌다.
- 브랜치의 사용 내역을 남길 때
rebase : 브랜치를 다른 브랜치로 이어 붙힌다.
- 한 줄로 깔끔하게 정리된 내역을 유지하기 원할 때
- 이미 팀원과 공유된 커밋들에 대해서는 사용하지 않는 게 좋다.
- ex) add-coach 브랜치를 main 브랜치로 merge
- main 브랜치로 이동
- 아래의 명령어로 병합
git merge add-coach
- mac에서는 git marge (브런치명)을 작성하고 :wq를 입력해서 마무리한다.
- marge는 reset으로 되돌리기 가능하다
- marge도 하나의 커밋이므로
- marge하기 전 마지막 시점으로 이동
- 병합된 브랜치 삭제하기
git branch -d add-coach
- ex) new-teams 브랜치를 main 브랜치로 rebase
- new-teams 브랜치로 이동
- 아래 명령어 입력
- marge와는 반대
git rebase main
- 소스트리 확인
- main 브랜치로 이동 후 아래 명령어로 new-teams의 시점으로 fast-forward
git merge new-teams
충돌 해결하기
*CLI 방법
- 파일의 같은 위치에 다른 내용이 입력된 상황
- conflict-1, conflict-2 브랜치 생성해서 일부로 충돌해보기
1. merge 충돌 해결하기
git merge conflict-1로 병합을 시도하면 충돌 발생
- 오류 메시지와 git status 확인
- VS Code에서 해당 부분 확인
- 직접 수정하기
- 당장 수정이 어려운 경우 중단하기
git merge --abort
- 충돌 부분을 수정한 뒤 git add .
- git commit 으로 병합
2. rebase 충돌 해결하기
conflict-2에서 git rebase main로 리베이스 시도하면 충돌 발생
- 오류 메시지와 git status 확인
- VS Code에서 해당 부분 확인
- 당장 수정이 어려운 경우 중단하기
git rebase --abort
해결 가능 시
- 충돌 부분을 수정한 뒤 git add .
- 아래 명령어로 계속
git rebase --continue
- 충돌을 모두 해결할 때 까지 반복
main에서 git merge conflict-2로 마무리
conflict-1, conflict-2 삭제
- git branch -d conflict-1
- git branch -d conflict-2
*소스트리 방법
1. 브랜치 만들고 merge, rebase 하기
- to-merge, to-rebase 브랜치 생성
- 상단의 브랜치 버튼 클릭
- 왼쪽의 브랜치 탭에서 클릭하여 이동
브랜치를 이동하며 파일 살펴보기
- to-merge 브랜치 main으로 merge
- main에 위치한 뒤 to-merge 브랜치를 우클릭하여 Merge ... 클릭
- merge는 병합이다.
- to-rebase 브랜치 main으로 rebase
- to-rebase에 위치한 뒤 main 브랜치를 우클릭하여 ... 재배치 클릭
- main에 위치한 뒤 to-rebase 브랜치를 우클릭하여 Merge ... 클릭
- main으로 이동 후 to-merge와 to-rebase 우클릭하여 삭제
- merge되지 않은 브랜치의 경우 강제 삭제 체크박스 선택
2. merge 충돌 해결해보기
💡 rebase는 충돌 가능시 CLI로 진행 권장
충돌이 나는 경우 알림창이 뜨고 똑같이 충돌나는 부분을 수정해주고
merge해주면 된다. 그후 삭제할 브랜치를 삭제해주면 된다.
2. Git 가입하고 토큰 만들기
- Sign Up으로 가입 후 로그인
- Personal access token 만들기
- 우측 상단의 프로필 - Settings
- Developer Settings
- Personal access tokens - Generate new token
- repo 및 원하는 기능에 체크, 기간 설정 뒤 Generate token
- 토큰 안전한 곳에 보관해 둘 것
- 토큰 컴퓨터에 저장하기
- 윈도우 가이드
- Windows 자격 증명 관리자
- Windows 자격 증명 선택
- git:https://github.com 자격 정보 생성
- 사용자명과 토큰 붙여넣기
- 맥 가이드
- Keychain Access 앱 실행
- github의 인터넷 암호 항목 선택
- 사용자명(계정 칸)과 토큰(암호 보기 누른 뒤 오른쪽 칸) 붙여넣기
- ⭐ 키체인 관련 팝업이 먼저 뜨면 맥 로그인 암호를 입력해주세요.
- 윈도우 가이드
소스트리에도 추가
맥에서 소스트리에 계정 설정하기
- 설정 > 계정 탭 > 추가 버튼
- 인증방식은 베이직, 프로토콜은 HTTPS로 설정
- 사용자명(GitHub 아이디)와 암호(토큰) 설정
************
- GitHub에 새 Repository 생성
- Public: 모두에게 보일 수 있는 프로젝트
- Private: 허용된 인원만 볼 수 있는 프로젝트
- 협업할 팀원 추가
- 레포지토리의 Settings - Collaborators
- Manage Access
- Add people
- 레포지토리의 Settings - Collaborators
원격 저장소 사용하기
1.로컬에 원격 저장소 추가 후 푸시
⭐️ 이번 강에서는 HTTPS 프로토콜 사용
GitHub 레포지토리 생성 후 복붙 명령어
git remote add origin (원격 저장소 주소)
- 로컬의 Git 저장소에 원격 저장소로의 연결 추가
- 원격 저장소 이름에 흔히 origin 사용. 다른 것으로 수정 가능
git branch -M main
- GitHub 권장 - 기본 브랜치명을 main으로
git push -u origin main
- 로컬 저장소의 커밋 내역들 원격으로 push(업로드)
- -u 또는 --set-upstream : 현재 브랜치와 명시된 원격 브랜치 기본 연결
- 원격 목록보기
git remote
- 자세히 보기: git remote -v
- 원격 지우기(로컬 프로젝트와의 연결만 없애는 것. GitHub의 레포지토리는 지워지지 않음)
git remote remove (origin 등 원격 이름)
2. GitHub에서 프로젝트 다운받기
- Download ZIP: 파일들만 다운받음, Git 관리내역 제외
- Git clone: Git 관리내역 포함 다운로드
터미널이나 Git Bash에서 대상 폴더 이동 후
(터미널에서 cd는 경로 이동 )
git clone (원격 저장소 주소)
push와 pull
1. 원격으로 커밋 밀어올리기(push)
- Leopards의 members에 Evie 추가
- 커밋 메시지: Add Evie to Leopards
- 아래 명령어로 push
git push
- 이미 git push -u origin main으로 대상 원격 브랜치가 지정되었기 때문에 가능
2. 원격의 커밋 당겨오기(pull)
- GitHub에서 Leopards의 members에 Dongho 추가
- 커밋 메시지: Add Dongho to Leopards
- 아래 명령어로 pull
git pull
3. pull 할 것이 있을 때 push를 하면?
- 로컬에서 Leopards의 manager를 Dooli로 수정
- 커밋 메시지: Edit Leopards manager
- GitHub에서 Leopards의 coach를 Lupi로 수정
- 커밋 메시지: Edit Leopards coach
- push 해보기
- 원격에 먼저 적용된 새 버전이 있으므로 적용 불가
- pull 해서 원격의 버전을 받아온 다음 push 가능
- push 할 것이 있을 시 pull 하는 두 가지 방법
- git pull --no-rebase - merge 방식
- 소스트리에서 확인해보기
- reset으로 되돌린 다음 아래 방식도 해보기
- git pull --rebase - rebase 방식
- pull 상의 rebase는 다름 (협업시 사용 OK)
- push하기
4. 협업상 충돌 발생 해결하기
- 로컬에서 Panthers에 Maruchi 추가
- 커밋 메시지: Add Maruchi to Panthers
원격에서 Panthers에 Arachi 추가
- 커밋 메시지: Add Arachi to Panthers
pull 하여 충돌상황 마주하기
- --no-rebase와 --rebase 모두 해 볼 것
5. 로컬의 내역 강제 push해보기
- 로컬의 내역 충돌 전으로 reset
아래 명령어로 원격에 강제 적용
git push --force
1. 로컬에서 브랜치 만들어 원격에 push 해보기
- from-local 브랜치 만들기
아래 명령어로 원격에 push
아래와 같이 하면 대상을 명시하라는 메시지 나타남
git push
아래 명령어로 원격의 브랜치 명시 및 기본설정
git push -u origin from-local
브랜치 목록 살펴보기
- GitHub에서 목록 보기
- 아래 명령어로 로컬과 원격의 브랜치들 확인
git branch --all
- git branch --a
2. 원격의 브랜치 로컬에 받아오기
- GitHub에서 from-remote 브랜치 만들기
- git branch -a에서 현재는 보이지 않음
아래 명령어로 원격의 변경사항 확인
git fetch
- git branch -a로 확인
아래 명령어로 로컬에 같은 이름의 브랜치를 생성하여 연결하고 switch
git switch -t origin/from-remote
3. 원격의 브랜치 삭제
git push (원격 이름) --delete (원격의 브랜치명)
'etc' 카테고리의 다른 글
[Mac] Maven 설치하기! (0) | 2023.01.25 |
---|---|
[Mac] 이클립스 자동완성 단축키 변경 , sysout -> syso 변경 (0) | 2023.01.25 |
[이클립스] 메타데이터 폴더 보기 (0) | 2023.01.19 |
[이클립스] web 구동 시켰을 때 새로고침이 안되는 경우 (0) | 2023.01.05 |
내가 보려고 만든 이클립스 단축키 (0) | 2022.09.09 |