테스트용 폴더 세팅

테스트용 폴더 세팅

 

깃허브에 my-project 라는 repository 생성

 

깃허브와 연동 후 확인

 

테스트 파일 생성
테스트 파일 생성
깃허브에 파일들 푸쉬

 

 

 

 

 

 

 

 

 

집에서 깃허브를 통해 학원에서 작업한 파일 내려받는다고 가정

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 로 당겨오기 및 서로 로그가 동일한지 확인

 

로그 동일한 것 확인

 

a-branch 와 b-branch 를 삭제

728x90

GitHub 란?

  • 분산 버전 관리 툴인  저장소 호스팅을 지원하는 웹 서비스이다.
  • 이 텍스트 명령어 입력 방식인데 반해, 깃허브는 그래픽 유저 인터페이스(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 를 생성하여 설정하면 커밋할 때 해당 파일이 올라가지 않음 )

 

gitignore.io

Create useful .gitignore files for your project

www.toptal.com

※ 위 사이트에서 사용하는 개발 환경 및 프로그래밍 언어를 확인하여 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 된 적이 있는 파일 및 디렉토리에만 사용 가능 ※

GitHub 에 모두 푸쉬
푸쉬된 내용 GitHub 에서 확인

 

728x90

Git 이란?

  • 깃(Git)은 소프트웨어 개발에서 사용되는 분산 버전 관리 시스템입니다. 즉, 여러 명이 하나의 프로젝트를 개발할 때, 소스코드의 변경 내역을 추적하고 관리하여 버전을 관리할 수 있는 도구입니다. 깃은 빠른 속도와 분산 저장소를 통한 안정적인 관리, 브랜치 기능 등 다양한 기능을 제공하며, 다양한 운영체제에서 사용할 수 있습니다.
  • 깃은 특정 시점을 저장할 수 있다. ( 프로젝트 진행 시 문제가 생겨서 롤백해야하는 경우 편리 )
  • 프로젝트 진행 시 Git 을 각자 사용하여 작업 후 GitHub 에 프로젝트를 올려 각자 작업물을 합칠 수 있다.

 

 

 

- git 다운로드 주소 -

 

Git - Downloading Package

Download for Windows Click here to download the latest (2.43.0) 32-bit version of Git for Windows. This is the most recent maintained build. It was released 2 months ago, on 2023-11-20. Other Git for Windows downloads Standalone Installer 32-bit Git for Wi

git-scm.com

Git 은 유닉스 기반으로 동작하므로 리눅스에서 사용하는 명령어를 사용할 수 있다.

※ vi, vim 편집기 사용 가능 ※

 

 

 

 

 

 

Git 설치 후 작업 내용

1. working directory 를 깃으로 관리하게 설정 ( $ git init )

설정이 정상적으로 완료되면 현재 디렉토리 이후에 (master) 문구가 붙는다.

git init 명령어로 git으로 관리하는 디렉토리로 지정했다면 하위 디렉토리까지 다 git으로 관리하는 경로로 지정된다.

※ git으로 관리하는 디렉토리로 지정된 제일 상위 디렉토리에 .git 폴더가 생성되며 이 폴더는 경로 내 1개만 존재해야 한다 ※

※ 만약 A 라는 디렉토리 하위에 B, C 가 존재한다면 B 와 C 디렉토리는 각각 git 으로 관리하는 디렉토리로 지정할 수 있다 ※

※ 하지만 A 하위에 B, C 디렉토리가 존재할때 A 를 이미 git 으로 관리하는 디렉토리로 지정하였다면 하위의 B, C 는 자동으로 git 으로 관리하는 디렉토리로 지정되므로 추가로 지정하면 오류가 발생한다 ※

 

 

2. 파일 생성 후 해당 파일을 git 으로 관리하게끔 설정

f1.txt 파일을 생성 후 git 상태 확인

 

git add 명령어로 f1.txt 파일을 git에 저장하기 전에 staging area 로 올려놓은 후 git status 명령어로 git의 상태 확인

( 아직 commit 된게 없는 상태 )

 

 

3. commit 을 통해 변경된 내용을 확정

git commit 으로 git 에 파일을 올린 뒤 -m 옵션으로 메모를 추가

git 에 올린 뒤 git log 를 통해 커밋 내용을 확인 가능

git status 명령어로 확인해보면 이미 git 에 커밋되었기 때문에 존재하던 f1.txt 가 사라짐

 

 

 

4. user name, user email 설정

(  ※ 작업내용을 commit 하기 전에 설정해줘야 함 ※ )

git config --global user.name <유저명> 으로 유저명 설정

git config --global user.name 명령어로 현재 설정 유저명 확인

git config --global user.email <이메일> 으로 유저이메일 설정

git config --global user.email 명령어로 현재 설정 유저이메일 확인

git 에 올린 후 git 상태와 로그 확인

 

 

 

 

 

 

Git 파일 상태

 

1. Untracked : git add 를 하지 않은 상태

( git 이 변경 사항을 추적할 수 없는 상태 )

 

2. Staged : git add 를 한 상태

 

3. Unmodified : 현재 파일이 최신 커밋과 동일한 상태

 

4. Modified : 최신 커밋과 다른 내용이 있는 상태

728x90

+ Recent posts