출처 : http://ecogeo.tistory.com/276


개별파일 원복
git checkout  -- <파일> : 워킹트리의 수정된 파일을 index에 있는 것으로 원복
git checkout HEAD -- <파일명> : 워킹트리의 수정된 파일을 HEAD에 있는 것으로 원복(이 경우 --는 생략가능)
git checkout FETCH_HEAD -- <파일명> : 워킹트리의 수정된 파일의 내용을 FETCH_HEAD에 있는 것으로 원복? merge?(이 경우 --는 생략가능)


index 추가 취소
git reset -- <파일명> : 해당 파일을 index에 추가한 것을 취소(unstage). 워킹트리의 변경내용은 보존됨. (--mixed 가 default)
git reset HEAD <파일명> : 위와 동일


commit 취소
git reset HEAD^ : 최종 커밋을 취소. 워킹트리는 보존됨. (커밋은 했으나 push하지 않은 경우 유용)
git reset HEAD~2 : 마지막 2개의 커밋을 취소. 워킹트리는 보존됨.
git reset --hard HEAD~2 : 마지막 2개의 커밋을 취소. index 및 워킹트리 모두 원복됨.
git reset --hard ORIG_HEAD : 머지한 것을 이미 커밋했을 때,  그 커밋을 취소. (잘못된 머지를 이미 커밋한 경우 유용)
git revert HEAD : HEAD에서 변경한 내역을 취소하는 새로운 커밋 발행(undo commit). (커밋을 이미 push 해버린 경우 유용)


워킹트리 전체 원복
git reset --hard HEAD : 워킹트리 전체를 마지막 커밋 상태로 되돌림. 마지막 커밋이후의 워킹트리와 index의 수정사항 모두 사라짐.
                                  (변경을 커밋하지 않았다면 유용)
git checkout HEAD . : ??? 워킹트리의 모든 수정된 파일의 내용을 HEAD로 원복.
git checkout -f : 변경된 파일들을 HEAD로 모두 원복(아직 커밋하지 않은 워킹트리와 index 의 수정사항 모두 사라짐. 신규추가 파일 제외)

 


* 참조 : reset 옵션
--soft : index 보존, 워킹트리 보존. 즉 모두 보존.
--mixed : index 취소, 워킹트리만 보존 (기본 옵션)
--hard : index 취소, 워킹트리 취소. 즉 모두 취소.


* untracked 파일 제거
git clean -f
git clean -f -d : 디렉토리까지 제거

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

svn 태그  (0) 2012.08.10
경고 : C4532  (0) 2012.06.20
ForSwitchJump  (0) 2012.03.26
std::tr1::tuple  (0) 2012.03.13
SVN 특정 리비전 롤백하기  (0) 2012.02.09

ForSwitchJump

프로그래밍 2012. 3. 26. 10:14


//0 a->b
//1 c->e
//2 c->d->b
//[for문의 break]와 [switch문의 case,default]의 위치조정으로 다양한 스타일 구현가능
int ForSwitchJump(int iSwitch)
{
 switch (iSwitch)
 {
 case 0:
  std::cout << "SectionA" << std::endl;
  for ( ; ; )
  {
   std::cout << "SectionB" << std::endl;
   return 0; default:
   std::cout << "SectionC" << std::endl;
   if (iSwitch % 2)
   {
    break;
   }
   std::cout << "SectionD" << std::endl;
  }
  std::cout << "SectionE" << std::endl;
 }
}

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

경고 : C4532  (0) 2012.06.20
[git] 작업의 취소  (0) 2012.05.10
std::tr1::tuple  (0) 2012.03.13
SVN 특정 리비전 롤백하기  (0) 2012.02.09
svn 계정 정보 초기화  (0) 2012.02.01

std::tr1::tuple

프로그래밍 2012. 3. 13. 14:46


std::pair 의 확장판

 

#include <tuple>

std::tr1::tuple< int, int, bool, int > tupleMy( 3, 4, true, 5 );

tupleMy = std::tr1::tuple< int, int, bool, int >( 4, 3, false, 5 );

std::tr1::get<0>(tupleMy) = 5;

std::cout << std::tr1::get<1>(tupleMy);

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

[git] 작업의 취소  (0) 2012.05.10
ForSwitchJump  (0) 2012.03.26
SVN 특정 리비전 롤백하기  (0) 2012.02.09
svn 계정 정보 초기화  (0) 2012.02.01
VS warning 제거  (0) 2011.12.16


한개
513을 지우려면
svn merge -c -513 ./Trunk

여러개
r513~r520 을 지우려면
svn merge -r 520:512 ./Trunk

충돌 처리후 커밋

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

ForSwitchJump  (0) 2012.03.26
std::tr1::tuple  (0) 2012.03.13
svn 계정 정보 초기화  (0) 2012.02.01
VS warning 제거  (0) 2011.12.16
익셉션 안에서 콜스텍 출력  (0) 2011.12.01


Win7 : C:\Users\[사용자]\AppData\Roaming\Subversion\auth\svn.simple
    (확실치않다 결론은 Subversion\auth\svn.simple 를 지운다는것 어딘가있다.)

XP : C:\Documents and Settings\[사용자]\Application Data\Subversion\auth\svn.simple

해당 폴더를 지우세요

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

std::tr1::tuple  (0) 2012.03.13
SVN 특정 리비전 롤백하기  (0) 2012.02.09
VS warning 제거  (0) 2011.12.16
익셉션 안에서 콜스텍 출력  (0) 2011.12.01
프로세스아이디, 쓰레드아이디  (0) 2011.10.27


퀴즈 : http://openlook.org:625/blog/2008/02/27/cb-1206/


 

