[Git] 실무에서 사용하는 명령어들을 빠르게 알아보자 (1)

couchcoding·2022년 5월 5일
19

Git

목록 보기
1/1
post-thumbnail

Git은 개발자가 반드시 알아야할 기술 중 첫번째로 뽑을 정도로 굉장히 중요한 기술입니다.
Git제대로 공부하기는 매우 어렵고, 대부분의 상황에서는 그 모든 것을 알 필요는 없습니다.
그래서 이번 포스팅에서는 실무에서 사용하는 필수 명령어들을 알아보도록 하겠습니다. 1편에서는 clone, add, commit, pull, push 등의 명령어에 대해 알아보겠습니다.

Git이란?

버전관리 시스템

Git은 버전관리 시스템입니다(소스코드 형상관리 시스템). 버전 관리 시스템을 쉽게 설명하자면 게임 중간 저장과 같습니다.

게임 하다가 죽으면 저장한 곳에서 다시 시작 하듯이 Git에 새로운 버전을 저장하고(commit), 개발하다 문제가 생기면 이전에 저장한 버전으로 돌아갈 수 있습니다.

협업 도구

Git은 또한 협업 도구입니다. 개발자들은 Git을 통하여 팀원들 끼리 소스코드를 공유하고, 다른사람이 작업한 내용을 받아 올 수 있습니다. (Git과 같은 툴이 없다면 우리는 이메일로 소스코드를 공유하고 합쳐야 할 지도 모릅니다.)

-> ref: https://www.git-tower.com
협업을 위해 Git Server를 만들어 여러 개발자들이 소스코드를 공유합니다. 이를 Remote Repository라고 합니다. clone, push, pull과 같은 명령어로 Remote Repository에 자기가 만든 버전을 공유하고 다른 사람의 작업을 받아 올 수 있습니다. Remote Repository를 제공하는 대표적인 서비스는 Github, Gitlab, Bitbucket이 있습니다.

Git 시작하기

git clone (다른사람이 만든 프로젝트 다운받기)

git clone {다운 받을 git 주소}

git clone 명령어는 이미 존재하는 remote git 프로젝트를 다운 받는 명령어 입니다. 다른 팀원이 작업한 프로젝트에서 다운받을 수 있습니다.

github의 경우 위 그림 처럼 code를 누르면 다운 받을 git 주소를 알 수 있습니다.

내 프로젝트에 git 설정하기

이미 있는 git프로젝트 말고 자신의 프로젝트에 git을 추가하려면 어떻게 할까요?

cd {myProject}
git init
git remote add origin {remoteAddress}
git branch -M main
git push -u origin main

git init 명령어는 git 프로젝트를 시작하는 명령어입니다. 프로젝트 내 .git 폴더가 생성되고 프로젝트에서 git 명령어들을 사용할 수 있어집니다.
git remote add 명령어는 remote repository과 자신의 프로젝트를 연결하는 명령어입니다. origin이라는 이름에 remoteAddress를 연결합니다.
branchpush명령어는 자주 쓰는 명령어로 이후에 다시 다루도록 하겠습니다.

위의 명령어를 사용하면 git 프로젝트를 시작하고, remote repository에 자신의 프로젝트를 시작할 수 있습니다.

git 주요 명령어


git에는 staging local repository remote repository가 존재합니다.

  • staging
  • 로운 버전(새로운 중간 저장)이 추가되기전 임시로 코드가 올라가는 곳이고, local repository는 버전이 저장되는 내 컴퓨터 repository를 의미하고, remote repository에는 버전이 저장되는 원격 서버를 의미합니다.

status

git status

git status는 저장된 버전과 비교해 현재 어떤 파일들이 변경되었는지 확인하는 명령어 입니다. 어떠한 파일들이 변경되었는지 확인 할 수 있습니다.

add

# 특정 파일을 stating에 추가
git add {Staging에 추가할 file}
# 모든 파일을 staging에 추가
git add -A 

