취코, 취하다 코딩에~

GitHub 사용법 본문

프로그래밍/쓸모 있는 잡 지식

GitHub 사용법

drinkcode 2018. 2. 11. 20:18



https://github.com/jeonghwan-kim/git-usage

http://www.devpools.kr/2017/02/05/%EC%B4%88%EB%B3%B4%EC%9A%A9-git-%EB%90%98%EB%8F%8C%EB%A6%AC%EA%B8%B0-reset-revert/

중심적으로 볼 것
GitHub SourceTree Sublime Text
commit push pull checkout branch stash merge reset rebase

commit
이 파일의 수정이 끝났다. 이 파일의 의미있는 수준의 수정 작업이 끝난걸 git에게 알려줌

git commit -a

이 커밋들을 뭉쳐서 수정한 내용을 간략하게 표현하기 위한 '커밋 메시지' 기록


월,화,수목,금 파일이 있는데 이 파일들을 변경하지 않고 새로운 월,화,수,목,금 일정을 만들려면?
branch - 상태를 저장하는 공간, 원래 있는 파일들을 수정하지 않고 복사해와서 새로운 실험하기
상태란 모든 것이다. 파일, 파일의 내용, 커밋 정보 등 git이 관리하는 모든것

이제 init명령어로 모든 변경 내용을 커밋 단위로 추적한다.
이 때 master라는 브랜치를 기본으로 생성
이후 commmit 내용을 브랜치 기준으로 저장

작업중 브랜치 위치를 가리키는 것을 HEAD라고 한다.
중간에 브랜치 위치를 이동하고 싶으면 checkout을 한다.

실험에 실패하면 삭제하거나 그대로 두면 되고
실험에 성공하면 merge 한다.

같이 일 공유 하는법
리모트 저장소로 한다.
리모트 저장소에서 다운로드(복제)하는 걸 clone이라 한다.
리모트 저장소에 변경된 내용을 내 컴퓨터에 적용하는걸 pull이라 한다.(merge와 비슷한 현상 발생)
내 컴퓨터에서 작업해서 변경된 내용을 리모트 저장소로 보내는걸 push라 한다.


추적하는(관심의 대상이 되는)

--bare 옵션은 워킹 디렉토리가 없는 장소
사용자@서버:/위치

git clone <repo> - 복제
git clone <repo> <directory> - 복제한걸 다른 이름으로 만듬

설정 확인
git config --list

계정 설정
git config --global user.email "you@example.com"
git config --global user.name "Your Name"

명령어 줄이기
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status
$ git config --global alias.last 'log -1 HEAD'
$ git config --global alias.unstage 'reset HEAD --'  -  reset HEAD를 unstage라고 해도 인식

Changes to be committed”- staged 상태 의미
Changes not staged for commit - 수정한 파일이 Tracked 상태이지만 아직 Staged 상태는 아니라는 것이다., Staged 상태로 만들려면 git add 명령을 실행해야 한다.(add는 추가와 staged상태로 만드는 명령 두개)

Git은 파일을 Commited, Modified, Staged 세가지 상태로 관리한다.
  - commited : 데이터가 로컬 저장소에 안전하게 저장됐다는 것을 의미함
  - modified : 수정한 파일을 아직 로컬 저장소에 commit하지 않은 것을 의미함
  - staged : 현재 수정한 파일을 곧 Commit할 것이라고 표시한 상태를 의미함.(commit하기전 중간 저장소)

Git은 Git Directory, Working Directory, Staging Area 세가지 영역으로 분리된다.
  - Git Directory : Git이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳을 말한다.  (.git)
  - Working Directory : 수정할 파일들이 있는 디렉토리
  - Staging Area : Git Directory에 있으며, 단순한 파일이고 곧 commit할 파일에 대한 정보를 저장한다.

 
Working Directory의 모든 파일은 Tracked와 Untracked로 나뉜다.
   - Tracked 파일은 이미 Snapshot에 포함돼 있던 파일이며, Unmodified, Modified, Staged 상태중 하나의 상태를 갖는다.
   - Tracked 파일이 아닌 모든 파일은 Untracked 파일이다.
   - Git의 파일 라이브 사이클은 아래의 그림과 같다.


