반응형

출처 : http://gitready.com/advanced/2009/01/17/restoring-lost-commits.html

잃어버린 commit들 복구하기

만약 당신이 마지막 commit을 버리기 위해 git reset --hard HEAD^ 를 실행하였습니다. 그런데 그 변경이 필요하지 않았음이 밝혀졌습니다.  당신은 두 번 다시 완벽하게 알고리즘을 구현할 수 없고 다시 원래대로 복구해야 합니다. 겁먹지 말고 git은 당신의 잃어버린 그 commit을 가지고 있습니다. reset할 때 당신이 버린 commit은 "dangling" 상태가 됩니다. 그것은 git의 데이터로 보관되어 있고 다음 garbage collection 때 치워질 것입니다. 당신이 위 명령을 실행했을 때 부터 git gc를 실행하지 않는다면 당신은 그것을 복구할 수 있습니다.

예를 들어 저는 이 블로그를 위한 코드를 작성하였습니다. 그리고 바로 다음을 실행합니다.

$ git show-ref -h HEAD
  7c61179cbe51c050c5520b4399f7b14eec943754 HEAD

$ git reset --hard HEAD^
  HEAD is now at 39ba87b Fixing about and submit pages so they don't look stupid

$ git show-ref -h HEAD
  39ba87bf28b5bb223feffafb59638f6f46908cac HEAD

우리의 HEAD는 하나의 commit으로 저장된 상태입니다. 이 때 우리는 git pull으로 그것을 원래대로 돌릴 수 있다면 우리의 local repository는 그 commit을 알고 있다고 가정할 수 있습니다. 우리는 그것을 원래대로 돌리기 위해 그 commit의 SHA1이 필요합니다. 우리는 fsck명령으로 그 commit에 대해 알고 있다는 것을 증명할 수 있습니다.

$ git fsck --lost-found
  [... some blobs omitted ...]
  dangling commit 7c61179cbe51c050c5520b4399f7b14eec943754

또한, git은 reflog명령을 사용하여 아직 그 commit에 대해 알고 있다는 것을 확인 할 수 있습니다.

$ git reflog
  39ba87b... HEAD@{0}: HEAD~1: updating HEAD
  7c61179... HEAD@{1}: pull origin master: Fast forward
  [... lots of other refs ...]

결국, 우리는 복구하고자 하는 SHA1:7c61179 을 알았습니다. 만약 현재 branch에 복구하고자 하는 그 commit을 바로 적용하려면, git merge함으로서 그 commit으로 복구할 것입니다.

$ git merge 7c61179
  Updating 39ba87b..7c61179
  Fast forward
    css/screen.css |    4 ++++
    submit.html    |    4 ++--
    2 files changed, 6 insertions(+), 2 deletions(-)

이 명령은 우리의 잃어버린 변화들을 되돌릴 것이고 HEAD가 그 commit을 가리키도록 보장할 것입니다. 여기서부터 평소처럼 작업을 이어서 할 수 있습니다. 또한, 당신은 새로운 branch로 복구할 SHA1을 checkout할 수 있지만 merge가 당신이 그 hash를 가지고 있을 때 잃어버린 commit을 복구하는 가장 빠르고 쉬운 방법입니다. 혹시 당신이 다른 방법을 알고 계시면 댓글을 남겨주세요!

만약 이러한 상황에서 할 수 있는 더 많은 option들을 알고 싶다면, Mathieu Martin’s illustrated guide to recovering lost commits with Git이 충분히 당신에게 도움이 될 것입니다.


반응형
반응형

출처 : http://stackoverflow.com/questions/5471174/git-move-branch-pointer-to-different-commit

Git: branch 포인터를 특정 commit으로 이동하게 하기.

check-out된 branch의 포인터를 이동하기 위해 git reset --hard 명령을 사용할 수 있습니다. 하지만 check-out되지 않은 branch의 포인터를 다른 commit을 가리키도록 이동하는 방법을 알고 싶습니다. (기존에 추적중인 원격 branch같은 다른 정보들은 유지되어야 합니다.)


3 개의 답변 중 1개의 답변만 추려냄.

git branch -f <branch-name> [<new-tip-commit>]

만약 new-tip-commit 이 생략되면 기본적으로 현재 commit을 가리킵니다.

반응형

'Git' 카테고리의 다른 글

