Notice
Recent Posts
Recent Comments
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

김쨈창고

Git 공부 메모장 본문

마크업/Git

Git 공부 메모장

류쨩 2014. 8. 27. 10:53

Git 1일차

설치

git은 최신버전을 유지해주는것이 좋다.

windows는 git 업데이트는 재설치, ​mac은 homebrew를 통한 설치를 하면 명령어만으로 업데이트 가능
(gitk는 애플git에는 기능이 없어서 homebrew로 설치하는 것이 좋다.)​

  • $gitk - 현재 저장소의 트리구조를 확인할 수 있다.​
  • 명령어 입력창[Console Emulator] : 명령어나 원하는 폰트 설정이 가능하다.

사용자설정

  • $git-config : 사용자설정 명령어
    • $git-config--global user.name 이름
    • $git-config--global user.email 이메일주소
  • $git-config--list or $git config user.name / git config user.email : 내가 설정한 git 설정을 확인하는 명령어
    사용자 설정 리스트로 자신에게 맞게 설정이 가능하다.

$git init

​$git init 폴더명 : 폴더를 생성하고 git을 적용해 준다.
commit을 하면 버전관리가 시작된다.​

Git 2일차

$git status

git저장소의 현 상태를 파악하는 명령어​, 파일의 추가/삭제/수정 등의 정보를 알 수 있다.
내가 어느 브랜치에 있는 지에 대한 정보도 알 수 있다.

git 저장소에 추가

  • $git add 파일명​ - 하나의 파일만 추가
  • $git add 파일명​ 파일명 파일명 - 여러개의 파일 추가​, 띄어쓰기로 파일구분
  • $​git add . or $git add * - 폴더내의 add 안 된 파일을 한꺼번에 추가

add를 하면, Staging Area에 올리는 과정이다. 곧 커밋할 파일에 대한 정보 저장

추가한 파일을 삭제할 때(추가 전으로 되돌리려고 할 때) - $git rm --cashed 파일명

​$git commit

  • $git commit -m '커밋 메세지' or $git commit --message '커밋 메세지'

그냥 git commit만 입력 시 메세지창이 떠서 커밋메세지를 입력하고 :wq 로 종료해야한다.
싱글쿼터('')로 작성 시 커밋이 안되면 더블쿼터("")로 작성해서 커밋한다.

​* -는 축약옵션. --는 축약된 것을 풀어서 쓴 것. ​ex) -a , --all or -m, --message

​$git stash

  • $git stash - 현재 상태를 캡쳐하여 임시공간에 저장하는 것
  • $git stash pop - 캡쳐된 상태를 가져오는 것

파일무시하기

.gitignore 파일에 무시해야 할 파일 패턴을 적는다.
​.* = .으로 시작하는 모든 것

$git diff 가장최신커밋(HEAD)..비교커밋 - 리비전 버전비교

  • ​HEAD는 가장최신
  • HEAD^ 최신이전
  • HEAD~2 최신에서 두번째

* vi 에서 코드 옆에 번호 출력 set nu

$git diff --cached

현재 working directory랑 add된 거랑 비교

$git log​

현재 내 저장소의 로그를 확인
$git log -p

Git 3일차

되돌리기

  • $--amend - git 커밋전상태로 되돌아가는 것. push하기 이전에만 실행가능
  • $git reset HEAD 파일명
    add한 파일을 unstage 상태로 되돌리는 방법
    ​commit 된 파일뿐만아니라 working directory에 있는 파일까지도 되돌릴 수 있다.​
  • ​$git checkout --파일명 - add된 상태에서 수정(modify)됐을 때 checkout을 사용하면 되돌릴 수 있다.

​git 브랜치

  • 브랜치 생성 - $git branch 브랜치명
  • 브랜치로 이동 - $git checout 브랜치명​
  • 브랜치생성해서 옮겨가기 - $git checkout -b 브랜치명

​merge​

$git merge 브랜치명
master로 파일을 모아야 하면 master로 이동한 후 merge가 되어야 한다.

  1. $git checkout 수정된 내용이 합쳐질 브랜치명
  2. $git merge 머지할 브랜치명

* fast-forward
merge의 종류가 fast-forward와 3-way-merge가 있는데 가장 많이 접하게 될 merge종류(progit 63page)​

  • $git branch -v : 마지막 커밋 메세지 보는 명령어 ​
  • $​git branch --merged : 현재 checkout한 브랜치 기준으로 merge된 브랜치인지 아닌지 확인하는 명령어
  • $​git branch --no-merged : 현재 checkout한 브랜치 기준으로 merge되지 않은 브랜치를 확인하는 명령어
  • $git branch -d 브랜치명 : 브랜치를 삭제하는 명령어. 삭제될 브랜치에서 checkout되어 있으면 안된다.
  • $git branch -D 브랜치명 : merge되지 않은 정보가 있을 경우, -d로 삭제하면 삭제가 안되므로, 강제적으로 -D(대문자)를 사용하면 강제적으로 삭제된다.

​git merge 충돌

충돌된 파일정보는 git status로 확인가능
파일 아이콘에 느낌표 뜨게하는 것은 totoise git을 설치해야한다.

기존과 관계없는 branch를 만들 수 있는 방법

$git checkout --orphan 브랜치명

etc폴더같은 느낌
기존에 있는 branch들과 연관성이 없이 따로 가지고 작업할 수 있다.
​http://git-scm.com/docs/git-checkout/1.7.3.1

Git 4일차

git remote 저장소

​$git clone url
git 저장소를 복사하고 싶을 때 사용하는 명령어

​$git remote -v

git clone 한 주소를 확인하는 명령어
​* git clone을 하면 origin이라는 별명으로 리모트 저장소가 자동으로 등록됨

​$git remote --help

설명확인

$git remote add 단축이름 url

​git remote 저장소를 추가
단축이름과 url은 기본 필수 요소이며, 단축이름으로 나중에 굳이 url을 다 입력하지 않고 단축이름만으로 적용가능

$git remote rm 단축이름

git remote 저장소 삭제

$git fetch 리모트 저장소 이름

로컬에는 없지만, 리모트 저장소에 있는 데이터를 모두 가져온다.
fetch명령은 리모트 저장소에 있는 데이터를 모두 로컬로 가져오지만 자동으로 merge하지는 않는다.​
​repository에 있는 상태이며, 필요에 따라 working directory로 merge한다.
​$git merge origin/master : git fetch를 merge한다.

$git pull

리모트 저장소에 있는 데이터를 모두 가져오는 동시에 merge한다
* git fetch + merge = git pull

​$git push 리모트저장소이름 브랜치이름

리모트저장소이름은 추가시 지정한 단축이름이나 주소를 치면된다.
프로젝트 작업시에는 해당 remote 서버에 멤버로 등록이 되어있어야 reject 안된다.
내가 가진 정보보다 서버쪽 정보가 최신일 경우, reject당할 수 있으며 이 경우 git fetch나 git pull로 최신정보를 업데이트하고 다시 push를 해준다.

내가 한번이라도 push를 했다면, 그 다음번부터는 자동으로 매칭되어 push 해준다.

$git remote show 리모트저장소이름

리모트저장소의 구체적인 정보를 확인할 수 있다. 항상 최신정보만 확인
삭제된 리모트 정보도 나온다

​$git branch -r

​git 저장소의 브랜치목록을 확인할 수 있다. 내가 가진 정보만을 토대로 확인

$git fetch --prune

다른사람이 remote서버에서 삭제하면 --prune 옵션으로 fetch 받을 시 내거에서도 삭제할 수 있다.
* 위험한 옵션이므로 사용안하는 것이 좋을듯..?!

$git push 리모트저장소 :삭제할브랜치

ex) git push origin :141014_branch​
  • $git remote 저장소 브랜치 삭제하기
  • $git push [리모트저장소] [로컬브랜치]:[리모트브랜치] 형식에서 로컬브랜치 부분을 비워둔 채 실행하면 "로컬에서 빈 내용을 리모트의 리모트브랜치에 채워넣어라"​라는 뜻이 되어 빈 것은 삭제가 되는 것

'마크업 > Git' 카테고리의 다른 글

git bash에서 한글이 깨질 경우  (1) 2018.03.07
Git 사용하기  (0) 2016.07.14
Git 명령어  (0) 2015.06.10
Comments