soju study 1주차

thousand_yj·2022년 12월 27일
0

soju 스터디

목록 보기
1/7
post-thumbnail

git

git의 모든 기능을 잘 수행할 수 있도록 터미널을 사용하여 먼저 써보는 것을 추천한다.

git의 형태

git [명령어] -옵션 의 형태로 사용한다.

git을 처음 셋팅하면 가장 먼저 config 작업을 해주자

  • git config user.name
  • git config user.email
리눅스, 윈도우 간의 개행문자를 주의하자

git 시작하기

디렉토리를 새롭게 만들어준뒤, 시작하고자 하는 디렉토리에서 git init 명령어를 사용하여 초기화해준다.

  • git master 브랜치가 기본적으로 생성된다.

git workflow

git은 기본적으로 소스코드를 버전별로 관리하는 툴이다. 따라서 다음의 3단계로 나눠 소스코드를 관리한다.

  • working directory
  • staging area
  • .git directory

working directory : 말 그대로 수정이 되고 있는, 작업중인 소스코드가 있는 공간이다.
staging area : 어느정도 수정이 완료되어 해당 영역까지의 변화를 기록해둔 상태이다. 여기에서 commit을 통해 현재 상태를 저장한다.
.git directory : commit 메세지와 소스코드를 갖고 있는 공간이다.

여기까지만 작업하면 나의 로컬 환경에서만 버전 관리가 이루어지고 있기 때문에, 우리는 보통 github와 같은 원격 저장소에 push를 통해 업로드한다.


git 명령어

git add / git rm --cached

  • working directory -> staging area (staging) : git add <파일명>
  • staging area -> working directory (unstaging): git rm --cached <파일명>

(git status -h 옵션을 사용하여 자세한 정보를 체크해볼 수 있다)

git ignore

프로젝트를 하다보면 git으로 관리하고 싶지 않거나, 추가하고 싶지 않은 요소가 있을 수 있다. 해당 요소는 .gitignore 파일에 작성하면 git은 더이상 해당 파일을 tracking하지 않는다.

git diff

어떤 파일이 수정되었는지 체크해볼 수 있는 명령어

git diff --staged 와 같이 옵션을 주게 되면 stage 영역에 있는 요소들의 변화를 캐치해줄 수 있다.
(staged와 cached는 동일힌 키워드로서 작동한다!)

git commit

stage영역에 있는 파일을 업로드하는 명령어이다.
git commit -am "commit msg"의 경우, -a : 모든 파일을 -m : 다음의 메세지로 commit한다는 뜻

git log

다양한 옵션을 통해 원하는 형태의 로그를 출력하는 기능

git reset [커밋아이디]

특정 커밋까지의 이력을 초기화하는 기능. 바로 전이나 n번 전까지의 작업 내용을 취소할 수 있으며 이력이 지워지기 때문에 주의해서 사용해야 한다.

git revert

특정 커밋을 취소하는 새로운 커밋을 만드는 기능.


branch

기능 및 작업 별로 분기를 나눠서 진행하고자 하는 경우가 있을 수 있다. 또한 동일한 파일을 수정했을 때 충돌이 발생할 수 있으며 그 부분을 해결하는 과정은 상당히 머리가 아파온다...

이런 문제를 해결할 수 있는 방법이 바로 branch이다. 고유의 작업 공간을 가지고 있어 서로 영향을 받지 않고 동일한 파일을 수정해도 문제가 없으며, 특정 브랜치의 작업이 완료되면 수정 사항을 다른 브랜치에 합칠 수 있다.

git switch -c <브랜치 이름>

새로운 브랜치를 생성하는 명령어

git switch <브랜치 이름>

특정 브랜치로 이동하는 명령어

git merge

브랜치를 합치는 명령어

git swtich main
git merge <합치고자하는 브랜치명>

위의 명령을 수행하면 main 브랜치에 다른 브랜치를 병합할 수 있다.

conflict

같은 파일의 동일한 위치를 수정하는 등 자동으로 병합이 불가능한 경우 충돌(conflict)가 발생한다.

충돌이 발생한 경우 출돌을 해결하고 커밋을 하거나, 머지 작업을 취소(git merget --abort)할 수 있다.

충돌이 발생한 경우 어느 부분에서 충돌이 발생하였는지 알려주기 때문에 개발자 본인이 직접 보고 맞는 코드만 남기고 충돌되는 부분을 지워 다시 커밋을 해야한다.


Github 사용하기

지금까지는 내 컴퓨터 즉, 로컬환경에서 소스코드 버전 관리를 했다면 그 사항을 원격 저장소에 저장하는 것이 안전할 것이다. 이 서비스를 제공하는 github은 단순 저장소의 기능 뿐만 아니라 이슈 관리, 코드 리뷰 등 다양한 기능을 제공한다.

github repo 연결하기

깃허브에 가입하여, 하나의 저장소에 해당하는 레포지터리를 생성한다. 레포지터리가 생성되고 나면 로컬에서 만들었던 저장소를 이 원격 저장소(레포지터리)에 push하면 된다.

단순히 push를 해서는 안되고, 먼저 우리의 로컬 저장소와 원격 저장소를 연결해야 한다.

git remote add <name> <url>
git push -u origin main

위 코드는 다음의 과정이다,
1. main 브랜치에 원격 저장소를 origin(기본)으로 설정한다.
2. 메인 브랜치를 main으로 설정한다.
3. 설정한 원격 저장소에 로컬 저장소의 모든 커밋을 푸시한다.

github repo에서 받아오기

git clone <레포 주소> 기능을 사용하여 원격 저장소의 코드를 내려받을 수도 있다.

github repo에 저장된 내용 가져오기

여러 명의 개발자와 협업을 하다보면 내 로컬저장소의 코드와 원격저장소의 코드가 다를 수 있다. 따라서 작업을 시작하기 전, 먼저 원격 저장소에서 가장 최신 코드를 가져온 뒤 코딩을 시작하도록 하자. git pull 명령어를 사용한다.


vercel

vercel을 사용하여 깃헙 레포를 배포했다!


컨페티가 펑펑 터지면서 배포가 끝났다고 나오는 화면을 캡처하지 못해 아쉽다.

에러가 발생하여 구글링을 열심히 해봤더니 package.json에 나의 노드 버전을 적어주었더니 해결됬다. Error: error:0308010C:digital envelope routines::unsupported 이 에러였다.

"engines": {
    "node": "16.16.0"
}

위 구문을 추가하여 해결했다.

vercel로 배포한 블로그 링크

profile
함께 일하고 싶은 개발자가 되기 위해 노력합니다. 코딩테스트 관련 공부 및 이야기는 티스토리에도 업로드되어 있습니다.

0개의 댓글