'git'에 해당되는 글 3건

  1. 2014.03.23 git을 이용한 프로젝트
  2. 2014.03.23 git 명령어 및 이용
  3. 2014.03.17 Git 을 사용한 소스 버전관리
프로그래밍 2014. 3. 23. 14:11

1.     작업 전 무조건 remote repositorysync를 맞추도록 한다.

git pull

2.     모든 변경사항은 unit 단위 혹은 line by line 식으로 모든 수정사항을 commit 한다.

git add .  명령은 변경된 파일을 스테이징영역(commit 영역으로 올린다)

git commit –m “comment for modified source”

git push origin master  => remote repository(bitbucket)으로 push한다.

기본적으로 git repository 디렉토리는 master 브랜치이다.

3.     git remote add origin repository url (ssh 경우) remote repositoryorigin이름으로 설정한다. 그래야 bitbucket의 내용을 쓰고 읽을 수 있다.

Ssh를 쓸 경우 ssh_key를 만들어서 public_keybitbucket 계정에 올려줘야 한다. 그래야 권한을 얻는다.

참조 https://confluence.atlassian.com/pages/viewpage.action?pageId=271943168

4.     remote repository 의 브랜치는 따로 설정하지 않는다. 현재 master development product 3개로 설정하였다.

사용자단말에서는 webapps/자신디렉토리/에 디렉토리를 만든다음

git clone repository url 명령으로 프로젝트를 받아올 수 있다.

5.     가끔 push 중에 에러가 나는 경우가있는데 처음에 sync를 맞추지 않았기 때문이다. 리모트의 경우가 더 최신인데 내 브랜치의 소스가 update되지 않았으므로 에러를 내는 것이다. 그런 소스를 수정해서 올리는 경우를 자동방지한다. 그래서 시작시에 sync를 맞추는 것이다.

6.     부분 기능이 완료되면 관리자가 remote repositorymaster 브랜치의 소스를 develop 혹은 product로 넘긴다. 그래서 우리는 개발중에도 따로 완성본을 보관할 수 있다. 이것이 브랜치의 목적이다. Webapps/web_renewalmain 소스가 될 것이므로 건드리지 않도록 한다.

7.     다 알겠지만 포인트마다 commit을 해야 후에 잘못되었을 경우 그 직전으로 rollback이 가능하니 최대한 포인트마다 commit을 하도록 한다

'프로그래밍' 카테고리의 다른 글

같은 4byte int와 float의 차이  (0) 2014.03.30
java version 바꾸기 ubuntu  (0) 2014.03.26
git 명령어 및 이용  (0) 2014.03.23
Git 을 사용한 소스 버전관리  (0) 2014.03.17
프로세스와 메모리의 이야기  (0) 2013.08.04
//
프로그래밍 2014. 3. 23. 04:59

git 설명을 위한 이미지


1. 시작하기
git init
git clone {remote repo}
ex1 - git clone https://github.com/bunhere/git-study.git
ex2 - git clone ../anotherGitRepo
ex3 - git clone git://github.com/bunhere/git-study.git


(추가글1)

방화벽등으로 SSL접속이 안된다면 (https)

GIT_SSL_NO_VERIFY=true git clone https://...


(추가글2)
git 관련 환경 설정 (http://live.gnome.org/Git/Developers  참조)


- 자신의 이름과 이메일 설정

git config --global user.name "Rupert Monkey"
git config --global user.email rupert@example.com

- color 설정

git config --global color.ui auto


2. 작업 내용 확인하고 커밋하기
git add [파일 또는 폴더 명]   : git에 파일 또는 폴더 추가  (. 을 적으면 현재 폴더 이하를 추가)
git rm [파일 또는 폴더명] : git에서 파일 또는 폴더 제거
git status : 현재 git 상태 보기
git commit -m "로그 메시지" : 위에서 add/rm한 상태를 git repo에 메시지와 함께 저장

git commit --amend 

(이미 commit한) 마지막 commit에 추가로 수정한 내용을 반영한다.(물론 그 전에 git add등을 해야 함)

3. 작업 내용 꺼내오기
git checout [파일 또는 폴더명] : 현재 git repo기준 마지막 commit상태로 돌림
git checkout 4ab18a1 [파일 또는 폴더명] : git repo 로그중 4ab18a1으로 시작하는 commit id로 돌림
git reset --hard master : git repo를 master branch의 최종으로 원복함

4. 가지 만들어 옮겨 다니기
git branch newb (master) : (master) branch로부터 newb 라는 이름의 브랜치를 만듬
git checkout newb : newb 브랜치의 내용을 보기 시작함

git branch -a : 현재 생성된 모든 로컬 브랜치와 원격 브랜치를 확인함

git checkout master : master 브랜치로 전환
git merge newb  : newb브랜치의 내용을 가져와 현재 브랜치에 합침


5.  원격 브랜치 추가하기.

git remote add upstream git://github.com/WebKit/webkit.git


예) master (ref origin/master)에 upstream/master를 가져와 merge할때. (github에서 mirror repo를 sync할 때 사용)

