Git 마법사 되기

원문: https://dev.to/elliot_brenya/become-a-git-wizard-mastering-the-advanced-git-commands-3he4

"깃타스틱하고, 깃리셔스하고, 아주 깃니피센트!" (역주: fantasic, delicious, simply magnificent) 저는 강력하고 대중적인 버전 관리 시스템인 Git에 대해 이렇게 설명하고 싶습니다. 이는 코드에 마법 지팡이를 사용하여 변경 사항을 추적하고 동료 마법사(또는 개발자)와 협업할 수 있는 것과 같습니다. 이 글에서는 Git 경험을 더욱 마법처럼 만들기 위해 가장 일반적으로 사용되는 Git 주문(명령)과 몇 가지 마법 팁(베스트 프랙티스)이 포함된 포괄적인 Git 치트 시트를 제공할 예정입니다.

먼저 Git 주문을 시전하기 전에 먼저 컴퓨터에 설치해야 합니다. 걱정하지 마세요. 들리는 것만 큼 무섭지 않습니다. 공식 웹사이트(https://git-scm.com/downloads) 에서 최신 버전의 Git을 다운로드하고 지침에 따라 설치할 수 있습니다. 설치되면 터미널 또는 명령 프롬프트를 열고 Git 여정을 시작합니다.

시작하려면 'git init' 주문을 시전하여 새 저장소를 초기화해야 합니다. 이렇게 하면 현재 작업 디렉토리에 .git이라는 새 디렉토리가 생성되며, Git은 코드의 변경 사항을 추적하는 데 필요한 모든 메타데이터와 파일을 저장합니다. 코드를 위한 마법의 상자라고 생각하세요.

이제 몇 가지 기본 Git 주문을 살펴보겠습니다.

아, Git의 주문! 개발자는 이러한 주문을 기억하고 언제든지 사용할 수 있어야 합니다. 이러한 주문은 성공적인 코드 협업 및 관리의 중추입니다. 숙달해야 할 몇 가지 기본 주문을 살펴보겠습니다.

'git add' - 이 주문은 "스테이징 영역"에 새 파일이나 변경 사항을 추가합니다. 코드가 공식적으로 저장소에 합류하기 전에 대기실이라고 생각하세요. 'git add'를 사용하여 특정 파일이나 디렉토리를 추가하거나 'git add'를 사용할 수 있습니다. 현재 작업 디렉토리에 모든 변경 사항을 추가합니다.

'git commit' - 이 주문은 코드에 대한 승인의 최종 도장과 같습니다. 변경 사항을 저장소에 저장하고 나중에 참조할 수 있도록 "커밋 메시지"라는 메모를 남길 수 있습니다. 이 메시지는 커밋 중인 변경 사항에 대한 간략한 설명이어야 합니다.

'git status' - 이 주문은 저장소의 현재 상태를 보여줍니다. 추가, 수정 또는 삭제된 파일과 스테이징 영역에서 대기 중인 파일을 보여줍니다. 이 주문은 올바른 파일을 커밋하고 있는지 확인하기 위해 변경 사항을 커밋하기 전에 시전하는 데 유용합니다.

'git log' - 이 주문은 타임머신과 같습니다. 저장소의 커밋 기록을 볼 수 있습니다. 커밋 메시지 및 작성자와 함께 만들어진 모든 커밋 목록이 표시됩니다. 이 주문은 특정 커밋을 찾거나 코드의 변경 내역을 확인해야 할 때 시전하는 데 유용합니다.

'git diff' - 이 주문은 코드의 현재 버전을 마지막으로 커밋된 버전과 비교합니다. 추가, 수정 또는 삭제된 줄이 표시됩니다. 이 주문은 변경 사항을 적용하기 전에 어떤 변경 사항을 확인하고 싶을 때 시전하는 데 유용합니다.

'git branch' - 이 주문을 사용하면 Git 저장소에서 분기(branch)를 관리할 수 있습니다. 브랜치를 사용하면 동시에 여러 버전의 코드에서 작업할 수 있습니다. 이 주문을 사용하여 새 브랜치를 만들거나 기존 브랜치로 전환하거나 브랜치를 삭제할 수 있습니다.

'git merge' - 이 주문은 한 브랜치의 변경 사항을 다른 브랜치로 병합합니다. 브랜치에서 변경한 사항을 메인 브랜치에 병합하려는 경우에 유용합니다. 이 주문은 소스 브랜치의 변경 사항을 대상 브랜치로 병합합니다.

이제 기본 및 고급 Git 주문을 다루었으므로 한 단계 더 나아가 워크플로를 간소화하고 팀과의 공동 작업을 더욱 원활하게 만드는 데 도움이 되는 몇 가지 고급 Git 명령에 대해 이야기해 보겠습니다.

사용할 수 있는 가장 강력한 명령 중 하나는 'git rebase'입니다. 이 명령을 사용하면 여러 커밋을 보다 일관된 단일 커밋으로 재구성하고 결합할 수 있습니다. 이는 커밋 기록을 정리하거나 여러 커밋을 하나로 스쿼시(압축)하려는 경우에 특히 유용합니다.

또 다른 편리한 명령은 'git cherry-pick'입니다. 이 명령을 사용하면 한 브랜치에서 다른 브랜치로 특정 커밋을 선택적으로 적용할 수 있습니다. 이는 전체 브랜치를 병합하지 않고 한 브랜치에서 다른 브랜치로 특정 변경 사항을 적용하려는 경우에 특히 유용합니다.

디버깅과 관련하여 'git bisect'는 생명의 은인입니다. 코드에서 특정 버그나 문제를 가져온 커밋을 찾을 수 있습니다. 이 명령을 사용하면 코드에서 문제의 원인을 빠르게 식별하고 이전 작업 버전으로 되돌릴 수 있습니다.

때때로 우리는 실수를 하거나 생각을 바꿀 때 'git reset'이 유용합니다. 이 명령을 사용하면 커밋 실행 취소, 파일 수정 취소 또는 브랜치 포인터를 다른 커밋으로 이동할 수 있습니다. 이는 변경 사항을 실행 취소하거나 브랜치 포인터를 다른 커밋으로 이동하려는 경우에 매우 유용합니다.

마지막으로 'git reflog'가 있습니다. 이 명령을 사용하면 리포지토리에서 브랜치 및 참조 업데이트의 전체 기록을 볼 수 있습니다. 이는 리포지토리의 전체 기록을 확인하고 손실된 커밋을 복구하려는 경우 매우 유용합니다.

이러한 명령은 모든 개발자의 무기고에 있는 강력한 도구이며 이를 마스터하면 작업 흐름 및 다른 사람과의 공동 작업에서 큰 차이를 만들 수 있습니다. 그러나 다른 강력한 도구와 마찬가지로 주의해서 사용하고 그 결과를 인식하는 것이 중요합니다. 커밋하기 전에 항상 작업을 테스트하고 다시 확인하십시오. 연습이 완벽을 만든다는 사실을 기억하십시오. 두려워하지 말고 실험을 통해 작업 흐름에 가장 적합한 명령 조합을 찾으십시오. 행복한 깃팅(Git-ting)!

지워지지 않는 유튜브에 틈틈이 올려야겠습니다. 힌트를 주신 hika님 복 받으실 겁니다. ^^b

http://bit.ly/okdevtv




git clone https://github.com/openstack/nova.git /opt/stack/nova


local repository is not ~/git/nova but /opt/stack/nova


ref

http://devstack.org/guides/single-machine.html

https://help.ubuntu.com/community/Installation/MinimalCD




Error: Failed to launch instance "kenufirst": Please try again later [Error: Timeout while waiting on RPC response - topic: "network", RPC method: "get_instance_nw_info" info: "<unknown>"].

github 화면이 개편되었네요.

URL이 우측하단으로 옮겨졌습니다.

상단의 색상 라인은 언어의 분포입니다.

OKJSP는 반반입니다. 자바 반, 자바스크립트 반



https://github.com/okjsp/okjsp-site




https://github.com/plans 에서 Small을 선택했습니다.


visa카드번호를 인식하네요.


결제를 마치면 문자가 옵니다. Small은 $12.00입니다.




okbiz라는 저장소를 만들었습니다. 


https://github.com/okbiz/okbiz라는 저장소를 Private으로 사용할 수 있게 되었습니다. 인가한 사람만 입장이 가능하죠.


 로그인 하지 않거나 권한이 없으면 아예 안보이는군요.


다른 계정으로 로그인하고 접근했을 때입니다.


이제 돈 벌어야죠. ^^;
Small은 매월 $12.00 결제됩니다. 

 
http://118.36.231.76:11000/p/4dfc9b2d255447b92e00023c

@kingori 말씀하신대로 git과 github은 다릅니다. 제가 이해하기로는 git은 엔진이고 github은 이를 응용한 서비스입니다. 오늘은 특별히 구분을 두기보다는 github을 중심으로 말씀드렸습니다.

@kingori github을 이용하시면 됩니다. edit & commit도 됩니다.

@KUAHN 기업은 git-scm.org의 서버를 인트라넷에서 운영하면 될 것입니다. github을private으로 이용해도 괜찮겠지요. 

@hwi 로컬은 언제든 쉽게 바꿀 수 있도록 하셔야 할 겁니다. 원격은 보험과 같은 것이니까, pull과 push를 자주 하시는 것이 좋습니다.

@Hyundo 감사합니다. ^^

@김동훈 USB드립 죄송합니다. @Hyundo 님이 잘 말씀해 주셨네요. 
  • 오늘 말씀해주신 내용 중 github 고유 기능과 git 기능 구분이 헷갈립니다. 오늘 말씀해주신 기능은 git 자체기능인지요

    by kingori on 
  • hudson말고 git 레파지토리를 웹에서 보려면 ㅓ찌해야하나요

    by kingori on 
  • 기업 프로젝트에서의 사용은 어떤가요?

    by KUAHN on 
  • 이클립스에서 egit을 사용하다보면 레파지토리가 깨지는경우가있는데 안전하게 사용할수있는팁이있는지요?

    by hwi on 
  • @김동훈 서버쪽의 셋팅을 해야 공유가 가능하지 않을까요? 물론 다른 팀원도 github에 등록을 해야할 것 같고.. 맞나요?

    by Hyundo Kim on 
  • git를 로컬에 설치한 상태에서 로컬에서 다른 팀원과 공유가 가능한가요?

    by 김동훈 on 
history
  501  cd ~/.ssh
  502  ls
  503  mkdir key_backup
  504  cp id_rsa* key_backup/
  505  rm id_rsa*
  510  ssh-keygen -t rsa -C "kenu@okjsp.pe.kr"
  511  vi id_rsa.pub 
  512  ssh git@github.com
  513  git config --global github.user kenu
  514  git config --global user.name "Kenu Heo"
  515  git config --global user.email "kenu@okjsp.pe.kr"
  516  git config --global github.user kenu
  517  git config --global github.token 5e1086d5f4bb35eff2c920f5a6dbf2df
  518  mkdir ~/Hello-World
  519  cd ~/Hello-World/
  520  git init
  521  touch README
  522  vi README 
  523  git add README
  524  git commit -m 'first commit'
  525  git remote add origin git@github.com:kenu/Hello-World.git
  526  git push origin master

  528  cd ..
  529  ls -altr
  530  mkdir tmp
  531  cd tmp
  532  ls -altr
  533  git clone git@github.com:kenu/Spoon-Knife.git
  534  cd Spoon-Knife/
  535  git remote add upstream git://github.com/octocat/Spoon-Knife.git
  536  git fetch upstream
  537  vi okjsp.txt
  538  git add okjsp.txt 
  539  git commit -m "okjsp"
  540  git push origin master
  541  git fetch upstream
  542  git merge upstream/master

+ Recent posts