Git 명령어 사용하기 (챌린지)

안녕하세요. :smile:

이 공간에서 Git을 명령어 사용 방법에 대해 지속적으로 연구하려 합니다.

그리고 참여도 가능해요.

나만의 명령어 사용 방식, 노하우, 규칙 등에 대해 쿨하게 소개하고 또 계속해서 수정해 나아가는 방식입니다. :smile:

감사합니다!

image

4개의 좋아요

@james.lee 가 자주 쓰는 GIT 명령어 모음집 (GitHub)

저는 주로 Github를 통해 작업하고 있습니다.
그리고 정말 간단하게만 사용하고 있는데요. (풀, 커밋, 체크아웃, 브랜치 생성, 브랜치 머지, 원격 브랜치 푸시 등)

하다가 막히면 Git Extensions, Visual Studio Git, Git Fork 등의 IDE 도움을 받으면서 배우며 사용하고 있습니다. 그리고 Git 자체를 본격적으로 사용한지 1년도 안되어서 더 열심히 써보려고 하는 것도 있습니다. :smile:

새로운 Repository를 연결할 때

c:\devncore> git clone https://github.com/devncore/devflow

T.M.I…

작업을 시작하기 전에 최신 소스를 받고 싶을 때

> git pull

저는 작업 환경이 여러 위치에 있기 때문에 항상 pull을 먼저 하고 시작하고 있어요.

작업중인 정보를 다 날리고(되돌리고) 최신 받을 때

> git checkout .
> git pull

실수로 건드린 소스코드를 되돌리거나 작업중이었던 내용을 되돌리고 난 후 최신을 받을 때 이렇게 해요.

새로운 파일 모두 한번에 추가하기

git add .

저는 개별 파일을 하나씩 추가하기보다는 이처럼 한번에 추가하는 방식을 자주 사용하고 있어요.

단일 파일만 추가하기

git add src/DevFlow/README.md

사용빈도는 거의 없지만 가끔 가다 하나의 파일만 추가해서 원격에 올려야할 때 사용하곤 해요. 그 때 git status를 사용하면 추가 대상 항목울 한눈에 볼 수 있어서 좋아요.

단일 파일만 추가하기 전에 대상 목록들을 보고싶다면

git status

이 명령어(status)는 어떤 파일이 수정되었는지, 추가되었는지 한눈에 볼 수 있기 때문에, 그리고 파일 경로까지 확인할 수 있으므로 하나의 파일을 추가(add)하기 위해 꼭 필요한 명령어죠.

브랜치를 변경할때

git checkout james
git checkout master

저는 브랜치를 변경할 때 TBD…

변경사항이 있는데 되돌리고 브랜치를 변경할때

git checkout .
git checkout james

무언가 수정된 사항이 있을 경우 브랜치 변경을 할 수가 없는데요. 특별히 수정된 작업을 커밋할 필요가 없을 경우 git checkout .을 통해 되돌리고 브랜치를 변경할 수 있어서 자주 사용하고 있어요.

새로운 브랜치를 만들 떄

git checkout master // 복사할 대상으로 먼저 가서!!
git branch james

브랜치를 새로 생성하고 싶거나 Merge를 하기 전이나 백업을 받고 싶을 때 등등 TBD…

내 브랜치를 원격에 올리고 싶을 때 (Master 처럼)

git push origin james

저는 보통 branch에서 작업을 할 때에도 원격으로 올리는데요. 기록도 계속 유지하고 싶은 마음도 있고, 또 작업환경이 자주 바뀌기 때문에 저로서는 필수 선택인 것 같아요. 그리고 푸시를 계속 자주 하게 되다 보니 어쩔 수 없이 원격 브랜치에 올릴 수 밖에 없기도 해요.

푸시(Push)할 때 마다 자격 증명을 물어볼때

$ git config credential.helper store
$ git push https://github.com/devncore/devflow.git
Username: 이메일 또는 이름
Password: 비밀번호

가끔 한 PC에 하나 이상의 Git 자격증명이 존재할 경우 충돌이 생겨서 Push, Pull을 할때마다 계정과 비밀번호를 물어볼때 이렇게 해결하고 있어요. :disappointed_relieved:

8개의 좋아요

깃 잘못된 계정 정보로 인한 커밋 누락 해결방법

잘못된 로컬 계정정보로 인해 GitHub 커밋 기록이 누락될 때 이를 해결하는 방법입니다. 가끔 다른 환경에서 Git 환경을 설정할 때 GitHub에 등록된 계정과 다른 경우 이런 상황이 발생합니다. 실제로 작업을 했는데도 표시가 안될 수 있죠.

image

주의: 이 스크립트를 실행하면 모든 저장소 공동 작업자의 기록이 다시 작성됩니다. 이 단계를 완료한 후 포크 또는 클론이 있는 사람은 재작성된 기록을 가져와서 모든 로컬 변경 사항을 재작성된 기록으로 리베이스해야 합니다.

Note: Running this script rewrites history for all repository collaborators. After completing these steps, any person with forks or clones must fetch the rewritten history and rebase any local changes into the rewritten history.

1 - 이 스크립트를 실행하기 전에 다음이 필요합니다.

  • 변경하려는 작성자/커미터 필드에 표시되는 이전 이메일 주소
  • 해당 커밋에 대한 올바른 이름 및 이메일 주소

2 - 저장소의 새로운 베어 클론을 만듭니다.

  git clone --bare https://github/<username>/<reponame>.git
  cd <reponame>.git

3 - 수집한 정보를 기반으로 다음 변수를 대체하여 스크립트를 복사하여 붙여 넣습니다.

  • OLD_EMAIL
  • CORRECT_NAME
  • CORRECT_EMAIL
  #!/bin/sh

  git filter-branch --env-filter '

  OLD_EMAIL="your-old-email@example.com"
  CORRECT_NAME="Your Correct Name"
  CORRECT_EMAIL="your-correct-email@example.com"

  if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
  then
  export GIT_COMMITTER_NAME="$CORRECT_NAME"
  export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
  fi
  if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
  then
  export GIT_AUTHOR_NAME="$CORRECT_NAME"
  export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
  fi
  ' --tag-name-filter cat -- --branches --tags

4 - Enter 키 를 눌러 스크립트를 실행합니다.

5 - 오류에 대한 새 Git 기록을 검토합니다.

6 - 수정된 기록을 다음으로 푸시합니다.

  git push --force --tags origin 'refs/heads/*'

7 - 임시 클론 정리

  cd ..
  rm -rf <reponame>.git

이렇게 하면 잘못된 계정정보로 인한 커밋 기록 누락을 간단하게 해결하실 수 있습니다.
(제가 작년에 경험했던 사례)

1개의 좋아요