GIT> git 사용법

OwlCJ·2022년 2월 5일
0

학습 메모

목록 보기
3/5

오늘은 많이 들었지만 실제로 활용을 잘 못하고 있는 git에 대해서 공부해보았는데 기초적인 것들을 정리해보려고한다. ✍🏻 git은 local 버전관리 툴이다. 소스코드의 변경사항을 버전별로 관리하게 도와주는데 상당히 유용하다. git을 학습한 후엔 git의 클라우드 기반 호스팅 서비스인 github을 사용하면 한 프로젝트의 다수의 개발자가 부분부분 개발하여 프로젝트를 완성할 수 있게 도와주는데 현재 개발자들 사이에서 필수로 사용되는 툴이다. 최근엔 github의 ai 코딩 자동 개발에 개발자들이 올려놓은 소스코드를 사용했다는 이슈 때문에 안 좋은 시선과 유저층 이탈의 사건도 겪었지만 아직까지도 가장 많이 사용되는 툴이라 학습이 필요하다.

학습 자료는 드림코더 엘리님의 영상을 참고했다.🙏🏻
드림코더 엘리님 git 강의

유튜브 초창기 부터 보고있는데 좋은 퀄리티의 강의가 많고 설명을 쉽게 해주신다.👍🏼

git의 기초설정

git config --list

위의 명령어를 터미널에서 사용해보면 현재 존재하는 모든 설정의 리스트를 한번에 확인할 수 있다.

초기 설정으로 이름과 이메일만 넣어놓아 몇줄 안 나왔다.

git config --global -e

위의 명령어를 사용하면 에디터에서도 확인할 수 있는데 본인이 확인하고 싶은 에디터를 정해 줄 수 있다. 에디터 설정방법은 다음과 같다.

git config --global core.editor "code"
git config --global core.editor "code --wait"

vsCode를 사용하고 있기 때문에 code를 설정해주었다. --wait 옵션을 넣어주면 커맨드창에서 에디터를 호출한 뒤에 에디터를 끄기 전까지는 별도의 작업을 하지 못하고 대기하다가, 에디터를 끄면 다음 작업이 가능하게 설정된다.

동일한 설정을 확인 할 수 있다.

git config --global user.name "<설정하고싶은 이름>"
git config --global user.email "<설정하고싶은 메일 주소>"

위의 명령어로 git의 이름과 메일을 설정해 줄 수 있다.

git config --global core.autocrlf <Mac 사용자 :input | Window 사용자 : true>
git config --global core.autocrlf input

나는 맥을 사용중이라 input을 사용했는데 해당 옵션이 흥미로웠다. OS에 따라 텍스트 입력값에 line feed만 들어가던지 carriage-return 값도 같이 들어가게 되는데(Windows는 텍스트 줄 바꿈시 /r/n이 끝에 들어감) git서버에 저장시에는 \n(line feed)만 넣고 저장하게끔 통일시켜 주는 옵션이다.

해당 옵션을 사용해주면 윈도우 사용자는 git의 텍스트를 받아올땐 알아서 /r(carriage-return)을 넣어주고 git의 서버에 저장할땐 빼준다. Mac사용자는 받아올 땐 그냥 받아오지만(Mac은 /n의 라인피드만 들어감으로 추가작업이 불필요). git 서버에 저장할 때는 /r을 자동으로 빼준다. (외부소스에서 받아온 소스 활용시 /r 포함 가능성 때문)

git 폴더 설정추가 & 상태확인

git init

원하는 폴더에 깃을 초기화해 초기설정을 넣어줄 수 있다. ls -al 로 확인시에 숨김 폴더로 .git폴더에 초기 설정이 들어가있는 것을 확인 가능

git status

현재 git의 상태를 파악할 수 있는 명령어이다.

또한 alias 옵션을 사용해서 특정 커맨드의 단축 커맨드도 생성할 수 있는 것은 잘 활용할 시에 아주 유용해 보이는 기능이었다.😏

git의 WorkFlow

working directory >> staging area >> git directory

처음에 파일을 만들어 작업할땐 working directory에 저장되어 있다가 어느정도 파일이 완성됬을 때 staging area 로 이동 후 commit 명령어를 사용해 git directory에 버전 히스토리가 저장된다. 그 후엔 checkout 명령어를 사용해 언제든지 원하는 버전으로 돌려 작업할 수 있다. 위의 작업들은 모두 local 환경에서 이루어지는데, PC에 문제가 발생했을 시 파일을 잃을 가능성이 있다. 그렇기에 push & pull 명령어를 사용해 github과 같은 호스팅 서버에 업로드 & 다운로드 가 가능하다. (버전 히스토리에는 파일의 SHA-1 hash값과 버전의 설명부분 메세지와 작성자 시간/날짜 등이 포함되어 기록되어 있다.)

만약 a.txt 라는 파일을 만들었다면 파일을 수정한후 git add a.txt 명령을 사용하여 staging area로 이동시켜 줄 수 있다.(새로운 내용을 파일에 추가한다면 working directory로 modified 상태로 돌아가기 때문에 다시 add해주면 된다) 혹시 staging area 에서 삭제하고 working directory로 수동으로 이동하고 싶다면 git rm --cached <file name> 을 해주면 된다.

git add * VS git add .

혹여 디렉토리에 있는 모든파일의 변경사항을 staging area로 이동하고 싶다면 다음의 명령어 들이 있다.

git add *
git add .

둘다 해당 디렉토리의 모든파일을 add 해주지만 둘에는 큰 차이점이 있다.

아스테리아(*) 은 gitignore 파일 내용과 관계없이 모든 파일을 add하고 마침표(.) 는 gitignore에 해당하는 파일들은 제외하고 add하여 준다. 평소의 상황에는 마침표를 사용해 주면 된다. gitignore 파일에는 보통 암호, log파일, build파일 과 같은 민감한 정보를 필터링 해준다. 파일 내부의 문법을 사용해 작성해주면 필터링 설정이 가능하다.

위와 같이 a.log라는 파일을 생성해두었고 여러 로그 파일들이 있다는 가정하에 *.log 명령으로 해당 디렉토리의 .log로 끝나는 파일을 전부 gitignore파일에 추가하여 주었다. 이렇게 추가가 되면 해당 파일은 git add . 로 추가되지 않는다.

git commit

마지막으로 staging area 에 git add로 추가하여 주었다면 버전 히스토리에 등록하기 위해 git commit 을 사용하면 된다.


git commit -m <"입력할 메세지">

git log로 커밋사항을 확인할 수 있다. .gitignore와 a.txt가 잘 커밋이 되었다.
상기에 .gitignore안에 a.log파일은 커밋하지 말라고 명시해두었기 때문에 add . 에 커밋되지 않았다.

git commit -am <"입력할 메세지">

working directory 에 있는 파일도 add와 함께(staging area를 스킵하고) 커밋하고 싶다면 -a 옵션을 사용할 수도 있다.

마무리

오늘은 git에 대해 학습해봤다. 명성은 익히 들었는데 배워보니 프로젝트에서 활용할 시 작업 효율성과 시간 단축에 큰 도움이 될 것 같다. 문제가 생겼을 때의 버전 복구나 디버깅에도 도움이 될 것 같고 github 사용시엔 많은 개발자들의 협업에서도 다른 사람이 실수로 파일을 변조하는 것도 막을 수 있고 장점이 많다. 자주 사용해 익혀서 잘 활용할 수 있도록 학습해야 될듯🧐

profile
ios 개발자를 목표로 성장중입니다 🧐

0개의 댓글