Git

alert("april");·2023년 6월 26일
1

git

목록 보기
1/1
post-thumbnail

git 이란?

자, 기억도 가물가물한 대딩 시절...팀프로젝트 할 때를 생각해보면
협업중 파일들이 왔다갔다 하면서 이런식으로 복잡하게 저장 되어있던 기억이 날 것이다

팀프로젝트(1).ppt Sarah's version
팀프로젝트(2).ppt + MJ's version
팀프로젝트.ppt + April's version
팀프로젝트최종본.ppt
팀프로젝트
진짜진짜최종본.ppt

이럴 때 파일을 저장하기 전 상태로 되돌아가고 싶기도 하고, 누가 얼마만큼 어떤 부분을 수정했는지, 3번째로 수정된 상태로 되돌아가고싶을때...
이런 다양한 상황에서 사용하면 좋은 것이 git이고 현업에서 모든 개발자들은 이 프로그램을 사용하고 있다

버전 관리 프로그램에는 여러 종류가 있지만(git, svn, etc...)
현재 시장 점유율 1위는 git이다

✔ git != github
(나혼자 버전관리 할때) (협업 할때 사용)

git 설치

어떤 프로그램을 설치하던간에 설치 여부를 미리 확인하는 것이 기본이다

맥북(제품 출시 할때 이미 설치되어서 나옵니다)
window는 설치 X

맥북 : terminal연 후에
git -v 입력
window : cmd(커맨더, 명령프롬프트)를 연 후에
git -v 입력
"지금 설치된 git의 버전을 알려줘!"
만약 설치가 되어있다면 설치된 버전이 출력된다
만약 설치가 되어있지 않다면 '실행할수 없는 배치파일입니다.' 라고 뜬다

진짜 git 설치😅

https://git-scm.com/
git 검색 > 가장위의링크클릭 > 우측 download git for Mac/Window >
click here to download 클릭 > 기본옵션 유지한 채 next
git 삭제
제어판 프로그램 제거 > git 제거

git의 기본 동작원리

사용이유 : 버전 관리를 위해서
컴퓨터에는 수많은 폴더들이있다..
가장먼저 해야하는 것은 어떤 폴더를 버전관리 할 것인지 알려주는 것이 중요

✔ window에서 cmd창 d드라이브로 이동하는 방법
D:

1. cmd 혹은 터미널 경로 이동시키기

cd 명령어 사용(change directory)
cd 폴더이름/폴더이름/

상위폴더로 이동하고 싶다면 .. 을 쓴다

"이 폴더를 git repository로 만들거야(버전관리 할거야)!" 알려주는 명령어
(cmd나 터미널을 버전관리 할 폴더까지 이동을 하고)
git init
을 실행한다

실행이되면 .git 이라는 숨김 폴더가 하나 만들어지고,
이 폴더를 통해서 누가 몇시 몇분에 몇번째줄을 어떻게 수정했는지를
기록하게 된다(버전관리 하게 된다 --> .git 이라는 폴더가 없으면 평범한 폴더가 되어버리는 것)
최초 한 번만 .git 폴더를 만들어 주면 된다

2. window의 경우 repository로 만들고 싶은 폴더까지 들어가서

마우스 우클릭 > git bash here > git init


3. Visual Studio Code를 통해 좌측 상단 Terminal(터미널) 클릭

New Terminal 클릭 > 경로 이동 후 > git init

git의 버전관리 방법

(이미 a라는 폴더를 git repository로 만들었다)
git repository에 새로운 파일이 만들어졌다 --> 해당 파일은 untracked 상태

untracked상태

변화를 감지하지 못하는(추적하지 못하는 상태)
repository에 새로운 파일이 만들어지면 무조건 untracked

tracked 상태

변화를 감지할 수 있도록 추적하고 있는 상태
최소 한번이라도 등록(저장)이 되었다면 무조건 tracked 상태

unstage상태

스테이지에 올라가지 않은 상태

stage상태

스테이지에 올라간 상태(변경사항이 임시 저장이 된 상태)

stage 상태로 만들기(임시 저장하기)
git add 파일이름

stage에 올라가게 되면 해당 파일은 tracked 상태가 된다!
이후 변화를 감지할 수 있게 된다

Visual Studio Code의 터미널을 사용하니 바로바로 확인이 가능해서 참 편리하다

영구 저장하기

git commit

