본문 바로가기
카테고리 없음

git

by 문자메일 2019. 11. 1.

1강 - Git 설치 및 사용법 익히기 [Git으로 시작하는 협업 및 오픈소스 프로젝트 1강]

github.com 가서 새로운 Repository 만들기

https://git-scm.com/download/win 에서 git 설치

 

Git - Downloading Package

Downloading Git Now What? Now that you have downloaded Git, it's time to start using it.

git-scm.com

이후 git 명령프롬프트에서 git 명령을 테스트 해볼 수 있음

 

명령어 모음

git --version : 버전확인

# 내 컴퓨터 모든 프로젝트에 사용할 git 환경설정 만들기

git config --global user.name ####

git config --global user.email ####@###.com

 

아래 명령으로 세팅된 정보 확인 가능

git config --global user.name 

git config --global user.email 

 

이후 Remote Repository의 정보를 clone하기 위하여 cd 명령어로 데이터 저장할 폴더로 이동

# 데이터 clone하기

git clone https://github.com/YeongBinByeon/Git-Tutorial.git

 

YeongBinByeon/Git-Tutorial

나동빈 강의보며 따라하기. Contribute to YeongBinByeon/Git-Tutorial development by creating an account on GitHub.

github.com

※ 오픈소스 라이센스 ※

▶MIT License : 무료, 배포 가능, 소스코드 수정 가능, 2차 저작물 공개 의무 없음

▶Apache License : 무료, 배포 가능, 소스코드 수정 가능, 2차 저작물 공개 의무 없음

▶GPL : 무료, 배포 가능, 소스코드 수정 가능, 2차 저작물 공개 의무 있음

 

git status

# Staging Area에 위치하는 파일을 내려오게 만들 수 있음

git reset 파일명 

# Staging Area에 추가

git add 파일명

# 모든 파일 한번에 add

git add .

# -m 옵션으로 Commit Message를 담아서 Staging Area에 있는 정보들을 Commit 수행

git commit -m "Add Text File [document.txt]"

# Remote Repository에 Push하기, 위에서 이미 clone한 폴더이기에 git push 명령어만 입력하면 push 된다.

git push

 

4강

git은 수정 내역 자체를 저장한다.

- Working Directory : 작업할 파일이 있는 디렉토리이다.

- Staging Area : 커밋을 수행할 파일들이 올라가는 영역.

- Git Directory : Git 프로젝트의 메타 데이터와 데이터 정보가 저장되는 디렉토리입니다.

git pull 명령어로 Remote Repository에서 Working Driectory로 데이터를 바로 가져올 수 있다.

 

※ 저장소에 대해서 

저장소는 실제 소스코드가 담겨 있으면서 커밋 내역 등의 모든 작업 이력이 담겨 있는 공간을 의미한다. 실제로 프로젝트의 메타 데이터를 포함해 각종 데이터는 .git 폴더에 담기게 된다. 실제로 이 폴더를 열어 보면 각종 데이터와 해시 값 등이 담겨있다.

어떠한 파일을 Commit 하게 되면 각 작업들을 분류하기 위해 내부적으로 해당 작업에 대한 해시 값을 이용하는 것이다.

일반적으로 해시 값은 충돌이 발생하지 않기 때문에 정확히 커밋 내역들을 관리할 수 있다.

 

5강 - 소스코드 수정하여 Git 저장소에 반영하기

# 수정된 내용을 반영하고 싶지 않을 때, 혹은 원래대로 돌려놓고 싶을 때

git checkout -- my.py

# 커밋 message 입력을 잘못 했을 때, 커밋 메시지 수정을 할 수 있음

git commit --amend

 

6강 - Git에서 커밋(Commit) 내역 수정하기 [Git으로 시작하는 협업 및 오픈소스 프로젝트 6강]

 

# 수정 내역 볼 수 있음

git log

 