답1 : http://mearie.org/journal/2008/02/inside-python-quiz

 

답2 : http://mearie.org/journal/2008/02/inside-python-quiz-2.ko


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

python 파일 용량 확인  (0) 2013.11.19
ubuntu python mysqldb 설치  (0) 2013.11.18
python setuptools 설치  (0) 2013.09.20
python 스택 사이즈 수정  (0) 2012.01.08
python 명령 인자 받아쓰기  (0) 2011.12.09


import sys

print sys.getrecursionlimit( )
sys.setrecursionlimit( 999999 )

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

python 파일 용량 확인  (0) 2013.11.19
ubuntu python mysqldb 설치  (0) 2013.11.18
python setuptools 설치  (0) 2013.09.20
파이선을 이해하는데 도움이 되는 퀴즈  (0) 2012.01.08
python 명령 인자 받아쓰기  (0) 2011.12.09

VS warning 제거

프로그래밍 2011. 12. 16. 12:03


#pragma warning(disable: 4819)

enable는 2010에서 생겼나.?

기존에는 없는듯. 아님 내가 못찾던가.ㅋ



 

import sys

for i in range(1, len(sys.argv)):

    print(sys.argv[i])

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

python 파일 용량 확인  (0) 2013.11.19
ubuntu python mysqldb 설치  (0) 2013.11.18
python setuptools 설치  (0) 2013.09.20
파이선을 이해하는데 도움이 되는 퀴즈  (0) 2012.01.08
python 스택 사이즈 수정  (0) 2012.01.08


 

익셉션 안에서 콜스텍 출력


#include <tchar.h>
#include <string>
#include <windows.h>
#include <dbghelp.h>
#pragma comment(lib,"dbghelp")

long WINAPI ViewFunctionStack(_EXCEPTION_POINTERS *pExceptionInfo)
{
 int iSymbolNameSize = 1024;
 // Walk the stack.

 // Variables for stack walking.
 HANDLE hProcess = GetCurrentProcess();
 HANDLE hThread = GetCurrentThread();
 DWORD64 dw64Offset = 0;
 DWORD dwOffset = 0;
 DWORD dwSymOptions = SymGetOptions();
 SYMBOL_INFO* pSymbolInfo = (SYMBOL_INFO*) malloc( sizeof(SYMBOL_INFO) + iSymbolNameSize );
 IMAGEHLP_LINE64 imageHelpLine;
 STACKFRAME64 stackFrame64;

 // Initialize stack frame.
 memset( &stackFrame64, 0, sizeof(stackFrame64) );
 stackFrame64.AddrPC.Offset  = pExceptionInfo->ContextRecord->Eip;
 stackFrame64.AddrPC.Mode   = AddrModeFlat;
 stackFrame64.AddrFrame.Offset  = pExceptionInfo->ContextRecord->Ebp;
 stackFrame64.AddrFrame.Mode  = AddrModeFlat;
 stackFrame64.AddrStack.Offset  = pExceptionInfo->ContextRecord->Esp;
 stackFrame64.AddrStack.Mode  = AddrModeFlat;
 stackFrame64.AddrBStore.Mode  = AddrModeFlat;
 stackFrame64.AddrReturn.Mode  = AddrModeFlat;

 // Set symbol options.
 dwSymOptions      |= SYMOPT_LOAD_LINES;
 dwSymOptions      |= SYMOPT_UNDNAME;
 dwSymOptions      |= SYMOPT_EXACT_SYMBOLS;
 SymSetOptions( dwSymOptions );

 // Initialize symbol.
 memset( pSymbolInfo, 0, sizeof(SYMBOL_INFO) + iSymbolNameSize );
 pSymbolInfo->SizeOfStruct   = sizeof(SYMBOL_INFO);
 pSymbolInfo->MaxNameLen    = iSymbolNameSize;

 // Initialize line number info.
 memset( &imageHelpLine, 0, sizeof(imageHelpLine) );
 imageHelpLine.SizeOfStruct    = sizeof(imageHelpLine);

 // Load symbols.
 SymInitialize( GetCurrentProcess(), ".", 1 );

 std::string strStackList;

 while( 1 )
 {
  if( !StackWalk64( IMAGE_FILE_MACHINE_I386, hProcess, hThread, &stackFrame64, pExceptionInfo->ContextRecord, NULL, SymFunctionTableAccess64, SymGetModuleBase64, NULL ) )
   break;

  // Warning - ANSI_TO_TCHAR uses alloca which might not be safe during an exception handler - INVESTIGATE!
  if( SymFromAddr( hProcess, stackFrame64.AddrPC.Offset, &dw64Offset, pSymbolInfo ) && SymGetLineFromAddr64( hProcess, stackFrame64.AddrPC.Offset, &dwOffset, &imageHelpLine ) )
  {
   char chLineNumber[128];
   _itoa_s(imageHelpLine.LineNumber, chLineNumber, 10);

   strStackList += pSymbolInfo->Name;
   strStackList += "() [";
   strStackList += imageHelpLine.FileName;
   strStackList += ":";
   strStackList += chLineNumber;
   strStackList += "]";
   strStackList += " <- ";
  }
 }

 SymCleanup( hProcess );
 free( pSymbolInfo );

 MessageBoxA(NULL, strStackList.c_str(), NULL, NULL);

 return EXCEPTION_EXECUTE_HANDLER;
}

void func()
{
 *((int *)0) = 0;
}

int _tmain(int argc, _TCHAR* argv[])
{

 SetUnhandledExceptionFilter( ViewFunctionStack );

 func();

 system("pause");
 return 0;
}