기억하기 위한 기록

Github 기초 : add , commit, push, pull 본문

기타 IT

Github 기초 : add , commit, push, pull

곽구 2021. 6. 18. 17:29

 

출처

https://chancoding.tistory.com/76

 

[Github] 완전기초 사용방법 : add, commit, push, pull

Git Git은 분산형 버전관리 시스템(DVCS) 중 하나입니다. 최근 Git과 GitHub를 통해서 많이 사용되는 것 같습니다. Github에 저장하는 것은 매번, 매버전을 모두 저장하고 upload하는 방식이 아닌 각 버전

chancoding.tistory.com

Git : 분산형 버전관리 시스템 중 하나입니다. Github에 저장하는 것은 매번 , 매버전을 모두 저장하고 upload 하는 방식이 아닌 각 버전들의 차이 혹은 변경 이력을 저장하는 것입니다. 이를 통해서 훨씬 적은 용량으로 많은 버전 이력들을 저장할 수 있는 것입니다.

 

Git을 사용하기 위해서는 Git의 commit을 남기는 사람에 대한 정보를 설정합니다.

$ git config --global user.name {'이름'}
$ git config --global user.email {'이메일'}

- 추후에 commit을 작성한 사람으로 저장된다.

- email 정보는 github에서 활용하고 있는 email과 동일하게 설정하는 것을 추천한다.

- 설정 내용을 확인하려면 아래의 명령어를 입력한다.

 

Git 기초흐름

0. 저장소 설정

$ git init

- git 저장소를 만들게 되면 해당 디렉토리 내에  .git/  폴더가 생성된다.

- git bash  에서는 (master) 라는 표기가 같이 등장한다.

- 현재 작업중인 branch를 의미한다.

 

1. add

- 작업위치(Working Directory 이하 WD) 폴더에 작업한 파일이 있을 경우 add를 통해서 staging Area로 옮길 수 있습니다. stagin Area는 commit을 진행하기 전의 임시 저장 된 상태 정도로 생각하면 될것 같다.

 

- 해당 폴더에서 작업 후 상황

# a.txt를 만든 상황
$ git status
On branch master

No commits yet
# 트래킹 되고 있지 않은 파일들
# => git으로 버전을 남긴적이 없는 파일

Untracked files : 
# staging area에 포함시키려면, git add
# (커밋될 파일 목록)
(use "git add <file>..." to include in what will be committed)

# 커밋할 내용 없지만, 트래킹 되지 않는 파일은 존재한다.
# => WD O, Stagintg Area X
nothing added to commit but untracked files present (use "git add" to track)

 

- staging area에 추가

$ git add a.txt         # a.txt 파일
$ git add myfloder/     # myfloder 폴더
$ git add .             # 현재 디렉토리

 

-추가 후 상태 : status 를 자주 살펴보면서 상태를 확인하는것이 좋다.

$ git status  # git 의 상태를 확인
On branch master

No commits yet #새로 생성된 것이 없으면 나오는메세지

#커밋될 변경사항들 (staging area)
Change to be committed :
(use "git rm -- cached <file>..." to unstage)
        #a.txt 새로 생성됨
        new file : a.txt

 

 

 

2. commit

커밋 메시지는 현재 버전에 대한 내용을 명확하게 작성해야 한다.

현재 어느정도 commit 메세지에 대해서 사람들끼리 정해진 메세지 작성법이 있다. 

참고 : https://meetup.toast.com/posts/106

 

좋은 git 커밋 메시지를 작성하기 위한 7가지 약속 : NHN Cloud Meetup

git커밋

meetup.toast.com

$ git commit -m '커밋메시지'
[master (root-commit) 41a723a] Init
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a.txt

 

- git log : 커밋 이력을 확인하기 위해서는 아래의 명령어를 입력한다.

$ git log
commit : 24a49403850080어쩌구저쩌구 (HEAD -> master)

Init
$ git log -1 #최근 1개 커밋
$ git log --oneline #간략한 로그
$ git log --oneline -1 #최근 한개의 커밋을 간략하게

 

Git 상태메시지

$ git status
# branch 정보
On branch master
Your branch is up to date with 'origin/master'.

# 커밋될 변경사항
# Staging area
Changes to be committed:
  # unstage => add를 취소하는 명령어(staging area -> WD)
  (use "git restore --staged <file>..." to unstage)
        modified:   cli.txt

# stage 상태가 아닌 변경사항
# Working directory
Changes not staged for commit:
  # WD => staging area
  (use "git add <file>..." to update what will be committed)
  # WD 작업 내용을 모두 삭제(되돌릴 수 없음.)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   a.txt

 

 

Git 기초흐름 - github에 repository를 생성한다.

0. 원격 저장소 설정

   - 원격 저장소 설정

  •  원격저장소(remote)로 origin 이름으로 url 추가 (add)
$ git remote add origin {url}

   - 원격 저장소 목록

$ git remote -v
origin  https://github.com/edutak/test-repo.git (fetch)
origin  https://github.com/edutak/test-repo.git (push)

 

   - 원격 저장소 삭제

  • origin 이름의 원격 저장소 설정을 삭제(remove - rm )
$ git remote rm origin

 

 

1. push : commit 한 이력이 repository로 저장된다.

$git push origin master

- 현재 폴더를 그대로 업로드 하는것이 아니라, 지금까지의 이력/버전(commit)을 push하는것이다.

- WD, Staging area의 변경사항들은 원격저장소로 push되지 않는다.

- 따라서, push 전에 $git status, $git log를 통해서 확인하는 습관을 가져야 한다.

 

1. pull

 

$ git pull origin master

- 원격 저장소 변경사항(이력)을 받아옵니다.

- 다른 작업환경이나 위치에서 작업할 때, 혹은 공동 작업에서 타인이 commit해서 이력이 변경되었을 경우 등이 있습니다. 따라서 pull을 통ㅎ애 가져온 후에 작업을 진행하는것이 좋다.