Skip to content

Navigation Menu

Sign in
Sign up

Latest commit

History

48 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

howto-git-github

참고사이트

git docs
git book : 필수로 읽어야 함(한국어는 일부 명령어에 대한 설명이 빠져있는 경우 있음)
github : new repogitory 생성시 나타나는 가이드 참고

팀 개발을 위한 git, github 시작하기

동영상

드림코딩-깃,깃허브 제대로 배우기
코딩알려주는 누나
생활코딩 github
github pull request
Visual Studio Code 로 다루는 Git
Visual Studio Code에서 Git으로 협업하기
Git and GitHub for Beginners Tutorial

git GUI for windows/mac

sourcetree

실습 사이트

githowto, 예제 및 차례대로 해 볼 수 있음
git branching 실습

차례

git 용어

  • working directory : 현재 작업 directory, 소스가 있는 폴더
  • staging area : 일반적으로 Git 디렉터리에 포함된 파일로, 다음 커밋에 포함될 항목에 대한 정보를 저장합니다. index라고도 함.
  • repogitory :git directory(저장소) : 소스의 변경사항 히스토리가 저장되는 장소
  • branch(브런치) : 개발을 하다 보면 코드를 여러 개로 복사해야 하는 일이 자주 생긴다. 코드를 통째로 복사하고 나서 원래 코드와는 상관없이 독립적으로 개발을 진행할 수 있는데, 이렇게 독립적으로 개발하는 것이 브랜치다.

git 구조, 개념

  • working directory(=working tree) : 소스가 있는 폴더, .git 폴더는 제외한 부분
  • local repository : 로컬 저장소, .git 폴더(커밋, 커밋을 구성하는 객체, 스테이지)
  • remote repository : 원격 저장소
  • 파일의 상태 : untracked - tracked(unmodified/modified/staged(=cached))

  • -----------------------로컬-------------------------------------------|---원격
  • working directory(=working tree) --- staging area --- git directory --- github
  • (untracked/unmodified/modified) --- (staged(=cached)) --- (local repository) --- (remote repository)
  • (tracked : git add 한 파일은 git에서 추적 관리, unmodified/modified/staged)
  •  <------------------------------------------------------------ clone : 원격저장소에서 복사해서 새로운 디렉토리로 가져오기 
    
  •  add -> commit -> push -> : 작업파일들을 원격저장소로 올리기(push) 
    
  •  <------------------------------------------------------------ pull : 원격저장소의 정보 가져오기(fetch) + 병합하기(merge) 
    
  •  <---- fetch : 원격저장소의 정보(이력)만 가져온다. 코드는 안가져온다.
    

github에 git push 할 경우 Authentication failed 오류 발생시 처리

github 에서 로그인 password를 사용하지 못하도록 해서 https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token 을 따라 작업(아래 설정 참고)

github Personal Access Token 설정

  • 위치 : github/Settings/Developer settings/Personal access tokens/Fine-grained

다음 항목 read and write

  • Repository access
    • All repositories 또는 다른 옵션 선택
  • Permission
    • Repository permissions
      • Contents (Repository contents, commits, branches, downloads, releases, and merges.)

명령어

  • config, init, add, commit, remote, push, pull, fetch, merge, clone, branch, checkout(=switch, restore)
  • status, log
  • rebase, cherry-pick, reset, revert, stash
  • help

git 도움말 보기

git help <verb>
git help config # config 명령어에 대한 도움말
git add -h # add 명령어에 대한 간략 도움말(-h, --help)

상태를 확인 하기 위해 사용하는 명령어

# git 설정(옵션) 보기
git config core.name # core.name 의 설정 보기
git config --list # 전체 옵션값 보기
git config --global --list # 현재 사용자의 옵션값 보기
# git status 명령어는 각 상태에 맞는 명령어 사용법도 보여주므로 참고 하면 된다.
git status # show the working tree status
# commit 후의 log 보기
git log # show the commit logs
git log --oneline 
# 원격저장소 정보 보기
git remote -v # 원격 저장소명칭과 url을 보기
# 브런치 정보 보기
git branch # 로컬 저장소의 브런치 보기
git branch -v # 로컬 저장소의 브런치 보기 + 마지막 커밋 보기
git branch -rv # 원격 저장소의 브런치 보기 + 마지막 커밋 보기

