Medium - Starting Using Git on the Command Line Like a Pro in Five Minutes

원문 - Wiktor Malinowski

Trend 파악을 위한 Medium 기고문 포스팅 - 5분안에 전문가처럼 깃 명령어 사용하기; 기본적인 깃 명령어 투어

여러분은 코드를 매일 작성하실겁니다 그렇죠? 코드를 작성할 떄 GUI 툴을 사용하는 것보다 깃 명령어를 이용하는 건 어떠신가요? 아마 여러분들은 익숙한 것으로 하길 원하시겠지만 일단 명령어로 해보시면 훨씬 효율적으로 작업하실 수 있을겁니다. 기본적인 명령어들과 기능들을 설명해 드릴 것입니다. 그래도 이건 특별한 것이 아니라 그냥 또 다른 깃 명령어 문서화일 뿐입니다.

Git Status

git status 명령어는 전체 상태에 대해서 표시하며 HEAD가 어디인지 알려주고 변경사항 (staged, not staged, untracked files)에 대해 알려줍니다. 이런 긴 출력에 익숙하시다면 git status --short를 사용해서 간략한 결과를 볼 수도 있습니다.

Manipulate the Changes

다음은 변경에 대해 조작할 수 있는 명령어 들입니다.

  • git add file - 선택된 스테이지에 파일을 추가합니다.
  • git restore file - 파일에 대한 변화를 취소합니다.
  • git restore --staged file - 선택된 변화에서 파일을 제거합니다.

파일은 여러분이 수정하고 싶은 모든 파일과 디렉토리 패스를 의미합니다.

Inspecting the diffs

  • git diff - 여러분의 작업 트리에서 저장되지 않은 변화를 보여줍니다.
  • git diff --staged - 저장된 변화를 표시합니다
  • git diff dev - 워킹 트리와 dev 브랜치 사이의 변화를 표시합니다. 브랜치명 대신에 커밋 해시나 태그를 입력할 수 있습니다.
  • git diff master..dev - 마스터 브랜치와 dev 브랜치 사이에 변화를 표시합니다.

파일이나 디렉토리의 경로를 추가적인 매개변수로 전달해서 특정 경로의 변화만 필터링할 수도 있습니다. 만약 파일 이름만 조사하고 싶다면 --name-only를 사용하시면 됩니다. 어떤 파일이 수정되었고 추가되고 삭제되었는지 알고 싶다면 --name-status를 사용하면 됩니다.

Committing

변화를 저장하기 위해서는 git commit -m 'Commit message'라고 입력하시면 됩니다. -m 인자를 사용하지 않는다면 기본 텍스트 에디터를 열게 될 것입니다. VIM이 열려도 놀라지 마세요. 파일을 저장하고 윈도우를 닫으면 커밋이 완료됩니다.

다음과 같이 설정을 변경해서 기본 에디터를 수정할 수 있습니다 git config --global core.editor your-editor-executable-path

Use Wildcards for the add/restore/switch/diff Commands

예를들어 여러분이 src 디렉토리에서 타입스크립트 파일만 추가해서 커밋하고 싶다면 다음과 같이 하면 됩니다. git add src/**/*.ts

test 디렉토리에 모든 변화를 취소하려면 다음과 같이 입력하시면 됩니다. ` git restore test/`

저장된 모든 변화를 취소하고 싶다면 현재 디렉토리에서 다음과 같이 하시면 됩니다. git restore --staged .

glob 패턴을 지원하기 때문에 element를 선택해서 제어를 할 수 있습니다. 테스트 목적을 위해서라면 -n 매개변수를 사용하시면 됩니다.

Interactively Choose Hunks

add 명령어를 사용할 떄 -p, --patch를 사용하면 여러분이 추가하고 싶은 코드 덩어리만 인터렉티브하게 선택할 수 있습니다. 여러분은 어떤 덩어리를 사용할 지 선택할 수 있습니다. -p 의 결과는 다음과 같습니다.

Switch

