FUNDAMENTAL | 03-1. Git, GitHub

yeonk·2021년 9월 11일
0

aiffel-ai-bootcamp

목록 보기
5/38
post-thumbnail

20210909



🤝추천 협업 툴

슬랙(Slack): https://slack.com/
노션(Notion): https://www.notion.so/
트렐로(Trello): https://trello.com/
Google Meet:https://meet.google.com/






😳오늘의 학습


출처: AIFFEL FUNDAMENTAL_SSAC2 2. 개발자를 위한 필수교양






1. GitHub

코드를 다루는 개발자들이 편리하게 협업하기 위한 도구

commit: 코드를 다루었거나 개발과 관련된 문서 작업 등을 했다는 뜻
(커밋을 통해 잔디를 심을 수 있다 ㅎ)

GitHub는 커밋 뿐만 아니라 개발자들이 코드를 오픈소스로 공유하고, 한 팀을 이루어 개발을 진행할 때 복잡한 코드 버전들을 효율적으로 관리하기 위한 호스팅 사이트이다.

지옥에서 온 Git



Git & GitHub

Git: 소스코드가 업데이트 되는 버전을 기록해두고 관리할 수 있는 소스코드 버전 관리 시스템

GitHub: Git으로 관리하는 프로젝트를 호스팅하고, 시간과 공간의 제약 없이 협업할 수 있는 온라인 서비스

GitHub 가입






2. 우분투와 Git



버전 확인

$ git --version






계정 정보 등록

$ git config --global user.email "my-email@gmail.com"
$ git config --global user.name "my-username"






config 정보 확인 및 버전 관리 시작하기

$ git config -l






로컬 저장소 생성

$ cd ~
$ mkdir workplace

$ cd workplace

$ git init

$ ls -a
.  ..  .git
$ cd .git
$ ls 
HEAD  branches  config  description  hooks  info  objects  refs






README.md 파일 생성

README.md: GitHub 레파지토리의 대문 역할을 하는 파일 (md는 markdown 파일 지칭).

$ cd ~/workplace 
$ echo "# first-repository" >> README.md

$ ls
README.md

$ cat README.md #파일 작성 내용 확인
# first-repository






버전 변화 확인

$ 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) 






git에 변경사항 저장하기

add: 변화를 기록하기 위한 준비 단계.
staging 한다, 또는 stage에 올려둔다는 등의 표현을 사용.
본격적인 스냅샷(snapshot)을 찍기 전에 임시로 올려두는 개념

commit: 실제로 특정 순간의 버전을 스냅샷으로 확정시켜 남겨두는 역할

Git 저장소 생성 및 커밋

git 간편 안내서

$ git add README.md
$ git commit -m “new readme file” #-m은 메세지 옵션
[master (root-commit) 438a37c] new readme file 
    1 file changed, 1 insertion(+)
    create mode 100644 README.md






로컬 저장소와 원격 저장소 연결

repository 생성

토큰 생성

브랜치

$ cd ~/workplace
$ git remote add origin https://github.com/xxx/first-repository.git #자신의 username 추가


$ git config credential.helper store
$ git push origin main
Username for 'https://github.com': [계정에 사용된 이메일을 입력하세요]
Password for 'https://[위에 입력한 이메일]@github.com': [비밀번호(토큰)를 입력하세요]
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 230 bytes | 230.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/jeina7/first-repository.git
    * [new branch]      master -> master



이 단계에서 정말 고생했다😂
일단 main으론 안 먹혀서 master로 하니까 됐다.
큰 산 하나 넘었더니 .. 갑자기 패스워드 치려는데 글씨가 안써지는 것.. ㅠ
혼자 해결해보려고 끙끙대다가 같은 팀원분들이랑 퍼실님께 질문했는데 단박에 해결..

안써지는게 아니라.. 안보이는 것이었다ㅜ ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
나는 왜 엔터를 안쳐본거야.. ㅠ

부끄럽고 내 바보같음에 어이 없었지만 해결한 기쁨에 이 감정들은 빠르게 사라졌다 🤣






원격 저장소 파일 로컬로 가져오기

$ cd ~
$ mkdir project
$ cd project

$ git clone https://github.com/xxx/first-repository.git #자신의 username 입력
Cloning into 'first-repository'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.

$ ls
first-repository

$ cd first-repository
$ ls
README.md

$ cat README.md
# first-repository






수정 파일 push & pull

# 수정하기

$ echo "add new contents" >> README.md


# 내용 확인

$ cat README.md
# first-repository
add new contents


#상태 확인

$ git status
On branch master
Changes not staged for commit:
    (use "git add <file>..." to update what will be committed)
    (use "git restore <file>..." to discard changes in working directory)
    modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")


# add * commit

$ git add README.md
$ git commit -m “new contents”
[master c82640d] new contents
    1 file changed, 1 insertion(+)


#원격 저장소로 보내기

$ git push origin main
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 276 bytes | 276.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/jeina7/first-repository.git
    438a37c..c82640d  master -> master    


#로컬, 원격 저장소 내용을 같게 업데이트 하기

$ git pull origin main
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/jeina7/first-repository
    * branch            master     -> FETCH_HEAD
    438a37c..c82640d  master     -> origin/master
Updating 438a37c..c82640d
Fast-forward
    README.md | 1 +
    1 file changed, 1 insertion(+)


# 확인하기

$ cat README.md
# first-repository
add new contents

0개의 댓글