git config 설정

많이 사용하는 명령어

6 git config --global user.name "ms" # user.name setting, (*필수*)
7 git config --global user.email "ms@gmail.com" # user.email setting, (*필수*) 
10 git config --global core.autocrlf true # git 에 저장시 crlf(\r\n) -> lf(\n) 으로 변환, (윈도우에서는 설치시 옵션에서 선택되므로 설정할 필요 없음)
10 git config --global core.autocrlf input # git 에 저장시 줄바꿈문자를 lf(\n) 으로 변환, (맥/리눅스, *필수*)
 git config --global pull.rebase false # pull 시에 충돌시 rebase 하지 않고 merge (윈도우에서는 설치시 옵션에서 선택되므로 설정할 필요 없음)
 git config --list
 1 git config --list # git config의 list # (*자주사용하는 명령어*)
 2 git config --global -e # .gitconfig 의 내용 보기 # (*자주사용하는 명령어*)
 3 code . # 현재폴더(.)에서 code(visual studio code) 실행 
 4 git config --global core.editor "code --wait" # git에 설정된 editor을 visual studio code 로 셋팅, --wait 는 code 가 종료될 때까지 command 가 기다림. 
 5 git config --global -e # editor 실행 
 6 git config --global user.name "ms" # user.name setting, (*필수*) 
 7 git config --global user.email "ms@gmail.com" # user.email setting, (*필수*)
 8 git config user.name # 보기 
 9 git config user.email # 보기 
 11 git config core.autocrlf # 보기
 10 git config --global core.autocrlf true # git 에 저장시 crlf(\r\n) -> lf(\n) 으로 변환, (윈도우에서는 설치시 옵션에서 선택되므로 설정할 필요 없음)
 10 git config --global core.autocrlf input # git 에 저장시 줄바꿈문자를 lf(\n) 으로 변환, (맥/리눅스, *필수*)
 11 git config core.autocrlf # 보기 
 12 git config --list # 전체 옵션값 보기
 
 # 옵션값 보기 (우선순위 local > global > system)
 git config core.name # core.name 의 옵션값 보기
 git config --list # 전체 옵션값 보기
 git config --local --list # 현재 저장소의 옵션값 보기
 git config --global --list # 현재 사용자의 옵션값 보기
 git config --system --list # 시스템의 옵션값 보기 

git 사용 방법 1

: 아직 버전관리를 하지 않는 로컬 디렉토리 하나를 선택해서 Git 저장소를 적용하는 방법
, 로컬에 git 저장소를 만들고 나서 나중에 github에 올리는 경우

많이 사용하는 명령어

> 로컬 저장소 작업
 35 echo .ipynb_checkpoints/ > .gitignore # .gitignore 파일에 git에 올리지 않는 파일 또는 디렉터리를 기록, git에 저장/추적 안됨
 
 14 git init # git 초기화, initialized empty repogitory (*필수*)
 25 git add . # working directory의 모든파일(.)을 staging area 에 추가, 이후 부터 working directory의 파일이 수정될 때마다 변경사항 추적됨(tracked) (*필수*)
 26 git status # working tree의 상태 보기 (*자주사용하는 명령어*)
 38 git status -s # 간략히 보기(-s : short) (*자주사용하는 명령어*)
 39 git diff # working directory 에서 추적(tracked)인 파일의 변경사항 보기
 40 git diff -staged # staging area의 변경사항 보기
 49 git commit -m "1-4 작업" # staging area의 파일을 git directory 로 이동, message의 내용으로 저장. (*필수*)
 50 git log # commit 한 히스토리 보기 (*필수*)
 git checkout 5813bb5 # 5813bb5 커밋으로 코드를 되돌리기(working directory 의 파일이 해당 커밋으로 변경됨)
 git checkout - # 최신커밋으로 코드를 되돌리기 
 
 > 원격 저장소 작업 
 64 git remote add origin https://github.com/mansik/python_project_20221226.git # 현재 프로젝트에 원격 repogitory를 origin 이라는 이름으로 추가 (*필수*)
 66 git remote -v # 원격 저장소 세부 보기
 67 git push -u origin master # origin(저장소), master(브런치), -u(set upstream, 이후에서 git push 시 origin, master 을 입력하지 않아도 된다. -u 는 생략가능) (*필수*)
 
 74 git add .
 76 git commit -m "add file"
 77 git push # 위에서 git push -u 를 사용했으므로 여기서는 생략해도 위에 설정된 저장소, 브런치로 push 된다.

