[GitHub] 깃 생태계에 입문하신 걸 환영합니다

jul ee·2025년 3월 28일

데이터 성장기

목록 보기
2/139

🖇  Git과 GitHub
🖇  마크다운


이 글을 보고 있는 우리들에게 Git과 GitHub은 가까이할 수밖에 없는 사이일 것이다.
버전 관리를 깔끔하게 하기 위해, 여러 명이 함께 작업할 때는 협업 도구로서 필수적으로 사용된다.

따라서 이곳 Git 생태계에서 헤매지 않기 위해

Git과 GitHub의 기본 개념과 명령어,
그리고 우분투 환경에서 Git을 처음 설정하고 GitHub와 연동해 repository를 관리하는 방법을 정리했다.

이어서 README 파일 등 여러 문서를 작성할 때 자주 사용되는 마크다운 문법도 알아보았다.

이후에는 팀 단위 작업을 하면서 겪게 될 다양한 이슈들과 효율적인 Git 브랜치 전략, 협업 시 Pull Request 관리, 충돌(conflict) 해결 과정 등도 하나씩 다뤄볼 예정이다.



🖇  Git과 GitHub

[모두의 연구소] 초보자를 위한 git과 Github 시작하기
Git 공식 문서
Git 학습 참고

Git

  • 코드의 버전 기록 관리
  • 로컬 환경에서 작업하며 기록 저장

GitHub

  • Git의 버전 기록을 올려 협업할 수 있는 웹사이트
  • Repository :  로컬의 Git과 동기화를 해서 온라인으로 관리할 수 있는 원격 저장소

Git 주요 명령어

init      새로운 Git 저장소 만들기

status  Git이 추적하고 있는 로컬 저장소의 변화 확인

add        수정한 파일을 staging area에 추가

commit  staging된 파일들을 하나의 버전으로 저장

push      로컬 저장소의 commit 내용을 원격 저장소에 반영

clone    원격 저장소를 복사해서 로컬 저장소로 가져오기

pull      원격 저장소에 있는 최신 내용을 로컬 저장소로 가져오기



우분투에서 Git 시작하기

  • 로컬의 Git에 GitHub의 계정 정보 등록하기
# Git 버전 확인
$ git --version

# Git과 GitHub 연결
$ git config --global user.email "my-email@gmail.com"
$ git config --global user.name "my-username"

# 현재 Git 설정 정보 목록 출력
$ git config -l

# 참고
# .ipynb_checkpoints -> Jupyter Notebook이 자동으로 생성하는 백업 폴더

  • 내 컴퓨터에 로컬 저장소 만들고, Git으로 버전 관리 시작하기
    • 로컬 저장소는 우리가 보통 파일을 관리할 때 쓰는 디렉토리(폴더)를 말한다
$ cd ~
$ cd aiffel
$ mkdir workplace
$ cd workplace

# 새로운 Git 저장소 만들기
# .git 디렉토리 생성됨 -> 모든 로컬 저장소는 .git 디렉토리를 가진다
$ git init

[주의]  git clone 시에는 git init 사용 X  ->  .git이 중첩되어 충돌 가능성이 있음


  • README.md 파일 생성하기
# 출력 스트림을 지정하는 >>을 통해 출력 타겟을 README.md 파일로 지정
$ echo "# first-repository" >> README.md

# -> README.md 파일을 생성함과 동시에 그 파일 내에
# -> # first-repository라는 한 줄이 입력된다
# .gitignore 생성 (.DS_Store 추가)
$ echo .DS_Store >> .gitignore

  • 변경사항 저장
    • add commit
# Git이 추적하고 있는 로컬 저장소의 변화 확인
$ git status
On branch main

No commits yet

Untracked files:
    (use "git add <file>..." to include in what will be committed)
    README.md

nothing added to commit but untracked files present (use "git add" to track) 
# add: working directory에서 변경된 파일을 staging area에 추가
$ git add README.md
$ git add .  # 변경된 전체 파일 반영

# commit: staging된 파일들을 하나의 버전으로 저장(스냅샷)
$ git commit -m "commit message"

# commit 내역 확인
$ git log
# master -> main 브랜치 이름 변경하기

$ git branch
* master
$ git branch -m master main
$ git branch
* main

$ git status
On branch main
nothing to commit, working tree clean

  • GitHub에서 repository 생성하기
  • 로컬 저장소와 원격 저장소 연결하기
    • origin 원격 저장소를 지칭
