TIL 9,10

Churro.·2021년 6월 25일
0
post-thumbnail

Git 기초

Git 이란?

▶️ 개발자의 코드를 효율적으로 관리하기 위해서 개발된 ‘분산형 버전 관리 시스템’

하나하나 날짜별로 어떤 파일이 어떻게 바뀌었는지 확인 가능

이렇게 특정 시점에 생성된 백업 복사본 = 'snapshot'

스냅샷을 만들어 주는 작업 = 'commit'

Github 란?

▶️ Git Repository를 관리할 수 있는 클라우드 기반 서비스

Git Repository 란?

▶️ 저장소 (파일이나 폴더 저장해놓는 곳)

Git workflow

✔️ 온라인 상에 React의 open source code가 올라와 있는 경우 : React 의 remote repository에 source code가 올라와있다는 의미.

✔️ React 라는 이름의 프로젝트에 contribute을 하고 싶을 때 ❗️ 먼저 React 원격 저장소(remote repository)를 내 원격 저장소(remote repository)로 가지고 오는 작업이 필요. ▶️ 이 과정은 Fork

✔️ 이제 Fork 를 하고나면 나의 Remote Repository에 React 코드(source code)를 옮겨온 상태
이 코드를 수정하기 위해서는 내 컴퓨터(local repository)로 가져오는 작업이 또 필요 ▶️ 이 과정은 Clone


지금까지 내 컴퓨터에서 React 소스코드 변경 작업을 완료한 것 !


✔️ commit으로 변경 사항의 저장 기록을 남겨두는 것이 좋다. 이 변경된 내용을 commit을 통해 local repository에 저장해 준 뒤, Remote Repository에 반대로 업로드 해주는 작업 ▶️ 이 과정은 Push

(commit 과정에서, git status 명령어를 통해 staging area와 untracked files 목록에 어떤 것들이 있는지 확인 가능)

✔️ Push를 완료하고 나면 GitHub에는 Pull request라는 기능이 있어서, 내가 제안한 코드 변경사항에 대해 반영 여부를 요청할 수 있다.

📌 **terminal 명령어**

git add <파일명>: add는 파일을 commit 할 수 있는 상태로 만들어 줍니다.

git restore <파일명> : 뒤로가기. 변경사항을 폐기(discard changes) 하는 명령어. 처음 clone을 받았던 상태로 되돌리기 위해 사용.
commit되지 않은 Local Repository의 변경 사항 ( = staging area & unstaged workspace/untracked files)을 폐기할 수 있다.

git reset : 커밋 삭제

📌 **상태를 나타내는 용어**

Unmodified : 기존에 Commit했던 파일을 수정하지 않은 상태

Modified : 기존에 Commit했던 파일을 수정한 상태

Staged : commit이 가능한 상태. 수정파일을 commit 하기 위해서는 staged area에 add 하는 작업 필요

🌿