사용 예시

 13 cd /media/ms/My/Documents/python_project_20221226/ # 프로젝트 폴더로 이동
 14 git init # git 초기화, initialized empty repogitory (*필수*)
 15 ls
 16 ls -al
 17 open .git # .git 폴더 열기 (연결된 프로그램으로 연다.)
 18 rm -rf .git # .git 폴더를 지우면 git을 사용안하는 상태로 됨
 19 git init
 20 git status # 현재 repogitory 의 상태 보기
 21 git config --global alias.st status # status 명령을 st로 alias(별칭) 를 만듬
 22 git st # git status 명령과 동일
 23 git config -h # config 명령의 도움말
 24 git status 
 25 git add . # working directory의 모든파일(.)을 staging area 에 추가, 이후 부터 working directory의 파일이 수정될 때마다 변경사항 추적됨(tracked) (*필수*)
 # git add *.txt # *.txt 를 staging area에 추가
 26 git status
 27 git rm --cached .ipynb_checkpoints/ # staging area 에서 .ipynb_checkpoints/ 폴더 삭제, 하위 디렉터리에 파일이 있으면 삭제 안됨(-r 사용)
 28 git rm --cached -h # 도움말 
 29 git rm --cached -r .ipynb_checkpoints/ # staging area에서 .ipynb_checkpoints/의 하위디렉터리 까지 삭제(-r), --cached / --staged 같음
 30 git status
 31 git rm --cached encoding.ipynb # staging area에서 해당 파일 삭제, (-r : 하위디렉터리 까지 삭제)
 32 git status
 33 git add encoding.ipynb # staging area에 추가
 34 git status
 35 echo .ipynb_checkpoints/ > .gitignore # .gitignore 파일에 git에 올리지 않는 파일 또는 디렉터리를 기록, git에 저장/추적 안됨
 36 ls -al
 37 open .gitignore 
 38 git status -s # 간략히 보기(-s : short) (*자주사용하는 명령어*)
 39 git diff # working directory 에서 추적(tracked)인 파일의 변경사항 보기
 40 git diff -staged # staging area의 변경사항 보기
 42 git diff --cashed # cashed = staged 동일
 44 git config --global -e
 # .gitcofig 파일에 아래 내용 추가 (difftool 로 code를 셋팅, code = visual studio code)
 # [diff]
 #	tool = vscode
 # [difftool "vscode"]
 #	cmd = code --wait --diff $LOCAL $REMOTE 
 46 git difftool # working directory에서 추적되고 있는 파일(tracked)에서 변경사항이 있으면 vscode가 열림.
 47 git difftool --staged # staging area 의 파일의 변경사항이 있으면 vscode가 열림.
 49 git commit -m "1-4 작업" # staging area의 파일을 git directory 로 이동, message의 내용으로 저장. (*필수*)
 50 git log # commit 한 히스토리 보기
 51 git status
 52 echo "#(책) Do It! 파이썬 생활프로그래밍 소스" > README.md
 53 git status -s
 54 git commit -a -m "add readme.md and .gitignore" # -a -m : git add . 명령과 git commit -m "" 의 명령을 같이 실행하는 것과 같음.
 55 git status -s
 56 git commit -h # 도움말
 61 git add . # working directory 의 모든 파일을 staging area 로 이동
 62 git commit -m "add readme.md and .gitignore" # commit message와 함께 commit
 63 git status -s
 64 git remote add origin https://github.com/mansik/python_project_20221226.git # 현재 프로젝트에 원격 repogitory 추가 (*자주사용하는 명령어*)
 65 git remote # 원격 저장소 명칭 보기 (origin)
 66 git remote -v # 원격 저장소 세부 보기
 67 git push -u origin master # origin(저장소), master(브런치), -u(set upstream, 이후에서 git push 시 origin, master 을 입력하지 않아도 된다. -u 는 생략가능) (*필수*)
 68 git remote -v
 69 git remote 
 71 echo "add file" > add.txt
 72 git status
 73 git status -s
 74 git add .
 76 git commit -m "add file"
 77 git push # 위에서 git push -u 를 사용했으므로 여기서는 생략해도 위에 설정된 저장소, 브런치로 push 된다.
 78 git remote
 79 git remote -v
 80 git push