--> stage에 올라갔던(임시저장된파일들)파일들이 영구적으로 저장된다
영구저장이 되고 나면 해당 파일들은 unstaged된 상태

--> 에디터가 뜨며, 반드시 커밋 메시지를 작성해야한다
i 를 클릭하여 INSERT(끼워넣기) 모드로 만들고, 커밋 메시지를 작성한 후
esc 를 클릭하여 끼워넣기모드 종료
:wq 엔터
하면 커밋이 완료 된다


--> git commit -m "커밋메시지"
옵션을 사용하여 편하게 미시지 작성후 커밋할 수 있다


git status

현재 git repository의 상태를 보여줘

git log

누가 커밋을 했는지 정보를 보는 명령어

<심플하게 설명하자면>
우리는 이것만 하면 된다!
파일수정 --> git add . --> git commit -m "메시지"

git commit -a

커밋하기 전에 모든 변경사항을 add 하고 commit 해줘
(untracked (새로만든파일) 상태인 파일은 해당옵션 적응 안됨)

git commit -am '메시지'

-a옵션과 -m옵션을 동시에 사용

브랜치(가상의 폴더, 작업을 나눠서 할 수 있다)
git을 설치하면 기본적으로 브랜치 한개(기본 : master브랜치)가 만들어진다

git branch

현재 레포지토리 속 브랜치 목록을 보여줘

git branch 브랜치 이름

브랜치를 새롭게 만들어줘

git checkout 이동할 브랜치 이름

브랜치 이동

✔--global
지금 내가 레포지토리로 쓰고 있는 이 지역만 이렇게 바꿔줘

git merge 병합할 대상 브랜치 이름

자기자신이 위치한 브랜치에다가 다른 브랜치가 병합이 된다

git branch -d 브랜치 이름

브랜치가 삭제된다

✔ 가끔 터미널 창에 ':'이 나올때는 입력 로그가 너무 길어서 그렇다
q 를 치면 명령어 입력창이 다시 나온다

                    header
커밋1                    커밋2
                    헤더에서 추가한 코드
기본코드             기본코드 aaa

master
커밋2
기본코드 bbb(같은 라인을 수정해버리면 충돌이 발생한다)
마스터브랜치에서 작성

                master
                병합
                헤더에서 추가한 코드
                기본코드
                마스터브랜치에서 작성
                
             

< header branch의 사용 예시>

충돌 발생
충돌이 발생하면 직접 충돌되는 부분의 코드를 수정한 후
add, commit 하면 된다



✔ 터미널은 X버튼 말고 휴지통을 눌러야 종료가 된다

브랜치 이름 변경

git branch 원래이름 바꿀이름

✔ 'master' 가 인종차별적인 단어이기 때문에 요즘은 'main'으로 변경하는 추세이다

git add 는 뭔가를 새롭게 추가할때만 사용XXX
파일삭제, 코드지우기 --> 수정사항 발생
add는 수정 사항을 임시저장하겠다

git hub 사용

0. 현재 계정 확인

git config --global user.name "닉네임" 확인
git config --global user.email "github로그인이메일" 확인

1. git init을 해서 만든 로컬 레포지토리

2. git hub에다가 원격 레포지토리를 만들기

3. 연결된 원격 저장소 확인

git remote

4. 원격저장소 추가하기

git remote add 원격저장소이름 원격저장소주소

eg) git remote origin(관례적으로) www.april.com

5. 원격저장소에 업로드하기

git push 원격저장소 브랜치이름

git push -u 원격저장소 브랜치이름
    내가지금 위치한 브랜치에서 앞으로 git push라고 하면
    자동으로 저 원격저장소에 저 브랜치를 업로드해줘 라고 설정을 해준다

    그러면 그 이후로는 git push 만 써도 알아서 원격저장소에 내위치브랜치가 업로드 된다

6. 원격저장소 다운로드 하기

 git pull 원격저장소이름 브랜치이름

git 총 정리

로컬레포지토리의 stage에 올리기

git add

로컬레포지토리에 영구적으로 저장하기

git commit

원격저장소에 업로드 하기

git push 원격저장소이름 브랜치이름

원격저장소 다운로드 하기

git pull 원격저장소이름 브랜치이름

(항상 내가 내 로컬 레포지토리를 push하기 전에는 pull이 먼저 되어있어야지만 push할 수 있음)

profile
Slowly but surely

0개의 댓글

관련 채용 정보