11일차가 되는 날 git 기초에 대해 배우기 시작했고 그 다음날까지 git 명령어과 github 어떻게 사용하는지에 실습을 진행했다.
이제 배운 것들을 토대로 다시 정리 및 회고를 해보겠다.
Git : 개발자의 코드를 효율적으로 관리하기 위해서 개발된 '분산형 버전 관리 시스템이다. 소스코드가 변경된 이력을 쉽게 확인할 수 있으며, 특정 시점에 저장된 버전과 비교하거나 특정시점으로 되돌아 갈 수도 있다.
Github
명령어에 들어가기 앞서 fork라는 것이 있는데 이는 다른 곳에 있는 원격 저장소를 내 원격 저장소로 가져오는 작업이다.

이 사진의 오른쪽 상단을 보면 fork라는 것이 있는데 저것을 클릭하고, 내 Repository를 클릭하면 내 저장소를 폴더를 가져올 수 있다.
init
init을 하고나면 Local Repository가 생성된다.git init
clone
내 원격 저장소로 옮겨온 코드를 수정하기 위해 내 컴퓨터로 가져오는 작업이다. 이는 Remote Repository에 있는 코드를 clone해서 내 컴퓨터에 가져온다는 말이다.
git clone <Repository address>
이와 같이 입력을하면 
clone을 하게되면 username과 password입력 후 clone을 할 수 있다. 확인을 하면 폴더가 생긴 것을 확인할 수 있다.
add
- 파일을 commit할 수 있는 상태로 만들어 준다.
- 내 컴퓨터 workspace에서 작업에 들어간 파일들을 git 관리하에 있는 상태로 올려준다는 말과 같다. 올려준 영역을 staging area라고 하며 이 영역에 들어갔다면 staged file이며, 이 영역에 없다면 unstaged or untracked file이라고 한다.
git add <file name> // 내 local의 untracked file을 staging area로 추가한다 git add . // staging area에 모든 파일을 한 번에 추가한다. 단, 올리지 말아야 할 파일들이 있을 수 있으므로 주의
status
restore
- 변경사항을 폐기하는 명령어. commit되지 않은 Local Repository의 변경사항을 폐기할 수 있다.
git restore <file name>
commit
git commit -m 'commit message' or git commit
git commit만 하게 되면 commit message를 남길 창이 뜨는데 거기에서 규격에 잘 맞게 commit message를 잘 작성하여 종료하면 바로 commit된다.
reset
- Local에서 commit한 내용을 취소할 때 사용한다.
- Remote Repository에 업로드 되지 않고, Local Repository에만 commit을 했다면 취소가 가능하다.
git reset HEAD^ or git reset HEAD
push
상황에 따라git push <origin> <branch> // origin master, origin main을 많이 활용한다.
git push 뒤에 오는 명령어는 바뀔 수 있다.
log
git log
제일 위에 오는 commit이 제일 최근의 commit이다.remote
git remote add origin <Repository address> : 나의 Remote Repository에 연결한다.git remote add <other alias> <Repository address> : other의 Remote Repository에 연결한다.git remote -v : Local Repository와 연결된 Remote Repository를 확인할 수 있다.
pull
- Remote Repository의 작업 내용을 내 Local Repository로 가져온다.
- 받아오는 내용은 자동으로 병합(merge)되지만 conflict가 나는 경우가 있다. 그 때는 조치를 취해줘야 한다.
git pull <shortname> <branch> // remote repo의 해당 branch 내용을 local로 가져온다.
1개의 파일이 바뀌었으며, 2개의 삽입이 있다고 알려준다.README.md가 바뀐 것을 알 수 있다.
충돌 해결하기
git status 명령어를 통해 어떤 파일이 충돌하고 있는지 확인할 수 있다.git commit을 하면 메시지가 생성되지만 이도 원래 commit과 같이 -m옵션을 주어 메시지를 수정할 수 있다.
question.txt에서 conflict가 발생했고 이로 인해 자동 병합이 안된 모습이다.
수정 후 과정을 거치니 제대로 push가 되는 상황이다.이와 같이 git에 대해 배우고 실습을 진행했으며, 꽤 어려움도 있었고 집중하면서 할 수 있었던 것 같다.
이번 주는 내가 배우던 것과 많이 달랐던 것들을 배웠다. html이며 css며 CLI, git 등을 배웠다. 저번 주에 비해 내가 많이 모르는 것들을 해보니 시간도 많이 걸리고 이해하는데 어려움이 있었던 것 같다. 아직도 초반이라 기초 중에 기초들을 배웠는데 배운 것들을 바로 적용하는데 어려움은 없었지만 또 그렇다고 쉽게 바로 적용시키진 못했던 것 같다. 특히 이번 주에 배운 것들을 가지고 꽤 오랫동안 배울 것 같은데 기초를 튼튼히 해야 앞으로 배우는 것에 있어서 어려움이 그나마 덜 수 있을 것 같다. 새로운 것들을 배울 수 있는 좋은 한 주 였던 것 같다. 물론 좋은 페어분들을 만나서 잘 진행할 수 있었던 것도 크다. 다음 주에도 어려움은 있을 것이지만 잘 이겨내서 내것으로 만들고 싶다!!