Git에서 branch는 커밋 사이를 가볍게 이동할 수 있는 어떤 포인터 같은 것이다. git은 기본적으로 master 브랜치를 만든다.  Git은 최초로 커밋하면 master라는 이름의 브랜치를 만들고, 자동으로 master 브랜치가 가장 마지막 커밋을 가리키게 한다.

Git은 HEAD라는 특수한 포인터를 갖고 있다. 이 포인터는 지금 작업하고 있는 로컬 브랜치를 가리킨다. "git branch <brnach명>" 명령은 브랜치를 만들기만 하고 브랜치를 옮기지는 않는다. "git checkout <branch명>"명령으로 HEAD가 가리키는 브랜치로 이동할 수 있다.

$ git init             // CWD에 ".git" 하위 디렉토리 생성
$ git add *         // CWD의 모든 파일 및 하위 디렉토리를 staged 상태로 만든다.
$ git  commit -m 'initail project version'    // stage된 파일을 commit 한다. (commit message가 반드시 필요함!!!)
$ git commit -a -m 'commit message'     // 수정된 Tracked 파일들을 staging 단계 없이 바로 commit 함 

github명령어 설명 사이트
http://demun.tistory.com/2433
http://dimdim.tistory.com/entry/GIT%EC%97%90-%EB%8C%80%ED%95%9C-%EB%82%B4%EC%9A%A9%EC%A0%95%EB%A6%AC-%EC%A0%95%EB%A6%AC%EC%A4%91
https://www.atlassian.com/git/tutorials/setting-up-a-repository - 그림만 보는용

gitlab 사용법
http://demun.tistory.com/2431

 


기트 배우기
http://learnbranch.urigit.com/

git init - 폴더를 만들고 이 명령어를 하면 git 저장소가 만들어진다.
git clone /로컬/저장소/경로 - 로컬 저장소 복제
git clone 사용자명@호스트:/원격/저장소/경로

로컬 저장소 git이 관리하는 세 그루의 나무로 구성되있다.
첫번째 - 작업 디렉토리
두번째 인덱스 - 준비 영역
마지막 HEAD - 최종 확정본

변경 파일은 아래 명령어로 추가
git add <파일 이름>
git add *

확정시
git commit -m "이번 확정본에 대한 설명"

변경내용 push하기
git push origin master(다른 가지로 할려면 master를 가지 이름으로)
git remote add origin <원격 주소>

가지치기
git checkout -b feature_x -가지 만들기
git checkout master - 가지로 돌아오기
git branch -d feature_x 가지 삭제
git push origin <가지이름> - 새로 만든 가지를 원격저장소로 전송하기 전까지 다른 사람들이 접근할 수 없다.

저장소 갱신
git pull
가지 병합
git merge <가지 이름>
두개 명령어다 병합을 시도한다. 그렇기에 충돌 날수도 있다.
그럴시 충돌해결후
git add <파일 이름>으로 파일 병합
병합하기전 어떻게 바뀌었는지 비교
git diff <원래 가지> <비교 대상 가지>

git checkout -- <파일 이름> - 변경 내용을 변경 전으로 돌려줌

모든 확정본 포기
git fetch orgin
git reset --hard origin/master

git의 내장 GUI
gitk
콘솔에서 git output을 컬러로 출력
git config color.ui true
확정본을 한줄로 표시
git config format.pretty oneline
파일을 추가할 때 대화식으로 추가
git add -i

Git는 브랜치를 먼저 만들고 구현한 다음에 master branch에 통합하는 습관을 들여놓지 않으면 다루기 어렵구나 

 


'프로그래밍 > 쓸모 있는 잡 지식' 카테고리의 다른 글

워게임, 보안 동아리, 보안 기업, 보안 소식  (0) 2018.02.11
빅데이터  (0) 2018.02.11
여러가지 API사용법  (0) 2018.02.11
개발자의 자세  (0) 2018.02.11
DB 명령어  (0) 2018.02.11
Comments