git 사용 방법 정리

github에서 저장소를 새로 만들면 아래 가이드 라인이 나타난다.

echo "# test" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/mansik/test.git
git push origin master

git 사용 방법 2

: 기존 repogitory 를 clone해서 사용시, git init 할 필요 없음

git clone https://github.com/mansik/test.git my-test # my-test 폴더로 원격저장소를 다운받아서 사용
cd my-test
또는
git clone https://github.com/mansik/test.git # test 폴더로 원격저장소를 다운받아서 사용
cd test
git add README.md
git commit -m "first commit"
git push origin master
# 마지막 commit message 변경
git commit --amend -m "첫번째 커밋" # 마지막 commit message 변경
git push -f origin master # 원격저장소에 강제로 push 
# 마지막 commit 에 수정된 파일 추가 및 commit message 변경하기
git commit -m "initial commit" 
git add .
git commit --amend

git branch(분기) 다루기

3.1 Git Branching - Branches in a Nutshell

# From Git version 2.23, git checkout 대신 git switch, git restore 을 사용할 수 있음.(git checkout의 기능을 분리 시켰음)
git branch testing # testing 이라는 새로운 브런치 생성(*자주사용하는 명령어*)
git switch iss53 # 다른 브런치(iss53)로 이동, 해당 브런치의 파일을 working directory로 복사(*자주사용하는 명령어*)
# git checkout iss53 # 다른 브런치(iss53)로 이동, 해당 브런치의 파일을 working directory로 복사(git checkout 대신 git switch 사용)
echo "iss53 branch 에서 작업" > iss53.txt
git commit -a -m 'finished the new footer [iss53]'
.. iss53 브런치에서 작업 후 commit 후 
git log --oneline --decorate --graph --all # 현재 브랜치가 가리키고 있는 히스토리가 무엇이고 어떻게 갈라져 나왔는지 보여준다.
git switch master # master 브런치로 이동, git switch - # 이전 브런치로 이동
# git checkout master # master 브런치로 이동(git checkout 대신 git switch 사용)
git merge iss53 # ss53 브랜치를 master 브랜치에 Merge(합친다) , 다른 브랜치를 현재 switch된 브랜치에 Merge 하는 명령이다.
git switch -c newbranch # newbranch 를 만들고 switch 까지 한번에 함.(*자주사용하는 명령어*)
# git checkout -b newbranch # newbranch 를 만들고 checkout 까지 한번에 함.(git checkout 대신 git switch 사용)

git 원격저장소 다루기

많이 사용하는 명령어

git pull origin master # 원격저장소(origin)의 브런치(master)을 가져와서 병합한다. fetch + merge (*자주사용하는 명령어*)
git remote -v # 원격 저장소명칭과 url을 보기
git remote show origin # 원격 저장소의 URL과 추적하는 브랜치 보기

사용 예시

git remote add origin https://github.com/mansik/python_project_20221226.git # 현재 프로젝트에 원격 repogitory 추가 (*필수*), git remote add <단축이름> <url> 
git pull origin master # 원격저장소(origin)의 브런치(master)을 가져와서 병합한다. fetch + merge (*자주사용하는 명령어*)
git remote remove origin # 현재 프로젝트에서 원격 저장소 삭제
git remote -v # 원격 저장소명칭과 url을 보기 (*자주사용하는 명령어*)
git remote add origin https://github.com/mansik/python_project_20221226.git
git fetch origin # 원격 저장소의 내용을 가져온다. working directory 에 적용하지는 않는다. 로컬에서 하던 작업을 정리하고 나서(commit등) 수동으로 Merge 해야 한다
git remote show origin # 원격 저장소의 URL과 추적하는 브랜치 보기
git remote rename origin paul # 리모트 저장소의 이름을 변경, origin -> paul 로 변경
git remote # 결과는 paul 을 보여줌

About

git & github 사용법

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /