Git Log 정보

scribbling 2012. 7. 18. 15:53

 

 

 

# git log

List
  commit 번호
  commit 사용자
  commit 날짜
  commit 로그

 


# git log --stat

git log 결과 + 수정파일 리스트
간략한 수정라인 수를 보여줌

 

 


# git log --name-only

git log와 git log --stat 중간의 느낌
git log의 결과에대가 수정한 파일명만 더해져서 추력

# git log --name-status
git log --name-only 결과에 수정/삭제/추가 여부만 알려줌


git log와 git log --stat 중간의 느낌
git log의 결과에대가 수정한 파일명만 더해져서 추력

 

 


# git log --pretty=oneline
commit 내용을 한줄로 표시. commit 번호와 commit 로그만 출력

 

 


# git log -p -3

최근 3개에 대해서 상세한 내용을 보여줌
어느 파일을 어떻게 수정했는지 diff 된 결과를 출력

 

 


# git log --pretty=format:"%h,%ar,%an : %s"
commit 정보를 한줄 단위로 보여주되. format 에 맞게 보여줌
%h : commit 번호(간략)
%ar : 시간 (housrs ago, days ago)
%an : commit한 사람
%s : commit 로그

 

 


# git log --pretty=format:"%h,%ar,%an : %s" --graph
Git GUI 툴처럼 graph로 보여줌

Posted by '김용환'
,

twemcache

scribbling 2012. 7. 17. 10:51

 

 

http://engineering.twitter.com/2012/07/caching-with-twemcache.html

 

 

트위터에서 memcached 1.4.4 버전을 기반으로 만든 twemcache(https://github.com/twitter/twemcache)를 오픈했다.

 

mysql을 사용하는 twitter에 맞게 최적화되어 있다.

  • as an optimization for disk where cache is used as the in-memory serving layer to shed load from databases.
  • as an optimization for cpu where cache is used as a buffer to store items that are expensive to recompute.

 

특정 User로 인해서 mysql의 부하가 많이 심하게 높아서 고민했던 트위터가 결국 캐쉬를 도입할 수 없었던 것으로 보인다.

 

기존의 memcached가 도입했던 slab allocation의 단점을 random eviction으로 해결했다.

(memory compaction 하면서 더 이상 cache 저장을 못해서 실패하는 경우를 회피하는 방법이 없어서 재시작하는 작업을 했었다. 그러나, twitter에서는 이 부분을 쉽게 해결하기 위해서 그냥 slab 하나를 빼서, 새로운 캐쉬를 slab에 넣는 코드로 변경한듯)

 

Random eviction 데모.

http://www.youtube.com/watch?v=EtROv2or8SE&feature=youtu.be&hd=1

 

특정 tweets가 많이 사용할 때, 어떻게 사용하지 패턴을 잘 볼 수 있도록  운영을 잘 하기 위한 만든 Tool도 소개되었다. lock 없는 ring buffer로 만든 command line으로 제공되는 툴을 이용해서  비동기로 파일이나 소켓으로 dump도 할 수 있다.

Posted by '김용환'
,

 

2012년 Apple의 WWDC 동영상을 보면서.. 감탄하고야 말았다.  (애플 빠가 아니라서 잘 못챙기는데.. 얼마전에 겨우 봤다. )

 

* 감동받은 애플의 WWDC 동영상

 

 

동영상을 보면서 애플의 플랫폼과 상상력이 시각 장애인에게 큰 도움을 주는 것 같은 느낌을 받았다.  정말 이게 가능한거야? 하며 계속 감탄했다.

 

 

최근에 스마트폰 중독, 빠 양성이라는 단점도 있지만..

누군가에게 눈과 귀가 되어주며, 새로운 세상을 준 것만으로..

애플을 자랑스러워 할 것 같다.

(이래서, 애플.. 애플.. 잡스.. 잡스.. 하는 구먼.)

 

 

아이폰을 접한 한 미국의 시각장애인의 번역 글(xguru님 번역) 을 링크를 건다.  (아.. 감동)

http://xguru.net/623

 

 

나도 언젠가는 이런 일을 할 수 있겠지?? ^^;;;

Posted by '김용환'
,

 

IP를 기반으로 어느 나라에서 접근할 수 있는지 확인할 수 있는데.

이 정보를 서버에서 클라이언트로 넘겨주거나,클라이언트 자체적으로 확인해서 어느 나라에서 요청 중 인지 확인가능하게 함. !! 간단하지만 훌륭한 팁!

 

그리고, 스팸신고도 할 수 있게 해주는 센스 굿~

 

http://www.zdnet.co.kr/news/news_view.asp?artice_id=20120709110430

Posted by '김용환'
,
Posted by '김용환'
,

 

git flow에서는 기본적으로 branch 의 타입마다 subdirectory를 쓰게 되어 있다. 그러나 운영을 편하게 하기 위해서 subdirectory가 아니라 버전단위(-)로 지정 할 수 있다.

 

$ git flow init  -f

Which branch should be used for bringing forth production releases?
   - develop
   - master
Branch name for production releases: [master]

Which branch should be used for integration of the "next release"?
   - develop
Branch name for "next release" development: [develop]

How to name your supporting branch prefixes?
Feature branches? [feature/] feature-
Release branches? [release/] release-
Hotfix branches? [hotfix/] hotfix-
Support branches? [support/] support-
Version tag prefix? [] v

Posted by '김용환'
,

 

 

http://nvie.com/img/2009/12/Screen-shot-2009-12-24-at-11.32.03.png

 

 

 

현재 branch가 master이더라도 git flow release 하면, develop 브랜치로부터 만들어진다.

(master) $ git flow release start release-1.0.0
Switched to a new branch 'release/release-1.0.0'

Summary of actions:
- A new branch 'release/release-1.0.0' was created, based on 'develop'
- You are now on branch 'release/release-1.0.0'

Follow-up actions:
- Bump the version number now!
- Start committing last-minute fixes in preparing your release
- When done, run:

     git flow release finish 'release-1.0.0'

 

 

만들어둔 release branch를 git 서버에 push 한다.

(release/release-1.0.0) $ git push origin : release-1.0.0
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 314 bytes, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: => Syncing Gitorious... [OK]
To git 소스
* [new branch]      release/release-1.0.0 -> release/release-1.0.0

 

제대로 올라갔는지 확인

(release/release-1.0.0) $ git branch -r
  origin/HEAD -> origin/master
  origin/develop
  origin/master
  origin/release/release-1.0.0
  origin/test

코드 수정 후 merging 작업

(master)  $ git rebase release/release-1.0.0

 

 

(git flow release finish 'release-1.0.0' 로 할 수 있으나,  운영관점에서 조금 더 rebase 하는 게 좋은 것 같다. finish 하면 사라지는 게 좀 걸림.. 나중에 잘 merging하고 서버에서 삭제하는 게 더 좋은 것 같음.)

Posted by '김용환'
,

 

 

 

목록 보기
$ git tag

 

local내 tag 생성
$ git tag 0.0.1

 

local내 생성한 tag를 romote에 추가
$ git push origin 0.0.1


local내 있던 tag들을 한번에 올리기

$ git  push --tags


local 에 있는 tag 삭제. 지우기
$ git tag -d {tag이름}
$ git tag -d R201206081844


remote에 있는 tag 삭제
$ git push origin :tags/R201206261146

Posted by '김용환'
,

Git rollback and push

scribbling 2012. 6. 20. 14:07

 

rollback하고 그 내용으로 remote에 있는 브랜치의 내용으로 push하는 방법

(git rollback & push)

 

 <local commit 하지 않은 상태>

 

$ git checkout 브랜치이름

 

$ git log

7317f6ef41eeff958715a23316e7554341f5592b

aaaaa

 

7317f6ef41eeff958715a23316e7554341f5592c

bbbbb

 

 

$ git reset --hard 7317f6ef41eeff958715a23316e7554341f5592b
(확인)

 

$ git push -f origin 7317f6ef41eeff958715a23316e7554341f5592b:브랜치이름




 <local commit 한 상태>


$ git reset --soft HEAD^ 

$ git reset --hard HEAD^ 



<public commit 한 상태>


$ git revert HEAD



<commit, push 하고 나서 rollback>

보통 예전 버전을 받아와서 push하다가 (rebase, commit, push -f)  push -f 에서 꼬일 수 있다. 

git revert HEAD 로 사용하여 안전하게 rollback한다. 

Posted by '김용환'
,

 


* remote에 있는 branch 목록 보기

$ git branch -r


* local에 있는 branch 목록 보기

$ git branch -l


* local, remote에 있는 모든 branch 목록 보기

$ git branch -a

 

* local에 새로운 branch 만들기

$ git checkout -b feature-working-with-dbs
(또는 git branch feature-working-with-dbs)

 

* local에 만들었던 branch 삭제하기

$ git checkout master
(삭제 대상이 아닌 다른 branch로 이동 필요)

$ git branch -D feature-working-with-dbs


* local에 있는 branch를 remote로 저장하기

$ git push origin origin:refs/heads/new-feature

또는 

$ git push origin deveolp 


* remote에 있었던 branch 를 local로 다운받기

$ git checkout feature-working-with-dbs

 

* remote에 있던 branch 삭제

$ git push origin :heads/feature-working-with-dbs

Posted by '김용환'
,