본문 바로가기
AI, 논문, 데이터 분석

[GitHub] add, commit, push, pull

by doraemin_dev 2025. 1. 15.

DevOps란?

원칙

① 고객중심으로 활동하기 ② 끝을 염두에 두고 만들기 ③ 처음부터 끝까지 책임지기 ④ 완전히 독립적으로 다수의 역할로 일하는 자율 팀 ⑤ 지속적으로 개선하기 ⑥ 모든 것을 자동화하기

지속 통합 (CI), 지속 제공 (CD, 출시)

  • CI(Continuous Integration) ① 개발 단계에서 사용 ② 자동화된 코드 빌드 및 테스트 ③ 커밋 → 변경검증 + 자동패키징
  • CD(Continuous Delivery) ① 제공 단계 자동화 ② 트리거를 통한 자동 배포 ⑤ 운영 환경으로 자동 게시

 

[실습] Git Hub Repository 생성하기

 

Source Control Management (SCM)

버전 제어

  1. 팀 개발 프로젝트를 위한 핵심 도구
  2. 코드 개발에서의 협업과 변경 추적
  3. 강력한소스 코드 버전 관리 도구, Git
  • 개발 머신에서 소스 리포지토리 사본 유지
  • 로컬에 모든 브랜치와 이력 정보 유지
  • 로컬과 소스 리포지토리 사이의 변경 공유
  • 네트워크 없이 로컬에서 변경 커밋과 버전 제어 가능
  • 개발 머신에서 브랜치 생성 및 병합, 게시, 폐기 가능

Git 워크플로

  1. 프로젝트의 리포지토리 만들기
  2. 로컬에리포지토리복제
  3. 로컬에 새 파일 만들고 변경 저장
  4. 원격 리포지토리에 변경 push
  5. 원격의변경사항을로컬로 pull
  6. 변경을 로컬 리포지토리와 병합

[실습 1] Git Basic ; add, commit, push, pull

#1. git 설치
https://git-scm.com/downloads/win
git --version

#2. 원격 리포지토리 로컬 복제
cd c:\lab\day6\
mkdir project
cd project

# git clone https://github.com/chatgptkor/guestbook.git
git clone https://github.com/doraemon49/SKT_FLY_AI-guestbook.git

#3. VSCode에서 프로젝트 수행
guestbook.zip 압축 풀고 내용 2번 단계에서 클론한 guestbook 폴더에 복사

#4. Author identity config
git config --global user.email "chatgptkor@outlook.com"
git config --global user.name "chatgptkor"
git config --global user.email "min1593@nate.com"
git config --global user.name "doraemon49"

#5. 작업을 로컬에 저장
cd guestbook
git add .
git commit -m “initial upload”

#6. 원격 리포지토리에 작업 저장
git push

*필요시 GitHub Sign in: [Sign in with your browser]

#7. GitHub에서 header.ejs 직접 수정 
Express Guestbook --> SKT 방명록

#8. 원격 리포지토리의 모든 업데이트 확인
git pull
더보기
PS C:\lab> git --version
git version 2.47.1.windows.2
PS C:\lab> cd day6
PS C:\lab\day6> mkdir project


    디렉터리: C:\lab\day6


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----      2025-01-16  오전 10:33                project


PS C:\lab\day6> cd project
PS C:\lab\day6\project> git clone https://github.com/doraemon49/SKT_FLY_AI-guestbook.git
Cloning into 'SKT_FLY_AI-guestbook'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (4/4), done.

PS C:\lab\day6\project> cd SKT_FLY_AI-guestbook
PS C:\lab\day6\project\SKT_FLY_AI-guestbook> git config --global user.email "chatgptkor@outlook.com"
PS C:\lab\day6\project\SKT_FLY_AI-guestbook> git config --global user.name "chatgptkor"

PS C:\lab\day6\project\SKT_FLY_AI-guestbook> git add .
warning: in the working copy of 'app.js', LF will be replaced by CRLF the next time Git touches it
warning: in the working copy of 'bin/www', LF will be replaced by CRLF the next time Git touches it
warning: in the working copy of 'package-lock.json', LF will be replaced by CRLF the next time Git touches it
warning: in the working copy of 'package.json', LF will be replaced by CRLF the next time Git touches it
warning: in the working copy of 'public/stylesheets/style.css', LF will be replaced by CRLF the next time Git touches it
warning: in the working copy of 'routes/index.js', LF will be replaced by CRLF the next time Git touches it
warning: in the working copy of 'routes/users.js', LF will be replaced by CRLF the next time Git touches it
warning: in the working copy of 'views/404.ejs', LF will be replaced by CRLF the next time Git touches it
warning: in the working copy of 'views/error.ejs', LF will be replaced by CRLF the next time Git touches it
warning: in the working copy of 'views/footer.ejs', LF will be replaced by CRLF the next time Git touches it
warning: in the working copy of 'views/header.ejs', LF will be replaced by CRLF the next time Git touches it
warning: in the working copy of 'views/index.ejs', LF will be replaced by CRLF the next time Git touches it
warning: in the working copy of 'views/new-entry.ejs', LF will be replaced by CRLF the next time Git touches it
PS C:\lab\day6\project\SKT_FLY_AI-guestbook> git commit -m "initial upload"
[main 3a99766] initial upload
 15 files changed, 660 insertions(+), 1 deletion(-)
 create mode 100644 Dockerfile
 create mode 100644 app.js
 create mode 100644 bin/www
 create mode 100644 package-lock.json
 create mode 100644 package.json
 create mode 100644 public/stylesheets/style.css
 create mode 100644 routes/index.js
 create mode 100644 routes/users.js
 create mode 100644 views/404.ejs
 create mode 100644 views/error.ejs
 create mode 100644 views/footer.ejs
 create mode 100644 views/header.ejs
 create mode 100644 views/index.ejs
 create mode 100644 views/new-entry.ejs
 