★ Git 혼자 작업 workflow

  1. [가져오기] 김코딩은 fork한 codestates 깃헙 리파지토리를 본인의 local에서 작업하려고 합니다.

    ▶️ git clone [https://github.com/kimcoding/test.git](https://github.com/kimcoding/test.git)

  1. [상태 확인] local working directory에서 index.js 파일을 추가했습니다. 기존과 변경된 파일들이 어떤 것이 있는지 확인해 보려고 합니다.

    ▶️ git status

  2. [staging area에 둠] local 의 index.js 파일을 staging area로 옮기려고 합니다. add 명령어는 commit할 수 있는 상태로 만들어줍니다.

    ▶️ git add index.js

  3. [commit 기록 남기기] 내 깃헙 리파지토리에 'index.js 수정' 이라고 커밋 기록을 남기려고 합니다.

    ▶️ git commit -m 'index.js 수정'

  4. [commit 취소] index.js 파일에서 오타를 발견했어요. 커밋한 기록을 되돌려서 이전으로 돌아가고 싶어요. 최근 1개의 commit만 삭제하려 합니다.

    ▶️ git reset HEAD~1

    ▶️ git reset HEAD^1

    ▶️ git reset HEAD^

  5. [staging area로 다시 옮기기] 수정 완료 후, 다시 index.js 파일을 staging area로 옮기기

    ▶️ git add index.js

  6. [commit 기록 다시 남기기] 아까와 같이 'index.js 수정' 이라는 메시지로 커밋 기록 남기기

    ▶️ git commit -m 'index.js 수정'

  7. 내 깃헙 origin 리파지토리의 master로 push합니다.

    ▶️ git push origin master

  8. [log 확인] 내 커밋 로그 확인하기 🚨로그 터미널 화면에서 나가려면 q

    ▶️ git log

🌿

★ Git 함께작업 workflow

  1. [Git 연결] 김코딩은 local working directory 를 Git의 관리 하에 들어가게 하려 합니다.

    ▶️ git init

  2. [remote 연결] local repository 와 remote repository 연결

    ▶️ git remote add origin <repository주소>

  3. [Push 하기] 지금까지 master branch에 commit한 기록을 내 remote repository에 올려서, 페어에게 코드를 공유해야겠어요.

    ▶️ git push origin master

  4. [remote 연결] 페어가 내 remote repository를 fork 했다고 칩시다. 페어의 remote repository에 내 local repository에 pair 라는 이름으로 등록해야겠어요.

    ▶️ git remote add pair <pair의 repository주소>

  5. [remote 확인] 현재의 Local Repository와 연결된 모든 Remote Repository 목록을 확인

    ▶️ git remote -v

  6. pair의 remote repository에 올려놓은 파일을 내 local repository로 받기

    ▶️ git pull pair master (에러 뜰 경우: git pull pair master --allow-unrelated-histories)

  7. (생략가능) 현황 확인

    ▶️ git status

  8. 받은 README.md라는 파일 내용을 nano editor 사용해 읽고 수정하기

    ▶️ nano README.md

  9. 수정 후, ctrl+X로 nano창 닫고, 작업한 사항을 commit하기 위해 먼저 staging area에 수정파일 추가

    ▶️ git add README.md

  10. 내 repository에 'change'라는 명칭으로 커밋 기록 남기기

▶️ git commit -m 'change'

🚨 여기서, pair도 README.md에 변경사항이 있다고 합니다. 내 commit을 remote에 push하기 전에 pair의 코드를 내 컴퓨터로 받아와야 합니다.

▶️ git pull pair master

앗,, 하필 pair도 파일의 동일한 라인을 수정했군요. pair가 작성한 파일과의 충돌이 발생했습니다. 그럴 땐 다음과 같이 해결 :

1. type some message
2. ctrl + c + o
3. type the file name (such as "Merge_Feature01" and press enter
4. ctrl + x 

충돌이 생긴 부분을 해결했어요! 그럼 다시 remote repository에 push하기 위해서 수정파일을 staging area에 추가합니다.

▶️ git add README.md

이제 commit을 합니다. changeTWO라는 메세지를 추가해줍니다.

▶️ git commit -m 'changeTWO'

  1. 내 깃헙에 올리기

▶️ git push origin master

🌿

느낀 점

아직은 코딩 문제 푸는게 재밌다.

계산기 만드는 것도 재밌고, function 풀 때 내가 생각하고 적은 함수가 맞으면 (잘 작동하면) 뿌듯하다.

개발을 업으로 삼게 된다면 매일매일 무언가를 이뤄냈다는 느낌을 받으면서 일할 수 있을까?

초등학생 때, 말레이시아에서 풀었던 영어 수학문제집 생각이 많이 났다. 처음에는 영어로 수학문제가 나와있는게 이해가 안돼서 풀기 힘들고 싫었지만, 꾸준히 계속 풀다보니까 이해가 되면서 나중에는 문제풀기가 쉬워지는 경지에 이르렀다. 쉬우니까 재밌었다.

이건 코딩에도 똑같이 적용될 것 같다. 과정이 쉬워지고 익숙해지면, 재밌어지겠지.

profile
I, sum of records.

0개의 댓글