git log  (0) 2015.08.31
Git에서 새롭고 비어 있는 branch를 만드는 방법  (0) 2015.07.17
Git: 파일 checkout 없이 git branch 변경하기  (0) 2015.03.18
잃어버린 commit들 복구하기.  (0) 2015.01.22
git config  (2) 2014.11.14
반응형



Git 최초설정

/etc/gitconfig 파일 : 시스템의 모든 사용자와 모든 저장소에 적용되는 설정. git config --system 옵션으로 이 파일을 읽고 쓸 수 있다.

~/.gitconfig 파일 : 특정 사용자에게만 적용되는 설멍이다. git config --global 옵션으로 이 파일을 읽고 쓸 수 있다.

.git/config : 이 파일은 Git 디렉터리에 있고 현재 작업 중인 프로젝트에만 적용된다. 각 설정은 역순으로 우선시된다. 그래서 .git/config가 /etc/gitconfig보다 우선한다.

프로젝트마다 적용하고 싶으면 --global 옵션을 빼고 명령을 실행한다.

설정 확인

git config --list : 설정한 모든 것을 보여준다.


사용자 정보

Git이 커밋할 때 사용하는 사용자 정보를 설정한다.

git config --global user.name "John Doe"

git config --global user.email johndoe@example.com

편집기

Git에서 사용할 텍스트 편집기를 고른다.

git config --global core.edit emacs

Diff도구

Git에서 Merge 충돌을 해결하기 위해 사용하는 Diff도구를 설정할 수 있다.

git config --global merge.tool vimdiff

vimdiff 참조 

http://blog.daum.net/trvoid/236


출처

http://git-scm.com/book/ko/v1/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-Git-%EC%B5%9C%EC%B4%88-%EC%84%A4%EC%A0%95


git commit 메세지 인코딩 관련 정보

git config --global i18n.commitEncoding cp949

메세지를 commit할 때 저장될 메세지의 인코딩 정보.

git config --global i18n.logoutputencoding cp949

git log, git show, git blame 명령어로 화면에 보여줄 때 출력될 문자열의 인코딩 정보. 없으면 i18n.commitEncoding를 사용한다.


출처

http://nabiro.tistory.com/153

https://www.kernel.org/pub/software/scm/git/docs/git-commit.html


git에서 파일 권한 변화를 무시하도록 설정하는 방법이 있을까요?
예시)Git에서 unstaged changes로부터 "oldmode 100755 new mode 100644"를 제거하는 방법?
git config --global core.fileMode false
현재 프로젝트에 적용하는 방법
git config core.fileMode false

출처


반응형
반응형

출처 : http://stackoverflow.com/questions/924729/mysql-select-many-fields-how-best-to-display-in-terminal

SELECT가 많은 칼럼 필드들을 가질 때 터미널에 최고의 방법으로 표시하는 방법은?


저는 Putty를 사용하고 있고 다음 쿼리를 실행하였습니다.

mysql> SELECT * FROM sometable;

'sometable'은 많은 필드 칼럼들이 있고 터미널에 표시될 많은 칼럼들이 결과로 있습니다. 다음 줄까지 필드들이 표시되어 있어서 필드 값과 컬럼 제목을 보는데 어렵습니다.

터미널에서 이러한 데이터를 보는 해결책은 무엇이 있을까요?

(추신 : 저는 phpMyAdmin이나 다른 GUI 인터페이스에 접근할 수 없습니다.)

MySQL 쿼리 결과를 text나 CVS로 명령어로 저장하는 방법이나 명령어를 입력하늡 방법같은 해결책을 찾아주셨으면 합니다.

---------------

8 개의 답변 중 2개의 답변만 추려냄.

1. 이 방법이 유용할 것입니다. (윈도우는 안됨):

mysql> pager less -SFX
mysql> SELECT * FROM sometable;

이 쿼리는 위의 파라미터로 된 less 명령어를 통해 파이프로 출력할 것입니다. 또한 이 쿼리는 테이블 출력을 화살표 키를 이용하여 가로 세로 스크롤(이동)되게 할 수 있습니다.

q  키를 누르면 이 보기를 끝내며 less 툴을 종료할 것입니다.

2.

SELECT * FROM sometable\G

위 쿼리의 행은 다음처럼 표시될 것입니다.

*************************** 1. row ***************************
             id: 1


반응형
반응형

