Git 설치 (Windows)
Download for Windows (64-bit Git for Windows Setup):
https://usingu.co.kr/frontend/git/%EC%9C%88%EB%8F%84%EC%9A%B0-git-%EC%84%A4%EC%B9%98/
Git 은 Version Control System으로, 파일의 버전을 자동으로 관리해주는 소프트웨어이다.
Git이 있고 GitHub가 있는데,
Git은 내 로컬 컴퓨터에서 작동하고
GitHub는 인터넷에서 작동한다.
Git에 있는 Version을 Github로 올리기도 하고,
Github에 있는 누군가의 버전을 Git으로 복사해 내 로컬 컴퓨터로 가져오기도 한다.
Git 설치
1) 다운로드 및 설치:
Git 홈페이지에서 운영체제별로 다운로드 및 설치
// Linux Ubuntu 에서 설치시
git --version 으로 확인 후 없을 시
sudo apt install git
설치 완료후 버전 재 확인.
Git 저장소 생성
2) Git 저장소 생성
1. Git 저장소로 활용할 디렉토리를 생성한 뒤 이동.
$mkdir git_test
$cd git_test
2. 우분투 터미널에서 git init 명령어를 실행
$git init
$ls -al
ubuntu에서 ls -al 명령어를 통해 .git 디렉토리가 생성되어 저장소 생성이 완료된것을 확인할 수 있음.
Git 초기 설정
1. Git 사용자 정보 설정
- 저장소에 코드를 반영할 때 활용될 사용자의 정보를 설정
$git config --global user.name "chmnku"
$git config --global user.email "chmnku@gmail.com"
$git config --global user.password "password"
password는 따옴표 제외 developer setting 에서 token 받아옴 repo만 체크
- 프로젝트마다 다른 사용자 정보를 활용하고 싶다면, 저장소 생성후 --global 옵션을 제외하고 실행합니다.
$git config user.name "chmnku"
$git config user.emali "chmnku@gmail.com"
:
user.name 삭제
-- 사용자 이름을 선택하여 삭제
git config --global --unset user.name 사용자이름
-- 전체 사용자 이름 삭제
git config --global --unset-all user.name
-- 사용자 이메일을 선택하여 삭제
git config --global --unset user.email 사용자이메일
-- 전체 사용자 이메일 삭제
git config --global --unset-all user.email
check to the list
git config --global --list
register
git config --global user.name 사용자이름
git config --global user.email 사용자이메일
2. Git 사용자 정보 확인
- git config --list 명령어를 통해 확인
$git config --list
user.name=chmnku
user.email=chmnku@gmail.com
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
- 위와 같이 출력됨.
-------------------------------
git status로 현재 상태 확인
$git add test.c
만들어 놓은 test.c c확장자 파일을 저장소에 저장
rim@rim-PC:~/git_test/test_repo/src$ git status
현재 브랜치 master
아직 커밋이 없습니다
커밋할 변경 사항:
(스테이지 해제하려면 "git rm --cached <파일>..."을 사용하십시오)
새 파일: test.c
아쉽게도 아직은 완벽히 저장되지 않음.
git commit <fileName> 명령어를 이용하여 '영구적인 스냅샷'인 커밋을 완료해야 함.
$git commit -m "test.c"
[master (최상위-커밋) 62d447e] test.c
1 file changed, 8 insertions(+)
create mode 100644 src/test.c
위와 같이 나오면 첫번째 커밋을 성공적으로 완료한 것임
커밋이란?
커밋에 대한 설명을 진행하기 위해서는 버전 관리가 무엇인지 알아야함.
버전 관리 시스템은 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼낼 수 있는 시스템입니다.
(그리고 지금 배우는 git이 버전 관리 시스템)
버전이라는 용어는 각각의 시점에 저장되는 파일들.
여러분이 작성하는 자기소개서_01, 자기소개서_02, 자기소개_03 등이 모두 하나의 버전인것임
git은 버전들을 관리할 때 각 버전의 차이점을 저장하는 것이 아니라 버전을 저장할 때의 각각의 시점 전체를
하나의 스냅샷으로 저장함.
이러한 각 시점의 스냅샷을 git에서 commit 이라 부르고, 커밋을 만드는 과정 역시 commit 이라고 함.
위에서 우리는 첫 번째 commit을 만든 것임.
커밋은 한 번 저장되면 수정할 수 없으며 영구적으로 저장됨.
또한 언제든지 해당 커밋으로 되돌아 올 수 있음 (왜냐하면 하나의 시점 전체를 저장한 것이기 때문임)
Working directory, Staging area, .git directory
commit 을 만들기 위해 왜 add와 commit,
총 두번의 과정을 거쳐야 하는지 궁금할 것임.
사실 이부분은 git book의 1.3 git의 기초에 기술되어 있지만 중요하기 때문에 한 번더 다루고자함.
git에는 크게 3가지 공간이 있음.
Working directory : 작업을 하고 있는 로컬 컴퓨터 공간
Staging area : 커밋할 파일에 대한 정보를 저장
.git directory : 스테이징 에어리어의 파일들을 커밋하여 영구적인 스냅샷을 저장하는 장소
위에서 test.c 파일을 만들었을 때, 파일이 저장되는 로컬 컴퓨터의 공간이 working directory 입니다.
test.c 파일을 처음만들게 된다면 working directory에 존재하게 될것임
이제 이 파일을 영구적으로 저장하기 위해서는 먼저 staging area에 저장하고 싶은 파일들의 정보를 등록해줘야 함.
git add <fileName> 명령어를 사용하여 c파일을 스테이징 에어리어에 올린다.
이때 working directory의 파일을 옮기는 것이아니라 copy한다고 생각해야됨.
즉, working directory의 파일을 수정해도, staging area 파일에는 반영되지 않음.
$git add .
위 명령어를 사용하면 현재 폴더 안의 모든 파일들을 add할 수 있음.
이제 Staging area에 있는 파일들을 가지고 최종적으로 Git저장소에 저장하여 영구적인 스냅샷을 저장함.
git commit <fileName> 명령어를 입력하면 commit 이 완료됨.
$git commit "test.c"
앞에서 했던 것을 다시 생각해봅시다.
저희는 git add "test.c" 명령어를 이용하여 test.c 파일에 대한 정보를 staging area에 저장한 후
git commit "test.c" 명령어를 이용하여 .git 디렉토리에 커밋을 완료한 것임.
Staging Area의 위치
사실, 스테지징 에어리어의 정보들도 '.git' 폴더 안에 있습니다.
위 세가지 공간 구분은 물리적 구분이 아닌 공간의 성격에 따른 추상적인 구분이라 생각하면 됨.
Commit Message (git commit -m)
커밋을 할 때는 해당 커밋을 설명하는 메세지를 같이 저장해야 함.
계속해서 커밋을 만들게 되면, 변경사항이 무엇인지 헷갈릴 수 잇을 것입니다.
이때 그것을 기록하기 위한 용도로 해당 커밋을 설명하는 메세지를 작성해야 함.
위에서 저희는 다음과 같은 명령어로 커밋을 완료했습니다.
$git commit -m "first commit"
이때 -m "first commit" 의 의미는 커밋 메세지로 "first commit"을 저장하라는 의미임.
만일 -m 옵션 없이 git commit test.c 만 입력했을 경우 커밋 메세지를 작성할 수 있는 창이 뜸
당황말고 Insert 모드로 바꾼 이후 메세지를 첫줄에 입력하고 저장하면 됨.
만약 아무런 메세지를 입력하지 않을 경우 커밋되지 않음
커밋 수정하기 (git commit -amend)
프로젝트를 진행하게 되면 계속해서 커밋을 하게 됨.
이때 자잘한 부분의 수정을 까먹고 다시 커밋을 만드는 경우가 굉장히 많음.
예를 들어 커밋메세지로 "fix", fix again, fix again 등등 과 같이 커밋 메세지를 만들게 되면..
하지만 여기서 커밋을 왜하고 커밋 메세지를 왜 작성하는지 다시 생각해볼 필요가 있음.
그 이유는 변경한 체크포인트를 기록하기 위해서임.
그렇다면 자잘한 변경사항들을 굳이 여러개의 커밋으로 기록할 필요가 없ㅇ,ㅁ
이런 경우는 과감히 하나의 커밋으로 합쳐주는 것이 좋음.
이렇게 다시 커밋하고 수정하고 싶은 경우 변경사항을 add한 후, --amend 옵션과 함께 다음 커밋을 하면됨.
커밋 메세지를 수정하고 싶은 경우에도 이 옵션을 사용함.
$git add <changedFiles>
$git commit --amend
커밋은 사실 수정이 불가함.
위의 작업은 기존 커밋을 수정하는 것이아니라,
두번째 커밋이 첫번째 커밋을 완전히 덮어쓴느 것임.
이전의 커밋은 일어나지 않은 일이 되는것이고 히스토리에도 남지 않음.
https://seonkyukim.github.io/gitTutorial/index/
Repositories 연결:
$git remote add origin 원격저장소URL
$git remote -v
위 명령어를 입력하면, 원격저장소에 잘 연결되어 있는지 확인 가능
Git Hub에 최초 푸쉬(Upload)
$git push -u origin master
위 작업 과정 중에 비밀번호 혹은 PAT(Personal Access Token)을 입력하라는 메시지가 나올 수 있다.
ID와 PW는 각각 Git Hub의 아이디와 비밀번호를 입력하면 된다.
만약 Personal Access Token 을 사용하는 메시지가 나오면 아래글을 참고하여 PAT를 만들어 사용하면 됨.
https://curryyou.tistory.com/344
이후 작업.
위까지 작업을 해두면, 향후 작업은 add, commit, push, pull의 반복
1) staging 추가:
$git add .
2) Commit:
$git commit -m "Commit msg"
3) Push(Upload):
$git push
4)Pull(Download):
$git pull
*.gitignore 파일 생성: git 추적 제외 파일/폴더 설정
용량이 큰 라이브러리나 민감한 주요 설정 정보 파일 등의 경우, git의 추적에서 제외할 필요가 있을 수 있다.
git의 추적에서 제외할 폴더나 파일이 있는 경우,
프로젝트 폴더에 .gitignore 이름의 파일 생성후 작성
'Manual' 카테고리의 다른 글
[ROS]How to install ROS Melodic ver 1.0 (0) | 2022.10.12 |
---|---|
[Git]connection with github repository (0) | 2022.09.29 |
[Linux] Setting up after installing Linux (0) | 2022.07.22 |
[VM]Configuring a Virtual Machine Environment (0) | 2022.07.22 |
[Linux] How to install "Ubuntu" (0) | 2022.07.21 |