clone 명령어를 통해 복사하여 홈 로컬에서 내려받음 ( git clone <프로젝트 HTTPS 주소> 명령어를 사용하여 프로젝트를 한번에 복사하여 내려받으면 .git 파일이 자동으로 생성되며 깃에서 관리하는 파일로 자동으로 등록된다. 이후에는 pull 과 push 로 변경사항을 내려받고 올려주고하면 된다. )
로컬 pc에 내려받아진 모습
집에서 작업한 내용을 다시 깃허브로 올려놓은 모습( clone 명령어를 통해 깃 설정도 같이 내려받았기 때문에 깃 연동을 따로 할 필요 없이 푸쉬를 진행할 수 있다. )
학원에서 깃허브를 통해 집에서 작업한 내용을 다시 내려받는 상황
여기서 clone 을 사용하지 않고 pull 을 사용하는 이유는 이미 깃으로 관리되고 있으며 clone 명령어는 해당 프로젝트의 모든 내용을 내려받는 명령어이기 때문에 변경사항만 받아오는 pull 명령어를 사용
만약 깃허브에 push 를 진행할 때 만약 다른 작업자가 내가 작업하는 중간에 푸쉬를 진행했다면 깃허브에 남은 커밋 로그보다 내가 작업중인 커밋 로그가 이전 시점이기 때문에 푸쉬가 불가능하다.
> 위 경우는 git pull 을 사용해서 변경된 내용을 내 로컬로 병합한 뒤 다시 git push 로 깃허브에 올려 놓는다.
> 만약 깃허브의 추가된 커밋이 필요 없고 내 로컬의 작업만 강제로 등록한다면 git push -f 옵션을 사용한다.
( -f 옵션을 사용하면 이전의 깃허브 기록이 내 기록으로 강제로 바뀐다 )
실습 예제
1. 실습 풀이
작업 디렉토리 생성 및 깃허브 원격지 등록
깃에 add, commit 진행 후 깃허브에 push
2. 실습 풀이
각 브랜치 생성 후 필요한 파일 생성
master 브랜치로 변경 후 각 브랜치의 내용 merge 하여 합친 뒤 깃허브에 푸쉬
정상적으로 깃허브에 푸쉬된 모습
3. 실습 풀이
testdir 에 클론 받아오기
클론으로 받아온 프로젝트 디렉토리로 이동, project.txt 에 내용 추가
project.txt 에 "공통기능 추가" 문구 추가
4. 실습 풀이
masterdir 로 돌아와 제일 처음 커밋 로그로 돌린 뒤 깃허브에 강제 푸쉬
깃허브에 강제 푸쉬 되어서 project.txt 빼고 다 날아간 모습
5. 실습 풀이
testdir 의 작업 내용을 깃허브로 push
푸쉬된 내용 깃허브에서 확인
다시 masterdir 로 이동하여 testdir 에서 push 한 내용 pull 로 당겨오기 및 서로 로그가 동일한지 확인
깃이 텍스트 명령어 입력 방식인데 반해, 깃허브는 그래픽 유저 인터페이스(GUI)를 제공한다.
깃허브는페이스트빈(pastebin)과 유사한 서비스인 기스트(Gist)와위키를 각 저장소마다 운영하고 있으며, 깃 저장소를 통해 고칠 수 있다.
Git 과 GitHub 의 HTTPS를 사용한 연동방법
1. GitHub 회원가입
2. GitHub에 Repository 생성
3. Git 과 GitHub 가 연동되어 있는지 확인
현재 연동된 것이 없으니 아무것도 출력되지 않음
4. 원격지 연결 후 확인
GitHub 의 repository 주소로 원격지 연결 후 원격지를 확인 ( 원격지 주소를 test123 이라는 별칭으로 사용하겠다는 뜻 )
5. 원격지 삭제 방법
remote rm 을 사용하여 삭제 후 확인 ( 원격지 별칭으로 삭제 )
6. 원격지를 origin 이라는 별칭으로 등록
깃허브에서 HTTPS 주소를 확인origin 이라는 별칭을 주로 사용하기 때문에 test123을 삭제하고 origin 으로 설정 및 원격지 등록
7. 파일 생성 후 git 에 등록
git add --all 옵션으로 해당 디렉토리의 모든 내용을 git 에 등록
8. 커밋
커밋 이후 vi 창이 나오게 되는데 이때, 커밋 메세지를 vi 에 남긴 후 저장하면 된다, 만약 커밋시 -m 옵션을 사용한다면 간편하게 메세지를 남길 수 있다
9. git 상태와 로그 확인
git log --oneline 옵션으로 한줄로 간략하게 확인 가능
10. git 에 등록된 내용을 GitHub 에 푸쉬 및 오류
최초로 깃허브에 푸쉬할땐 -u 옵션을 사용해야 한다, 뒤에 origin은 origin 이라는 별칭의 레포지토리 주소로 푸쉬한다는 뜻 ( 403 에러는 학원 pc에 기존에 사용하던 계정이 등록되어 있기 때문, 자격 증명 관리자 - Windows 자격 증명 - 일반 자격 증명 목록에 등록된 깃허브 계정을 삭제해주면 된다. )
※ 깃허브에 최초 푸쉬할때 -u 옵션을 사용해야 하는 부분은 꼭 기억하기 ※
11. 푸쉬 및 확인
정상적으로 푸쉬가 진행되면 깃허브 로그인 창이 출력되며 로그인 하게 되면 정상적으로 등록된 repository에 파일이 푸쉬된다.git 상태와 로그 확인푸쉬된 파일은 GitHub 에서 확인 가능
12. 연습
file02.txt 생성 및 git 에 등록, add 에 ./ 은 --all 옵션과 같은 의미커밋 및 상태 확인 ( 커밋 시 메세지를 -m 옵션으로 작성할 때 공백이 없으면 " " 를 사용할 필요가 없음 )원격지(origin) 에는 file01 까지 커밋되었음, 로컬(HEAD) 에는 file02 가 커밋되었음원격지에 이미 파일을 한번 push 했기 때문에 커밋 시 -u 옵션을 사용하지 않아도 됨원격지에 올라간 파일 확인
Git 과 GitHub 의 ssh를 사용한 연동방법
1. ssh 를 사용해보기 위해 repository 를 하나 새로 생성하였음
2. ssh 키 생성
ssh 키 생성위치 : /c/Users/user/.ssh/id_ed25519
3. ssh 키 확인 및 복사
퍼블릭 키(id_ed25519.pub) 파일을 열어서 확인 후 키 복사
4. 깃허브에 ssh 키 등록
우측 상단 내 프로필 아이콘 클릭 - settings - SSH and GPG keys - New SSH key 클릭Title : 키 이름 입력, Key : 복사한 키 값 입력 후 Add SSH key 클릭
5. 새로운 폴더 생성 후 깃에 등록 및 원격지 등록
아까 원격지는 HTTPS 주소로 등록했다면 이번에는 SSH 주소로 등록한다
6. 파일 생성 후 커밋
test01.txt 파일 생성 후 git 에 커밋
7. 푸쉬 후 확인
새로 생성한 repository 에 최초 푸쉬이기 때문에 -u 옵션 붙여서 푸쉬, 푸쉬하고 계속 사용할건지 묻는 입력창에 yes 입력 후 엔터푸쉬된 내용 git log 를 통해 확인 및 깃허브 웹에서 확인깃허브 웹에서 파일 정상적으로 올라간 것 확인
8. 연습
파일 생성 및 깃에 커밋로그 확인, 깃허브에 푸쉬, 로그 확인깃허브에서 푸쉬된 파일 확인
.gitignore
- 깃, 깃허브에 파일을 커밋 또는 푸쉬할때 예외 파일을 설정하는 설정파일
( 깃에 파일을 전체 커밋하게 될때 .gitignore 를 생성하여 설정하면 커밋할 때 해당 파일이 올라가지 않음 )
※ 위 사이트에서 사용하는 개발 환경 및 프로그래밍 언어를 확인하여 ignore 파일로 미리 등록을 해야 설정파일이 커밋되지 않는다 ※
예를 들어 java를 검색하면 위와 같은 화면이 출력되는데 .gitignore 파일에 해당 내용을 넣어주면 된다
( *.class, *.log 등 와일드 카드를 사용하여 해당 확장자를 가진 설정파일을 모두 배제한다 )
.gitignore 사용법
1. 테스트용 파일 생성 및 .gitignore 파일 생성(숨김파일)
2. .gitignore 파일 vi 편집기로 열기
3. vi 편집기로 .gitignore 파일에 test03.txt 입력 ( i 혹은 o 로 입력 ) 후 저장 ( :wq )
4. git status 로 확인
git status 로 확인해보니 기존에 출력되던 test03.txt 가 출력되지 않음
5. git 에 등록되어 있는 파일 해제 후 .gitignore 파일로 등록
깃에 test04.txt 파일을 등록 후 .gitignore 파일을 vi 편집기를 사용하여 test04.txt 파일을 ignore 파일로로 등록해도 이미 파일이 선 등록 되어 있기 때문에 등록된 파일이 빠지지 않음 > 깃에 등록된 파일을 등록 해제하니 git status 로 상태를 확인하니 test04.txt 가 정상적으로 ignore 파일로 등록되었음
6. .gitignore 파일 내용 전부 삭제 후 확인
vi 편집기로 .gitignore 파일을 비웠음이후에 등록되어 있던 test03.txt 파일과 test04.txt 파일 모두 정상적으로 올라오는 것 확인
깃에 한번에 커밋과 add 를 모두 진행하는 방법
-am 옵션을 사용해서 add 와 커밋을 동시에 진행 ( 최초 커밋 파일에는 사용 불가 )abcd 파일을 커밋 ( -am 옵션을 사용하기 위해 )abcd 파일을 한번 커밋한 이후 내용을 수정하면 -am 옵션을 사용하여 바로 add 와 커밋을 진행할 수 있다. > 이후에 깃허브에 푸쉬해야 함
깃에 add 된 파일을 모두 함께 커밋하는 방법
add로 추가한 파일들은 git commit 뒤에 파일명을 따로 지정하지 않으면 한꺼번에 커밋이 된다. > 이후 깃허브에 푸쉬해야 함
실습 예제
1. GitHub 에 quiz02 repositories를 만드시오.
2. 현재 위치 이전으로 가서 quiz02 폴더를 생성하고 test01, test02, test03 파일을 만들고 git add --all 까지 진행 후 test02 파일은 Staging Area 에서 제외시키고 test01, test03 을 commit 하고 push 까지 진행하시오. ( 배제된 test02 파일은 .gitignore 에 작성하여 배제 시켜준다 )
3. 현재 위치에서 a, b, c 디렉터리를 만들고 각 디렉터리 아래 a/a.txt, b/b.txt, c/c.txt 파일을 생성하고 git add -all 명령을 진행한다. 이후 add 에 올라가 있는 b 디렉터리는 add에서 제외시킨 후 .gitignore를 이용해 깃 관리에서 배제 후 commit 을 하고 push 까지 진행한다. 결과는 GitHub 에 a, c 디렉터리만 올라가게 된다.
4. 최종 GitHub 에 올라가는 내용은 test01, test03, a, c 만 올라가게 된다
1. quiz02 repositories 생성
New 클릭repository 이름을 quiz02 로 생성
2. 예제 풀이
현재 위치 이전으로 이동quiz02 디렉토리 생성 및 이동test01, test02, test03 파일 생성git 관리 디렉토리로 설정 및 원격지 등록된게 있는지 확인원격지 등록 및 확인.gitignore 파일 생성 및 vi 편집기로 편집.gitignore 에 test02 파일 설정.gitignore 파일에 test02 를 등록하여 status에서 나오지 않음git add --all 로 test02 파일을 제외한 모든 파일 Staging Area 에 등록git 에 커밋GitHub 에 푸쉬하려 하였으나 최초 푸쉬에 -u 옵션을 사용하지 않아 푸쉬되지 않음, -u 옵션과 푸쉬될 원격지를 입력하여 푸쉬완료git 상태와 로그 확인GitHub 에 정상적으로 파일 푸쉬된 것 확인
3. 예제 풀이
현 위치 확인 후 디렉토리 생성 및 파일 생성디렉토리 내부 파일생성 확인git add --all 명령어로 모든 파일 Staging Area 로 등록b 디렉토리를 add 에서 제외.gitignore 파일에 b 디렉토리 등록vi 로 b 디렉토리 .gitignore 파일에 등록 후 status 에서 b 디렉토리가 표시되지 않음모든 파일이 이미 commit 된 적이 있으므로 -am 옵션 사용하여 한번에 add 와 commit 처리 후 확인
※ -am 옵션은 무조건 이미 한번이라도 commit 된 적이 있는 파일 및 디렉토리에만 사용 가능 ※
깃(Git)은 소프트웨어 개발에서 사용되는 분산 버전 관리 시스템입니다. 즉, 여러 명이 하나의 프로젝트를 개발할 때, 소스코드의 변경 내역을 추적하고 관리하여 버전을 관리할 수 있는 도구입니다. 깃은 빠른 속도와 분산 저장소를 통한 안정적인 관리, 브랜치 기능 등 다양한 기능을 제공하며, 다양한 운영체제에서 사용할 수 있습니다.
깃은 특정 시점을 저장할 수 있다. ( 프로젝트 진행 시 문제가 생겨서 롤백해야하는 경우 편리 )
프로젝트 진행 시 Git 을 각자 사용하여 작업 후 GitHub 에 프로젝트를 올려 각자 작업물을 합칠 수 있다.