출처 : http://stackoverflow.com/questions/24671049/query-for-a-relation-between-calendar-object-and-espers-eql


There is a class becoming event objects. 

객체가 되려는 다음과 같은 클래스가 있습니다.

class StockTickEvent { Calendar timestamp; ... }


Also, there is an EQL statement. 

또한, 다음과 같은 EQL 문장이 있습니다.

select * from StockTickEvent.win:ext_timed(timestamp, 10 seconds)


Is the class right or valid for this EQL statement? If so, what type can timestamp be? For example, the type of timestamp can be Calendar, Date, or long(unix time value).

이 클래스가 이 EQL 문장에 맞나요? (유효한가요?) 그렇다면 timestamp 변수 타입은 무엇이 될 수 있나요? 예를 들자면 Calendar, Date, long이 있습니다.


답변

The ext-timed data window takes an expression returning a long value. You could add a method to the event returning the long-msec for the calendar.

ext-timed 데이터 윈도우는 long 값을 리턴하는 표현을 취합니다. calendar(로 사용한 변수)에 대해 long-msec을 리턴하는 이벤트를 가지는 메소드를 추가해야 합니다.

반응형
반응형

출처 : http://stackoverflow.com/questions/15691977/why-start-a-shell-command-with-a-backslash

왜 쉘 명령어가 \(백슬래시)로 시작하나요?

\curl -L https://get.rvm.io | bash -s stable

왜 이 명령어가 '\'로 시작하나요 ? 여기를 클릭하면 제가 본 사이트입니다.

2개의 답변

alias curl='curl --some --default --options'

만약 당신이 curl 이란 alias를 설정해 놓았고 이 alias를 사용하고 싶지 않다면 백슬래시를 넣음으로써 alias를 사용하게 않고 curl 바이너리를 직접 실행하도록 합니다.

이는 현재 사용중인 쉘(shell)에서만 적용됩니다. alias는 쉘 스크립트에서는 효과가 없기 때문에 거기엔 넣을 필요가 없습니다. 




 Bourne/POSIX 쉘 명세서는 says 현재 사용중인 쉘에서 alias 치환은 명령어가 인용에 사용하는 문자들이 있을 때 억제된다고 설명이 되어 있습니다. 백슬래시가 그 중 한 방법이고 작은 따옴표와 큰 따옴표를 통해 다른 알려진 방법으로 인용하는 방법도 있습니다. 다음 모두는 alias 치환을 억제할 것입니다.
 \curl
 cur\l
 \c\u\r\l
 "c"url
 "curl"
 "c""u""r""l"
 'curl'
 'cu'"rl"

 \curl 를 사용하는 것은 가장 보편적이고 읽기 쉬운 방법입니다. 이는 표준화된 특징이기 때문에 모든 Bourne 쉘에서 잘 작동할 수 있습니다.

반응형

'리눅스 shell' 카테고리의 다른 글

ssh를 사용하여 원격 컴퓨터의 shell script를 실행하는 방법?  (0) 2015.03.26
rsync  (0) 2015.02.17
fg  (0) 2011.08.03
iostat  (0) 2011.08.03
ntsysv  (0) 2011.07.12
반응형

스마트폰(웹)을 통한 PING 체크

1. 장점

스마트폰, 태블릿, PC 등의 기계에 상관없이 웹을 통해 여러 호스트들을 동시에 핑을 쏘아 확인할 수 있습니다.

2. 사용법

1. 주소(도메인 또는 IP)를 입력하신 후 추가를 클릭합니다.
2. 시작을 누르시면 호출주기마다 핑을 체크하게 됩니다.
3. 상태가 이면 ping 성공, 이면 ping 실패입니다. 
※ 언제든지 주소(도메인 또는 IP)는 추가하실 수 있습니다.

3. 제작정보

링크 : http://webping.url.ph



반응형

'My Work' 카테고리의 다른 글

텔레그램 숫자야구 봇  (0) 2015.09.30
1. CLang-LLVM 설치  (6) 2015.04.19
마이피플 숫자야구 봇  (8) 2013.07.30
Wheeler(마우스 휠버튼을 이용한 화면 캡쳐프로그램)  (2) 2010.12.19
FreeTDS  (0) 2010.02.11
반응형

최근 맥북을 험하게 다루었더니 사용하면서 다음과 같은 문제가 있었습니다.

