git,github

Git 기초

Hdeveloper 2022. 6. 19. 22:10
728x90

1. Git

깃(Git )은 컴퓨터파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산버전관리시스템 이다. 또는 이러한 명령어를 가리킨다. 소프트웨어개발에서 소스 코드관리에 주로 사용되지만 어떠한 집합의 파일의 변경사항을 지속적으로 추적하기 위해 사용될 수 있다. 기하하적 불변이론을 바탕으로 설계됐고, 분산 버전 관리 시스템으로서 빠른 수행 속도에 중점을 두고 있는 것이 특징이며 데이터 무결성, 분산, 비선형 워크플로를 지원한다.
깃은 2005년에 리눅스 커널 개발을 위해 초기 개발에 기여한 다른 커널 개발자들과 함께 2005년에 리누스 토르발츠가 처음 개발한 것이다. 2005년부터 지금까지 주니오 하마노(Junio Hamano)가 소프트웨어의 유지보수를 맡고 있다.
다른 대부분의 분산 버전 관리 시스템처럼, 또 대부분의 클라이언트 서버 시스템과 달리, 모든 노드의 모든 깃 디렉터리는 네트워크 접속이나 중앙 서버와는 독립적으로 동작하는 완전한 이력 및 완전한 버전 추적 기능을 갖춘 성숙한 저장소이다.
깃은 GNU 일반 공중 사용 허가서v2 하에 배포되는 자유소프트웨어이다.

다운로드 URL
https://git-scm.com/downloads

Git - Downloads

Downloads macOS Windows Linux/Unix Older releases are available and the Git source repository is on GitHub. GUI Clients Git comes with built-in GUI tools (git-gui, gitk), but there are several third-party tools for users looking for a platform-specific exp

git-scm.com

2. Git 기초

  • git 초기 설정
$ git config --global user.name "이름"
$ git config --global user.email "메일 주소"

최초 한번만 설정 매번 사용 할때 마다 설정할 필요 없음
누가 커밋 기록을 남겼는지 확인할수 있도록 이름과 이메일을 설정
작성자를 수정하고 싶을때는 이름,메일 주소만 다르게 하여 동일하게 입력

작성자가 잘 설정되었는지 확인

$ git config --global -l

또는

$ git config --global --list

  • Git 기본 명령어

로컬저장소

  • Working Directory (= Working Tree) : 사용자의 일반적인 작업이 일어나는 곳
  • Staging Area (= Index) : 커밋을 위한 파일 및 폴더가 추가되는 곳
  • Repository : staging area에 있던 파일 및 폴더의 변경사항(커밋)을 저장하는 곳
  • Git은 Working Directory → Staging Area → Repository 의 과정으로 버전 관리를 수행

1) git init

$ git init
Initialized empty Git repository in C:/Users/kyle/git-practice/.git/

tuyr1211@naver MINGW64 ~/git-practice (master)

현재 작업중인 디렉토리를 깃으로 관리한다는 명령어
.git이라는 숨김 폴더를 생성하고, 터미널에는 master라고 표기됨
mac os의 경우 master가 표시되지 않는데 Terminal 업그레이드를 통해 표기할수 있음.


! 주의사항

  1. 이미 Git 저장소인 폴더 내에 또 다른 Git 저장소를 만들지 않습니다. (중첩 금지) 즉, 터미널에 이미 (master)가 있다면, git init을 절대 입력하면 안됨
  2. 절대로 홈 디렉토리에서 git init을 하지 않습니다. 터미널의 경로가 ~ 인지 확인해야함


2) git status

$ git status
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

working directory와 staging area에 있는 파일의 현재 상태를 알려주는 명령어
어떤 작업을 시행하기 전에 수시로 status를 확인하면 현재의 진행사항을 확인하는데 좋다.
상태

  1. Untracked : Git이 관리하지 않는 파일 (한번도 Staging Area에 올라간 적 없는 파일)
  2. Tracked : Git이 관리하는 파일
    1. Unmodified : 최신 상태
    2. Modified : 수정되었지만 아직 Staging Area에는 반영하지 않은 상태
    3. Staged : Staging Area에 올라간 상태

파일의  디렉토리 리사이클

3) git add

# 특정 파일
$ git add a.txt

# 특정 폴더
$ git add my_folder/

# 현재 디렉토리에 속한 파일/폴더 전부
$ git add .

Working Directory에 있는 파일을 Staging Area로 올리는 명령어
Git 이 해당 파일을 추적 할 수 있도록 만듭니다.
Untracked,Modified -> Staged 로 상태를 변경합니다.
example

$ touch a.txt b.txt

$ git status
On branch master

No commits yet

Untracked files: # 트래킹 되고 있지 않는 파일 목록
  (use "git add <file>..." to include in what will be committed)
        a.txt
        b.txt

nothing added to commit but untracked files present (use "git add" to track)
# a.txt만 Staging Area에 업로드

$ git add a.txt
$ git status

On branch master

No commits yet

Changes to be committed: # 커밋 예정인 변경사항(Staging Area)
  (use "git rm --cached <file>..." to unstage)
        new file:   a.txt

Untracked files: # 트래킹 되고 있지 않은 파일
  (use "git add <file>..." to include in what will be committed)
        b.txt

4)git commit

$ git commit -m "first commit"
[master (root-commit) c02659f] first commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 a.txt
  • Staging Area에 올라온 파일의 변경 사항을 하나의 버전(커밋)으로 저장하는 명령어
  • 커밋 메세지는 현재 변경 사항들을 잘 나타낼 수 있도록 의미 있게 작성하는 것을 권장
  • 각각의 커밋은 SHA-1 알고리즘에 의해 반환 된 고유의 해시 값을 ID로 가집니다.
  • (root-commit) 은 해당 커밋이 최초의 커밋 일 때만 표시됩니다. 이후 커밋부터는 사라짐

5) git log

$ git log
commit 1870222981b4731d14ef91d401c68c0bbb2f6e7d (HEAD -> master)
Author: kyle <kyle123@hphk.kr>
Date:   Thu Dec 9 15:26:46 2021 +0900

    first commit
  • 커밋의 내역(ID, 작성자, 시간, 메세지 등)을 조회할 수 있는 명령어
  • 옵션
    • --oneline : 한 줄로 축약해서 보여줍니다.
    • --graph : 브랜치와 머지 내역을 그래프로 보여줍니다.
    • --all : 현재 브랜치를 포함한 모든 브랜치의 내역을 보여줍니다.
    • --reverse : 커밋 내역의 순서를 반대로 보여줍니다. (최신이 가장 아래)
    • -p : 파일의 변경 내용도 같이 보여줍니다.
    • -2 : 원하는 갯수 만큼의 내역을 보여줍니다. (2 말고 임의의 숫자 사용 가능)

728x90

'git,github' 카테고리의 다른 글

.gitignore 란?  (0) 2022.07.31
[Git] pull 오류  (0) 2022.07.09