# 특정 시점 이후의 커밋 내용은 모두 지우겠다는 의미, git log시 수정내역 전부 사라지는거 확인할  수 있음

git reset --hard <해쉬번호>

 

#그런데 reset하고 원격저장소에 push하려면 수정이력이 달라졌기에 에러가 난다.

#이럴때 git push -f 옵션으로 강제로 푸시할 수 있다. 로컬 저장소와 커밋 이력이 동일해진것을 확인할 수 있다.

git push -f

 

# Commit 내역 수정하기, 아래 명령어로 들어가서 로그 수정 후 강제 push하면 로그만 바뀐다.

git commit --amend

git push -f

 

7강 - Git 브랜치(Branch)의 개요 및 사용해보기

깃은 동시에 여러 개발자들이 프로젝트에서 다른 기능을 개발할 수 있도록 브랜치 기능을 제공한다.

 

# 현재 branch가 몇개 존재하는지 확인

git branch

 

#새로운 branch 생성

git branch <브랜치명>

 

# checkout 명령어로 다른 브랜치로 전환하기

git checkout <브랜치명>

 

다른브랜치에서 작업 후 통합할 master 브랜치로 checkout 한 다음 merge 명령어로 통합할 수 있다.

git checkout master

git merge <통합할 브런치명>

 

# 병합이 끝난 브랜치 제거하기

git branch -d develop

 

8강 - Git 브랜치 충돌(Conflict) 처리하기 [Git으로 시작하는 협업 및 오픈소스 프로젝트 8강]

일반적으로 서로 다른 2개의 브랜치에서 동일한 파일을 수정했는대 파일의 내용이 서로 다르면 merge를 할때 충돌이 일어날 수 있다.

서로다른 브랜치에 동시에 같은 파일을 수정하면 git log 명령을 입력했을 때 다른 브랜치의 수정이력이 나오지 않는다.

브런치간 파일의 내용이 달라졌기 때문이다.

이때 git merge <브런치> 명 입력하면 conflict 발생함. (특정한 소스코드의 라인이 완전히 다르기 때문임)

 

<<<<<<< HEAD
        return a//b
=======
    return a//b #주석
>>>>>>> develop

 

conflict message : ==== 기준 위쪽은 MASTER브랜치, 아래는 DEVELOP 브랜치임

 

이후 수동으로 살릴 코드만 저장하고

git add .

git commit 하면 정상 커밋 됨.

git merge <브랜치명>

git log 하면 master 브랜치와 토픽 브랜치 commit 내역이 동시에 나오며 정상 merge 된것 확인할 수 있음

역할을 다한 브랜치는 git branch -d <develop>으로 삭제

 

9강 - git으로 시작하는 협업 및 오픈소스 프로젝트

깃 파일 있는곳에서

git remote

 

# 원격 저장소에 대한 정보를 자세히 확인하고 싶을 때 사용하는 명령어

git remote show <origin:원격저장소명>

* remote origin
  Fetch URL: https://github.com/----/---.git
  Push  URL: https://github.com/----/---.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

 

# 새로운 원격저장소 등록하기

git remote add <before:원격저장소이름> <https://github.com/@@@/@@@.git:깃주소>

# 성공적으로 원격저장소가 등록된 것을 볼 수 있다.

git remote -v

 

#원격 저장소 이름 바꾸기

git remote rename <before> <after>

 

#원격 저장소 제거하기

git remote rm <after>

 

 

 

----------------------------------

2022/02/25 추가

 

이전 했던 커밋을 반대로(취소) 하는 커밋 실행

git revert 32d879cdd504460452623a19d4ec933c278d5aaf 

 

이전 했던 커밋을 반대로 되돌리는 상태로 local 되돌리고 커밋은 실행하지 않는 상태

보통 이전 버전으로 되돌리고 코드를 추가 할 일이 더 있으면 아래 명령을 사용한다.

git revert --no-commit 32d879cdd504460452623a19d4ec933c278d5aaf 

댓글