1. 배터리 인디케이터가 화면에서 안나타납니다.

2. 팬이 쉬지 않고 돌아갑니다.

3. 전원쪽 연결선에 불이 안 나타 납니다.

그래서 다음과 같은 글을 서핑하여 찾아 문제를 해결하였습니다.

출처 : http://macnews.tistory.com/742

---------------------------------------------------------------

1-1. SMC(System Management Controller)

SMC는 전원이나 방열 팬, 백라이트 및 부팅 등 맥 전원 체계와 시스템에 연결된 각종 외부 장치들을 총제적으로 관리하는 칩입니다. 다음과 같은 문제가 발생할 경우 SMC를 초기화하는 것으로 효과를 볼 수 있습니다.

• 배터리 관련 이상 증상
• 배터리 인디케이터 오작동
• 디스플레이 밝기 관련 이상 증상
• 키보드 백라이트 관련 이상 증상
• 시스템 팬 관련 이상 증상
• 전원 버튼 오작동
• 잠자기 관련 이상 증상
• 외부 전원(USB, FireWire등) 관련 이상 증상
• 외부 장치(USB HDD등) 관련 이상 증상
• 외부 모니터 인식 문제
• 에어포트 및 블루투스 관련 이상 증상
• 급작스럽게 시스템 전원이 나가는 증상
• SMS(하드 충격 방지 시스템) 오작동

1-2. SMC 초기화(리셋) 방법

• 포터블 맥(배터리를 탈착할 수 있는 구형 맥북 모델)

1. (맥이 켜져 있는 상태라면) 맥을 종료시킵니다.
2. 전원 케이블을 맥에서 연결 해제합니다.
3. 배터리를 제거합니다.
4. 전원 버튼을 5초간 눌러준 후 손을 땝니다.
5. 배터리를 다시 장착하고 전원 어댑터를 연결합니다.
6. 전원 버튼을 누르고 OS X을 부팅해 줍니다.

• 포터블 맥(배터리를 탈착할 수 없는 맥북 모델)

1. (맥이 켜져 있는 상태라면) 맥을 종료시킵니다.
2. (전원 케이블이 분리되어 있는 상태라면) 전원 케이블을 연결해 줍니다. (배터리 탈착가능한 모델과 반대입니다.)
3. 내장 키보드의 왼쪽 shift + control + option + 전원 버튼을 동시에 눌러줍니다.
4. 마찬가지로 동시에 위 키들에서 손가락을 땝니다.
5. 전원 버튼을 눌러 맥을 시동시킵니다.

• 데스크탑 맥(아이맥, 맥미니, 맥 프로 등)

1. (맥이 켜져 있는 상태라면) 맥을 종료시킵니다.
2. 전원 플러그를 뽑아 줍니다.
3. 15초 대기합니다.
4. 전원을 다시 연결합니다.
5. 5초 동안 기다렸다 전원 버튼을 눌러 컴퓨터의 전원을 켭니다.


반응형
반응형

참조사이트 - http://bugs.mysql.com/bug.php?id=9957

다음과 같은 경우

> select  round(87.875,2);

+------------+

| round(87.875,2)|

+------------+

| 87.87          |

+------------+

올바른 값은 87.88 입니다.


참조사이트 - http://www.soen.kr/lecture/ccpp/cpp1/8-1-4.htm

위의 경우처럼 반올림이 잘 안될 경우 floor함수를 사용하여 문제를 해결하였습니다.

round(87.875,2) => floor(87.875*100+0.5) / 100

위의 경우는 3째자리에서 2째자리로 반올림하기 때문에 100을 곱하고 0.5를 더한 뒤 floor한 후 100을 나누었습니다.

3자리일 경우 1000(10의 3승)을 곱하고 1000을 나누고 4자리일 경우 10000(10의 4승)을 곱하고 10000으로 나누시면 됩니다.



반응형
반응형

공개된 마이피플 봇 API 를 이용하여 숫자야구 게임을 만들어 보았습니다.

사람이 아닌 프로그램이 응답함으로써 컴퓨터와 서로 숫자야구 게임을 하실 수 있습니다.

마이피플 아이디 : ps.bot

홈페이지 : http://sdr1982.hosting.bizfree.kr/ps/

다음 이미지는 마이피플을 통해 직접 플레이한 게임 예시입니다.


반응형

+ Recent posts