# 로컬 저장소의 Git과 원격 저장소의 repository 연결
$ git remote add origin https://github.com/username/first-repository.git

  • GitHub에서 토큰 생성하기
    • 프로필 > Settings > Developer settings > Personal access tokens > Token (classic)
    • Generate new token > Generate new token (classic)
  • 로컬 저장소의 변경사항을 원격 저장소로 전송하기
    • push
    • 클라우드 환경 팁
# 로컬 저장소의 commit 내용을 원격 저장소에 반영
$ git push origin main
Username for 'https://github.com': [계정에 사용된 닉네임을 입력하세요]
Password for 'https://[이메일]@github.com': [비밀번호(토큰)를 입력하세요]

  • 원격 저장소를 로컬로 가져오기
    • 다른 디렉토리 생성 후 가져오기
    • git conle GitHub의 repository를 통째로 가져오는 명령어
# 새 디렉토리 생성
$ mkdir project
$ cd project

# 원격 저장소의 레포지토리를 복사해서 로컬 저장소로 가져오기
$ git clone https://github.com/username/first-repository.git

# 로컬로 가져온 원격 저장소를 수정해서 다시 push
$ echo "add new contents" >> README.md
$ git add README.md
$ git commit -m "new contents"
$ git push origin main

  • 로컬 저장소를 원격 저장소의 내용과 같게 업데이트
    • 로컬 저장소 ← 원격 저장소
    • pull 원격 저장소에 있는 최신 내용을 로컬 저장소로 가져오는 명령어
# workplace를 확인해 보면
# project에서 수정한 내용이 자동으로 반영되어 있지 않음
# 이때 사용하는 것이 pull

$ git pull origin main


🧐 Q.  지금까지는 collaborator로서 repository에 접근하여 협업했었는데
문득, fork하여 내 GitHub 계정으로 복사하여 접근하는 것과 어떤 차이가 있는지 궁금해졌다

그렇다면 clone과 fork는 각각 사용상의 어떤 차이가 있는 것인가

  • clone vs fork

    구분clonefork
    대상GitHub에 있는 저장소GitHub에 있는 다른 사람의 저장소
    위치내 로컬 컴퓨터로 복사내 GitHub 계정으로 복사
    권한원본 저장소에 직접 push 불가복사된 내 저장소에는 자유롭게 push 가능
    목적단순히 받아보기, 로컬 테스트프로젝트 수정 후 Pull Request 하기 위함
  • collaborator라면 clone 후 바로 작업하면 된다

    항목fork 방식collaborator 방식
    push 대상내 GitHub 저장소팀 저장소 (원본)
    PR 대상원본 저장소같은 저장소의 다른 브랜치
    권한 필요없음 (공개 저장소면 누구나 가능)반드시 초대되어야 함
    용도외부 기여자용팀/조직 내 협업


🖇  마크다운

마크다운(Markdown)

  • 코드만으로 깔끔하게 문서 작업을 할 수 있도록 개발된 언어
  • 텍스트 기반의 마크업 언어로 HTML로 변환 가능
  • 미리보기를 보면서 쓰는 것이 좋다 :)

주요 마크다운 문법

# 큰 제목 H1
## 작은 제목 H2
### 더 작은 제목 H3

**굵은 글씨**
__굵은 글씨__

*기울임 글씨*
_기울임 글씨_

***굵음 + 기울임 글씨***
___굵음 + 기울임 글씨___

~~취소선~~

문장 1␣␣↵    # 문장 뒤에 스페이스 2칸 + Enter
문장 2       # 문장 줄바꿈 (Enter만으로는 줄바꿈이 되지 않는다)

---         # 구분선

1. 내용      # 순서 있는 목록 (어떤 번호를 입력해도 내림차순으로 정의)
2. 내용

- 내용       # 순서 없는 목록 (혼합 사용 가능)
+ 내용
* 내용

- [ ]       # 빈 체크 박스
- [x]       # 체크된 체크박스

> 내용       # 인용

`코드`       # 코드 한 줄

\```         # 코드 블록 (언어 지정 가능) (``` ```)
 코드
\```

[텍스트](URL)        # 링크 삽입
![설명](이미지주소)    # 이미지 삽입

profile
AI에 관심을 가지고, 데이터로 가치를 만들어 나가는 과정을 기록합니다.

0개의 댓글