git checkout master (현재 브랜치를 마스터로 바꿈)

git fetch upstream (remote branch인 upstream branch 의 인덱스를 갱신함)
git merge upstream/master (현재 브랜치에 머지함)


git rebase newb  : newb브랜치의 내용을 가져온 후, 현재 브랜치에만 있는 커밋들을 그 뒤에 붙임.(주의)

 예를 들어 master와 newb가 아래와 같다면,
(1) - (2) - (3) - (4)                 -------------- master (현재 working branch)
           \ _ (5)                    -------------- newb
git rebase newb를 수행하고 나면 아래와 같이 됨.
(1) - (2) - (5) - (3) - (4)          -------------- master (현재 working branch)


git branch -d newb : newb 브랜치를 지움

6. 원격 브랜치 관리
master 브랜치를 rebase하고 원격 branch에 push하려고 하면 에러 git push -f가 가능해야 함.
git push origin newb : origin 에 해당하는 repo에 newb 브랜치를 올림.(없으면 생성함)
git push origin :newb : origin 에 해당하는 repo에 newb 브랜치를 지움.

7. merge fail시 내용 수정
git commit -a -m "~~"  : 수정된 상태로 commit

8. 이전 작업 내용 보기
git log -p -m : 현재까지 changeset을 모두 추출
git log --decorate {branch} : tag, branch정보등을 같이 보여준다.
git log --author=bunhere | git shortlog
 : bunhere가 작업한 commit들을 보기
git show qsz01ad:src/t.cpp : qsz01ad commit 시점의 src/t.cpp파일 내용을 확인한다.

git log -Ssource_change { -- filename } : filename의 이전 변경에서 source_change를 찾는다

git shortlog -s -n --since="YYYY-MM-DD" : author별로 커밋의 수를 모아서 보여준다.

8. git에 tag 달기
git tag -a mytag : mytag란 이름으로 로컬 브랜치에 태그 추가 (현재 위치(현재 브랜치, 현재 commit)에 반영됨)
git push origin tag mytag : remote 브랜치에 tag 반영

8. 마지막 commit을 삭제하기
git reset --hard HEAD^ : ^가 한개면 하나의 commit을 삭제하고 두개면 두개의 commit을 삭제함. 원격 repository는 당연히 수정되지 않음.

9. patch 만들기
git format-patch -M -C --output-directory {patch directory} start..end :


10. git commit 순서 바꾸기

A-B-C-D => A-C-B-D

git reset --hard A
git cherry-pick B
git cherry-pick C


git cherry-pick D

11. 지워진 파일들을 모두 git rm하기
git status --porcelain | awk '/^.D .*$/ {print $2}' | xargs git rm


git 방화벽 이슈

git config --global http.proxy http://xxx.xxx.xxx.xxx

이것만으로 안될 경우 proxy wrapper를 이용

export GIT_PROXY_COMMAND="/usr/bin/proxy-wrapper"

sudo vi /usr/bin/proxy-wrapper

#! /bin/bash
(echo "CONNECT $1:$2 HTTP/1.0"; echo; cat ) | nc 168.219.61.252 8080 | (read a; read a; cat ) 



git branch --set-upstream-to=origin/master master



출처 : http://bunhere.tistory.com/37

'프로그래밍' 카테고리의 다른 글

java version 바꾸기 ubuntu  (0) 2014.03.26
git을 이용한 프로젝트  (0) 2014.03.23
Git 을 사용한 소스 버전관리  (0) 2014.03.17
프로세스와 메모리의 이야기  (0) 2013.08.04
IA32 레지스터에 관한 글-1  (0) 2013.08.04
//
프로그래밍 2014. 3. 17. 21:33

이 문서는 Linux (ubuntu 12.04)를 기반으로 동작하는 내용이다. 거의 비슷하겠지만 조금 다를 수도 있다.

해당 작업(프로젝트) 디렉토리에서 

>>git init 

새로운 git저장소가 된다.

>>git clone (remote hosting address)

원격의 repository를 복제한다.

보통 저장소는 세부분으로 구분한다.  Working directory / Index / Head 이다.

Working directory는 말그대로 작업디렉토리이며 Index는 staging area의 역활이다. 커밋하기 전 보관되는 버퍼정도라고 생각하자. 보통 git add 를 하면 여기에 보관된다.

마지막으로 Head는 최종 commit된 내용을 갖는다.

>> git add -A  

작업디렉토리의 모든 파일을 등록한다. 


'프로그래밍' 카테고리의 다른 글

git을 이용한 프로젝트  (0) 2014.03.23
git 명령어 및 이용  (0) 2014.03.23
프로세스와 메모리의 이야기  (0) 2013.08.04
IA32 레지스터에 관한 글-1  (0) 2013.08.04
이클립스 vim 플러그인  (0) 2012.12.08
//