Git_기초
Git intro
버전 관리 시스템을 사용하는 이유
버전 관리라는 것 자체가 각 버전 별로 변경된 이력들을 저장하는 작업
Git
버전 관리라는 것 자체가 각 버전 별로 변경된 이력들을 저장하는 작업
버전 관리 시스템(Version Control System) 중 가장 강력하고 대중적인 도구 : Git
Git
이란 개발자의 코드를 효율적으로 관리하기 위해서 개발된 ‘분산형 버전 관리 시스템’
commit
이라는 기능을 통해서 변경 사항에 대한 스냅샷이 만들어지고 이전의 기록들에 대한 추적이 가능하다면 버전 관리 뿐만 아니라 협업을 할 때도 굉장히 유용
GitHub
GitHub
는 Git Repository를 관리할 수 있는 클라우드 기반 서비스
Git
으로 버전을 관리하는 폴더에 대해서GiHhub
를 통해 여러 사람들이 공유하고 접근 가능
Git Repository
Fork
기존의 원격 저장소에서 내 원격 저장소로 가지고 오는 작업
Clone
내 원격 저장소에서 내 컴퓨터로 가져오는 작업
Push
내 컴퓨터에서 변경 작업 완료 후
commit
을 통해 저장한 다음 원격 저장소로 업로드하는 과정
Pull
원격 저장소에서 변경 사항이 있을 때 내 컴퓨터롤 가져오는 과정
Git 설치 및 환경설정
Git 설치(Ubuntu)
sudo apt install git // git 설치
git --version // git 버전 확인하여 설치 상태 점검
Git 환경설정
git git config --global user.name "나의 사용자 이름"
git config --global user.email "내 이메일 주소"
나의 사용자 이름과 내 이메일 주소를 대신해 GitHub에 등록된 사용자 이름과 이메일 주소를 사용
--global
옵션으로 설정하면, 사용자 홈에 저장되므로 git을 설정할 때 처음에 단 한 번만 입력
나중에 GitHub의 사용자 이름이나 이메일을 변경한다면, 이 명령어를 다시 입력
- 만약 여러 프로젝트를 진행하고 있어서, 프로젝트마다 다른 사용자 이름과 이메일 주소를 사용하고 싶으면 --global 옵션을 빼고 명령을 실행가능
git config --global core.editor nano
Git에서 커밋 메시지를 기록할 때, 특히 merge commit 확인 메시지가 나올 때 텍스트 에디터가 기본으로 vi
로 열리는데 익숙하지 않으면 nano
로 변경
Git workflow(open_source)
1. Fork
2. git clone
3. git status
git status 명령어를 통해 staging area와 untracked files 목록에 어떤 것들이 있는지 확인
4. git restore
git restore [파일명] 명령어를 통해 Work space의 변경 사항을 폐기하고 다시 처음으로 clone 받아 왔던 상태로 되돌려줌
5. git add
*주의 git add .
명령어는 올리지 말아야 할 파일까지 모두 add될 수 있다.
6. git commit
7. git reset
git reset HEAD^
명령어로 가장 최신의 commit 을 취소
예를 들어 최신 commit 3개 취소는 HEAD^^^
(HEAD~3
도 가능)
git reset [option] [돌아가고싶은 커밋]
option 1. --soft
는 commit 직전의 Staged 상태로 만듦
option 2. --mixed
(default)는 commit 전의 Modified 상태로 만듦
option 3. --hard
는 commit 전의 Unmodified로 만듦 (전체 초기화)
8. git push
9. git log
10. Pull Request
Git의 세 가지 영역 및 상태
Git workflow(Cooperation)
1. git init
기존 프로젝트를 Git Repository로 변환하거나 새로운 Repository를 초기화하는 데에 사용
2. git remote add
git remote add [remote명] [Repository 주소]
3. git remote -v
4. git pull
받아오는 내용은 자동으로 병합(merge)된다.
충돌 해결하기
sudo apt install git // git 설치
git --version // git 버전 확인하여 설치 상태 점검
git git config --global user.name "나의 사용자 이름"
git config --global user.email "내 이메일 주소"
나의 사용자 이름과 내 이메일 주소를 대신해 GitHub에 등록된 사용자 이름과 이메일 주소를 사용
--global
옵션으로 설정하면, 사용자 홈에 저장되므로 git을 설정할 때 처음에 단 한 번만 입력
나중에 GitHub의 사용자 이름이나 이메일을 변경한다면, 이 명령어를 다시 입력
- 만약 여러 프로젝트를 진행하고 있어서, 프로젝트마다 다른 사용자 이름과 이메일 주소를 사용하고 싶으면 --global 옵션을 빼고 명령을 실행가능
git config --global core.editor nano
Git에서 커밋 메시지를 기록할 때, 특히 merge commit 확인 메시지가 나올 때 텍스트 에디터가 기본으로 vi
로 열리는데 익숙하지 않으면 nano
로 변경
1. Fork
2. git clone
3. git status
git status 명령어를 통해 staging area와 untracked files 목록에 어떤 것들이 있는지 확인
4. git restore
git restore [파일명] 명령어를 통해 Work space의 변경 사항을 폐기하고 다시 처음으로 clone 받아 왔던 상태로 되돌려줌
5. git add
*주의
git add .
명령어는 올리지 말아야 할 파일까지 모두 add될 수 있다.
6. git commit
7. git reset
git reset HEAD^
명령어로 가장 최신의 commit 을 취소
예를 들어 최신 commit 3개 취소는HEAD^^^
(HEAD~3
도 가능)
git reset [option] [돌아가고싶은 커밋]
option 1.
--soft
는 commit 직전의 Staged 상태로 만듦
option 2.--mixed
(default)는 commit 전의 Modified 상태로 만듦
option 3.--hard
는 commit 전의 Unmodified로 만듦 (전체 초기화)
8. git push
9. git log
10. Pull Request
Git의 세 가지 영역 및 상태
Git workflow(Cooperation)
1. git init
기존 프로젝트를 Git Repository로 변환하거나 새로운 Repository를 초기화하는 데에 사용
2. git remote add
git remote add [remote명] [Repository 주소]
3. git remote -v
4. git pull
받아오는 내용은 자동으로 병합(merge)된다.
충돌 해결하기
기존 프로젝트를 Git Repository로 변환하거나 새로운 Repository를 초기화하는 데에 사용
git remote add [remote명] [Repository 주소]
받아오는 내용은 자동으로 병합(merge)된다.
git status
명령어를 통해 어떤 파일이 충돌하고 있는지 확인
- Accept Current Change를 클릭해서 내가 수정한 내용으로 파일에 반영 가능
- Accept Incoming Change를 클릭해서 Remote Repository의 내용으로 파일에 반영 가능
- Accept Both Changes는 변경 사항 모두를 반영
Merge commit은 자동으로 Commit 메시지가 생성된다. (물론 메시지를 수정할 수도 있다.)
git commit
명령어로 자동으로 생성된 commit 메시지를 남겨진다.
그리고 Remote Repository에 Push 한다면 다음 화면과 같이 Merge branch ‘master’ of 라는 commit 메시지가 기록된다.
Author And Source
이 문제에 관하여(Git_기초), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hoony0802/Git기초저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)