git add 명령어는 staging에 파일을 추가합니다. git status 명령어를 활용해 변경된 파일이 무엇인지 확인하고 staging에 추가합시다.
변경된 모든 파일을 staging 하려면 -A 옵션을 추가합니다.

commit

git commit 
git commit -m "{message}"

git commit 명령어는 새로운 버전을 생성하는 명령어입니다. staging에 올라간 변경사항을 local repository에 저장합니다.

commit시 다음과 같은 창이 나오면 메세지를 써주고 끄면 메세지와 함께 commit이 생성됩니다.
-m 옵션을 사용하면 commit시 메세지를 추가할 수 있습니다.

push

git push {remoteName} {branchName}
git push {remoteName}
git push

git push 명령어는 local repository에 있는 버전(commit)들을 remote repository에 추가합니다. push를 통해서 다른 개발자들과 작업한 내용을 공유할 수 있습니다. git은 여러 remote repository를 가질 수 있기 때문에 명시적으로 remote repository의 이름을 명시해 줄 수 있습니다. git push origin 다음 포스팅에서 다룰 branch도 명시해 줄 수 있습니다 git push origin develop, 명시한 branch의 내용을 push 합니다.

pull

git pull
git pull {remoteName}
git pull {remoteName} {branchName}

git pull 명령어는 remote repository에 있는 버전들을 local repository로 가져오는 명령어 입니다. 다른 개발자가 작업한 내용을 가져올 수 있죠. push 와 마찬가지고 remote repository 이름과 branch이름을 명시 할 수 있습니다.

충돌 해결하기

다른 사람이 작업한 내용을 가져오려고 git pull 명령어를 사용하면 CONFLIC이란개 발생합니다.

이는 같은 파일을 동시에 변경할때 발생합니다. git은 어떤 변경이 올바른지 알지 못하기 때문에 우리가 해결해줘야합니다.
IDE로 conflict이 난 파일을 확인하면

요런식으로 나타나는데 ===== 위에
HEAD는 local repository의 내용이고,
밑에는 remote repository의 내용입니다.
두개의 변경사항을 보고 무엇이 올바른지 선택해 주면됩니다.

  1. 파일 올바르게 고치기
    선택해 주는 방법은 <<<<<<<<<< HEAD ==========, >>>>>>>>>> ccf... 와 같이 문법에 상관없는 내용을 지워주고
    둘을 조합하던가 하나를 없애서 정상적으로 동작하는 코드로 변경해줍니다.
  2. git add {conflict 된 파일}
    올바르게 변경한 파일을 add합니다. commit전에 모든 conflict을 올바르게 변경하고 add 해 줍시다.
  3. git commit
    해당 내용을 commit 해주면 됩니다.

이렇게 하면 결국엔 올바른 파일만 남게됩니다.

git push명령어를 사용했을때 CONFILIC 때문에 push가 안된다고 하면 git pull을 해서 충돌을 해결한 다음에 push를 해주면 됩니다.

추후에 merge rebase 명령어를 사용할때도 충돌은 자주 접하니 당황하지말고 침착하게 해결해보도록 합시다 ㅎㅎ

다음 포스팅

다음 포스팅에서는 독립된 개발 환경을 구성하하고 합치는 명령어인 branch, checkout, merge, rebase에 대해서 알아보도록 하겠습니다.

About Couchcoding

카우치코딩에서는 1:1 코딩 문제해결 멘토링 서비스입니다. 가르치는데 관심있는 멘토분들이나 문제해결이 필요한 멘티분들 방문해주세요~
또한 별도로 6주 포트폴리오 수업을 진행중에있습니다. 혼자 포트폴리오 준비를 하는데 어려움이 있으면 관심가져주세요~

profile
포트폴리오 수업 & 코딩 멘토링 서비스 카우치코딩입니다.

0개의 댓글