스위치 커맨드는 브랜치를 바꿀 때 사용할 수 있습니다.

  • git switch branch-name - 입력한 브랜치 명으로 교체합니다
  • git switch -b abc - abc 브랜치를 만들고 해당 브랜치를 사용합니다.
  • git switch - - 이전 브랜치로 변경합니다.
  • git checkout [args] - 브랜치를 변경하고 해당 브랜치의 HEAD로 이동합니다. switch, restore 명령어는 최근에 추가된 명령어로 checkout 보다 훨씬 좋은 인터페이스를 제공합니다.

Branches

  • git branch - 로컬 브랜치의 리스트를 보여줍니다. -r을 입력하면 원격 브랜치만 보여주며 -a를 입력하면 모두를 보여줍니다.
  • git branch abc - abc 브랜치를 만듭니다.
  • git branch -d abc - abc브랜치가 머지 되었다면 삭제합니다. -D를 사용해서 강제로 지울 수 있습니다.

Log Results

git log를 입력하면 커밋 히스토리를 볼 수 있습니다.

다음과 같은 옵션들을 사용할 수 있습니다.

  • git log -p - 변화와 함께 커밋 설명을 표시합니다.
  • git log -2 # display tow recent commits - n개의 최근 커밋들을 표시합니다.
  • git log branch-name - 해당 브랜치/수정의 로그를 표시합니다
  • git log *.js # or git log branch-name:*.js - 특정 파일에 대한 로그만 확인할 수 있습니다.
  • git log --author wiktor - 작성자를 기준으로 커밋을 필터링 합니다.
  • git log --since 2019-10-01 - 날짜를 기준으로 커밋을 필터링 합니다.
  • git log --since 2months --until 1week - 동적인 날짜를 기준으로 필터링합니다.

Setup ALiases

깃 명령어 전부를 매번 입력할 필요는 없습니다. 별칭을 설정하면 됩니다. .gitconfig 파일을 복사하세요.

[alias]
  br = branch
  st = status
  rt = restore
  sw = switch
  ci = commit
  d = diff
  dc = diff --cached
  l = log
  last = l -1 # 존재하는 알리아스를 재사용할 수 있습니다

이제 git status 대신에 git st를 사용할 수 있습니다. 명령어 라인에서 알리아스를 추가하는 것도 가능합니다. l을 log 명령어로 설정한다면 git config --global alias l log라고 하면 됩니다.

Merge

git merge abc - abc브랜치를 머지합니다. 가끔 여러분은 변화를 머지할 때 커밋 히스토리를 원치않을 수 있습니다. 그렇다면 하나의 커밋으로 변화를 대체하는 방법도 있습니다.

git merge --squash your-branch - 이렇게하면 타겟 브랜치에 변경사항이 저장되며 머지하기 전에 변경할 수 있습니다.

Setup SSH Keys

외부 서버에서 여러분의 저장소에 접근/수정히기 위해서는 허가를 받아야 합니다. HTTPS 인증을 이용하거나 SSH 키를 설정해서 할 수 있습니다. SSH 키는 패스워드보다 더욱 뛰어난 장점이 있습니다. 훨씬 보안이 뛰어나서 추측을 하기가 어려우며 타이핑을 덜해도 됩니다. SSH 키 페어를 만들기 위해서는 ssh-keygen 명렁어를 입력해야 합니다. ssh-keygen -t rsa -b 4096 이렇게 하면 4096비트의 RSK 키를 만들어 냅니다. ~/.ssh 디렉토리에 기본적으로 키를 생성합니다. 프라이빗 키는 id_rsa에 저장되며 공유하면 안됩니다. 그런 다음 ~/.ssh/id_rsa.pub에 공개키를 깃허브 계정으로 전송하시면 됩니다.

Still Here?

여러분은 텍스트 모드 깃도구은 를 꼭 사용해 보셔야 합니다. 저장소의 변화를 활용할 수 있게 합니다.

Summary

  • 깃 명령어 정리

© 2019. All rights reserved.

Powered by Hydejack v8.1.1