목록분류 전체보기 (201)
wrkbrs
Git을 사용하다보면, 이미 커밋한 히스토리를 변경 또는 삭제하고 싶은 경우가 자주 발생한다. 이때 사용할 수 있는 명령어가 바로 $ git rebase -i이다. -i는 --interactive 의 약어로 말그대로 git rebase 명령어를 대화형으로 실행하겠다는 의미이다.$ git rebase -i [수정을 시작할 커밋의 이전 커밋] 이렇게 명령어를 실행하면 "수정을 시작할 커밋의 이전 커밋" ~ "현재 커밋(HEAD)" 범위에 있는 모든 커밋들의 리스트가 출력된다. 예를 들어 $ git rebase -i HEAD~3 를 실행하면 HEAD~2, HEAD~1, HEAD 커밋들이 출력된다. 사용자는 rebase 하기 전에 그 리스트를 입맛에 맞게 직접 수정함으로써 이전 커밋들의 히스토리를 변경할 수 있..
git revert, reset을 통한 소스 복구 방법입니다. 복구하려는 2~3개 커밋 전이라면 revert를, 그보다 훨씬 전이라면 reset을 통해 복구하면됩니다. revert를 통한 복구 복구 시점 이후에 커밋이 많지않거나 merge 커밋이 없는 경우에 사용. 실제로 사고 발생시 merge 커밋이 없는 경우가 거의 없기 때문에 잘 사용하진 않음. 1) git revert -n [커밋id] 2) git commit -m "커밋 메시지" 3) git push [target] 예) git revert -n a123 git revert -n b456 git revert -n c789 git commit -m "Revert roll back" git push origin [branch] reset을 통한 복..
1. reset과 revert 작업을 진행하다가 실수로 중요한 파일을 삭제했거나 제대로 병합이 안됐을 경우, 잘 작동이 되던 이전 버전으로 돌아가야 합니다. 이것이 바로 버전 관리를 하는 이유이며, 이 때 사용하는 명령어가 git reset과 git revert라는 명령어입니다. git reset을 명령어는 특정 커밋으로 되돌아갈 수 있는데, 되돌린 버전 이후의 버전들은 히스토리에서 삭제됩니다. git revert는 reset처럼 특정 버전으로 되돌아갈 수 있지만, 되돌린 버전 이후의 버전들의 이력은 남아있다는 점에서 차이가 있습니다. reset과 revert 명령어를 통해 과거 버전으로 돌아갈 수 있지만 그 밖에 잘못된 병합을 취소할수도 있는 기능이 있습니다. 이 글에서 이전 버전으로 되돌리기, 병합 ..
Git을 사용하다보면 원격 저장소에 있는 branch를 로컬 저장소로 가져와야하는 경우가 있다. 협업하고 있는 다른 팀원의 branch를 가져와서 작업을 해야하는 경우 혹은 혼자서 2대의 PC를 사용하고 작업파일을 Git으로 관리하는데 branch를 따서 작업하는 경우 등이 여기에 해당한다. 저장소를 그대로 clone을 하던지, pull을 하면 원격 저장소의 branch도 같이 받아질 것이라 생각했지만 그렇지 않았다. $ git checkout -t [원격 저장소의 branch 이름] 명령을 이용하면 원격 저장소의 branch를 가져오는 것과 동일한 기능을 한다. git remote update 먼저 원격의 브랜치에 접근하기 위해 git remote를 갱신해줄 필요가 있다. $ git remote upd..
source tree를 쓰고 있지만 명령어로 칠때가 더 편함.... git branch //로컬 저장소의 브랜치 목록 git branch -r //원격저장소의 브랜치 목록 gir branch -a //모든 브랜치 목록 git checkout remote이름/branch이름 ex) git checkout origin/branch1 원격 저장소의 브랜치로 작업 트리가 변경되며, 여기서 수정한 내역은 저장되지 안됨. git checkout -b 생성할브랜치이름 원격브랜치이름 ex) git checkout -b branch2 origin/branch1 branch2가 생성되면서 원격 저장소에 있던 branch1으로 작업 트리가 변경되며, 로컬에서 수정한 내역이 저장됨. git checkout -t remote이..
repository를 clone하면, 자동적으로 origin/master 포인터가 clone한 내용을 가리키고 있는 것을 볼 수 있다. 이 origin/master가 어떤 의미가 있을까? 리모트 브랜치는 리모트 저장소에 있는 브랜치를 말하고, 리모트 브랜치의 이름은 (remote 저장소 이름)/(branch 이름)의 형식을 갖는다. git 서버의 저장소를 clone을 하면, git은 자동적으로 origin이라는 이름을 붙인다(아래 예제에서는 git.courcompany.com이라는 저장소를 clone하지만, 이름을 지정하지 않으면 Local에는 origin으로 clone됨). 그리고 origin으로부터 저장소 데이터를 모두 내려받고 master 브랜치를 만든다. 이 상황에서 누군가 git.courcomp..
Goal Gitflow Workflow에서 사용하는 Git Branch 종류를 이해한다. Gitflow Workflow에서 사용하는 Git Branch 사용법을 이해한다. Git Branch 종류 (5가지) Gitflow Workflow에서는 항상 유지되는 메인 브랜치들(master, develop)과 일정 기간 동안만 유지되는 보조 브랜치들(feature, release, hotfix)을 포함하여 총 5가지의 브랜치를 사용한다. 아래는 Gitflow Workflow 방법에서 사용하는 브랜치의 흐름이다. 1. Master Branch 제품으로 출시될 수 있는 브랜치 배포(Release) 이력을 관리하기 위해 사용. 즉, 배포 가능한 상태만을 관리한다. 2. Develop Branch 다음 출시 버전을 개..
Git 명령어 Fetch -> 리모트 저장소에 있는 모든 데이터를 로컬로 가져옴. Git branch [브랜치명] => 새로운 브랜치 생성 Git checkout [브랜치명] => 브랜치 checkout(다른 브랜치로 이동) Git commit => ———> 한줄로 git checkout -b newData Git local branch 생성 , branch 이동 생성 : git branch [브랜치명] 생성 후 이동 : git checkout -b feature-01 Git remote branch 생성 git push origin feature-01 branch local remote 연동 git branch --set-upstream-to origin/feature-01 Git branch 삭제하기..
안녕하세요. 오늘은 인터프리터언어와 컴파일언어에 대해서 알아보겠습니다. 인터프리터란? 인터프리터(interpreter, 해석기)란 소스코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말한다. 소스코드를 목적코드로 옮기는 컴파일과 대비된다. 인터프리터는 소스코드를 한줄 한줄 읽어들이면서 실행하는 프로그램 입니다. 인터프리터 실행과정 인터프리터에서는 번역과 실행이 동시에 이루어집니다. 즉, 별도의 실행파일이 존재하지 않습니다. 컴파일이란? 컴파일(compile)이란 소스코드에서 목적코드로 옮기는 것 을 말합니다. 컴파일 과정 컴파일을 하게 되면 실행가능한 파일(프로그램)이 생성됩니다. 이러한 프로그램을 목적프로그램이라고도 하고, 컴퓨터 하드웨어(cpu)가 알아 들을 수 있는 기계어로 번역되었다는 의미에서 ..
분할컴파일.zip 다른 소스파일의 전역변수 데이터 공유.zip 분할 컴파일 분할 컴파일이란 두 가지 이상의 소스코드 파일을 한꺼번에 컴파일하는 것을 말한다. 이렇게 여러 가지 소스파일로 분할하여 관리한다면 업그레이드한다거나 에러를 잡거나 디버깅하기가 쉬워진다. 실제로도 하나의 소스파일에 작성하는 경우는 정말 간단한 프로그램이 아니고서는 거의 없다. 먼저 main.c 파일부터 살펴보자. //main.c #include #include int sum(int a, int b); int main() { printf("합계는 : %d \n", sum(1,2)); system("pause"); return 0; } main.c 파일에는 sum이라는 함수가 선언되어 있지만 정의되어 있지 않는다. 정의되어 있지 않아 ..