PS C:\lab\day6\project\SKT_FLY_AI-guestbook> git push
info: please complete authentication in your browser...
Enumerating objects: 24, done.
Counting objects: 100% (24/24), done.
Delta compression using up to 8 threads
Compressing objects: 100% (18/18), done.
Writing objects: 100% (22/22), 8.24 KiB | 766.00 KiB/s, done.
Total 22 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0)
remote: Resolving deltas: 100% (1/1), done.
To https://github.com/doraemon49/SKT_FLY_AI-guestbook.git
   bcee086..3a99766  main -> main
 
PS C:\lab\day6\project\SKT_FLY_AI-guestbook> git pull
Already up to date.

PS C:\lab\day6\project\SKT_FLY_AI-guestbook> git pull
remote: Enumerating objects: 7, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 3), reused 0 (delta 0), pack-reused 0 (from 0)
Unpacking objects: 100% (4/4), 1011 bytes | 48.00 KiB/s, done.
From https://github.com/doraemon49/SKT_FLY_AI-guestbook
   2a63f00..fbf990a  main       -> origin/main
Updating 2a63f00..fbf990a
Fast-forward
 views/header.ejs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

 

Git 다운로드.

내 repository url을 가져와서 clone하기.

Git add, commit, push 진행하기. push 할 대, 로그인 필요 시 [Sign in with your browser]

https://git-scm.com/downloads/win

 

Git - Downloading Package

Download for Windows Click here to download the latest (2.47.1(2)) 64-bit version of Git for Windows. This is the most recent maintained build. It was released on 2025-01-14. Other Git for Windows downloads Standalone Installer 32-bit Git for Windows Setup

git-scm.com

 

 

이번엔, GitHub 페이지에서 코드를 수정해보자.

'수정' 버튼을 누르고, 내용을 수정하고 'Commit changes...'를 누르고, (무엇이 수정되었는지 내용을 작성하고) 저장을 위한 'Commit changes' 누하면 코드가 변경되어 있다.

터미널에서 'git pull'을 치면, 방금 수정한 코드들을 가지고 온다. 코드가 변경된 것을 확인할 수 있다.


[실습 2] Git Branch ; 새로운 Branch 'dev'를 만들고 올리고 'main'과 합치기

#1. 새로운 브랜치 만들고 전환하기
git branch dev
git checkout dev
--- 한 번에 ----
git checkout -b dev

#2. 로컬 브랜치를 원격 저장소에 새 브랜치 생성 (새 브랜치 dev에 main에 있던 내용들 push)
 git push origin dev

#3. 새로운 기능 작업 수행
header.ejs: Write in the guestbook --> SKT FLY AI 방명록

#4. 로컬에 작업 저장
git add .
git commit -m “update from dev”

#5. 원격 리포지토리 브랜치에 작업 저장 (처음에 push 할 때만, '--set-upstream' 필요. 나중에는 안 적어도 된다.)
git push --set-upstream origin dev

#6. 작업을 병합할 브랜치로 전환 (방금 dev에 수정한 내용을, main에도 적용시켜보자.)
git checkout main

#7. 작업한 브랜치를 병합할 브랜치로 병합 후 원격 리포지토리에 저장 
git merge dev

git push
더보기
PS C:\lab\day6\project\SKT_FLY_AI-guestbook> git checkout -b dev
Switched to a new branch 'dev'
PS C:\lab\day6\project\SKT_FLY_AI-guestbook> git push origin dev
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
remote: 
remote: Create a pull request for 'dev' on GitHub by visiting:
remote:      https://github.com/doraemon49/SKT_FLY_AI-guestbook/pull/new/dev
remote:
To https://github.com/doraemon49/SKT_FLY_AI-guestbook.git
 * [new branch]      dev -> dev
 
 PS C:\lab\day6\project\SKT_FLY_AI-guestbook> git add .
PS C:\lab\day6\project\SKT_FLY_AI-guestbook> git commit -m "update from dev"
[dev efc4c88] update from dev
 1 file changed, 1 insertion(+), 1 deletion(-)
PS C:\lab\day6\project\SKT_FLY_AI-guestbook> git push --set-upstream origin dev
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 348 bytes | 348.00 KiB/s, done.
Total 4 (delta 3), reused 0 (delta 0), pack-reused 0 (from 0)
remote: Resolving deltas: 100% (3/3), completed with 3 local objects.
To https://github.com/doraemon49/SKT_FLY_AI-guestbook.git
   fbf990a..efc4c88  dev -> dev
branch 'dev' set up to track 'origin/dev'.

PS C:\lab\day6\project\SKT_FLY_AI-guestbook> git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.

PS C:\lab\day6\project\SKT_FLY_AI-guestbook> git merge dev
Updating fbf990a..efc4c88
Fast-forward
 views/header.ejs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
PS C:\lab\day6\project\SKT_FLY_AI-guestbook> git push
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
To https://github.com/doraemon49/SKT_FLY_AI-guestbook.git
   fbf990a..efc4c88  main -> main