회사와 개인프로젝트의 계정을 분리한다던지, 개인 프로젝트와 스터디 그룹의 계정을 분리한다던지 한 컴퓨터에서 여러 Github 계정을 사용해야 할 경우가 있다. SSH를 활용하여 관리하는 방법을 사용하면 편하다.

기존에 ssh 키가 있는지 확인

  ls -al ~/.ssh

ssh 키를 생성 및 agent 등록

  # 2개의 키 생성하기
  ssh-keygen -t rsa -C "{private}@mail.com" -f "~/.ssh/{rsa file for private}"
  ssh-keygen -t rsa -C "{group}@mail.com" -f "~/.ssh/{rsa file for group}"

  # 키 생성 확인
  ls -al ~/.ssh

  # ssh-agent 실행 확인
  eval "$(ssh-agent -s)"

  # 생성한 키 등록
  ssh-add ~/.ssh/{rsa file for private}
  ssh-add ~/.ssh/{rsa file for group}

  # 등록한 키 확인
  ssh-add -l
  4096 SHA256:... {private}@mail.com (RSA)
  4096 SHA256:... {group}@mail.com (RSA)

ssh 설정 파일 수정

ssh 설정 파일은 ~/.ssh/config이다. 파일이 존재하지 않는다면 생성 후 진행한다.

  # 파일 존재 여부 확인
  cat ~/.ssh/config

  # 파일 생성
  touch ~/.ssh/config

  # 파일 수정
  vi ~/.ssh/config
  # IDLOOK
  Host github.com-{group_name}
    HostName github.com    
    User {group_github_name}
    IdentityFile ~/.ssh/{rsa file for group}

  # PRIVATE
  Host github.com-{private_name}
    HostName github.com
    User {private_github_name}
    IdentityFile ~/.ssh/{rsa file for private}

git 설정파일 수정

git user name과 user email 설정 파일을 각각 생성 수정한다

  touch ~/.gitconfig-{private}
  touch ~/.gitconfig-{group}

개인용

  vi ~/.gitconfig-{private}
  [user]
    name = {private_github_name}
    email = {private}@mail.com

업무용

  vi ~/.gitconfig-{group}
  [user]
    name = {group_github_name}
    email = {group}@mail.com

git 설정 파일에서 해당 파일을 읽어오도록 한다

  vi ~/.gitconfig
  [includeIf "gitdir:{개인 프로젝트 경로}"]
    path = .gitconfig-{private}
  [includeIf "gitdir:{그룹 프로젝트 경로}"]
    path = .gitconfig-{group}

Github 계정에 SSH 키를 등록

생성한 ssh 키를 각각 두개의 github 계정에 등록해준다.

우측 상단 Github Profile > Settings > 좌측 SSH and GPG keys > 우측상단 New SSH Key
타이틀은 편하게, Key type은 Authentication Key, Key 부분에 생성한 키를 복사해서 붙여 넣는다.

  # shell에서 명령어로 복사하는 방법
  pbcopy < ~/.ssh/{rsa file for private}

  # shell에서 명령어로 출력한 후 terminal에서 복사하는 방법
  cat ~/.ssh/{rsa file for private}

Github 등록 확인

  ssh -T git@github.com-{private_name}

로컬로 Github 레포지토리 복사

복사시 https가 아닌 ssh로 한다

  git clone git@github.com-{private_name}:{user-name}/{repository-name}.git

로컬이 이미 레포지토리가 있을 경우 주소 변경

  # 기존 리모트 url 확인
  git config --get remote.origin.url
  git@github.com:{A}/{B}.git
  # 리모트 url 변경
  git remote set-url origin git@github.com-{private_name}:{A}/{B}.git

  # 동작 확인
  git pull

clone, pull등 git 명령어 결과에서 에러가 나올 경우 ssh를 디버깅 모드로 시도

  GIT_SSH_COMMAND="ssh -v" git fetch

DL;DR

모든 내용은 git manual에 있다.https://git-scm.com/docs/git-config#_conditional_includes

참고

728x90
반응형

'VCS' 카테고리의 다른 글

[GIT]  (0) 2024.04.10
[VCS] 좋은 커밋 메세지 간단 작성법  (0) 2023.07.14
[GIT] 브랜치, 커밋 간 다른 파일 목록 조회  (0) 2022.04.05
[GIT] remote branch 가져오기  (0) 2022.04.05
[TortoiseSVN] Disconnect 방법  (0) 2021.09.10

GIT

git : Linux 커널 소스를 관리하기 위해 리누스 토발즈가 직접 개발한 분산형 버전관리 도구.
분산형이라는 의미는 여러 클라이언트들이 각자의 컴퓨터에 저장소를 반들어 중앙 서버의 전체 사본을 가지고 작업하는 것임.

SVN과 차이점

  1. SVN

    • 중앙 서버에서 소스코드와 히스토리를 관리함
  2. GIT

    • 소스를 여거 개발 PC와 저장소에 분산해서 저장
    • 로컬에서 버젼을 관리하기 때문에 SVN에 비해 빠름

GIT의 장점

  1. 같은 파일을 여러 명이 동시 작업하는 병렬 개발 가능
    (브랜치를 통해 개발한 뒤, merge 하는 방식으로 개발 진행 가능)
  2. 분산 관리이기 때문에 중앙저장소에 문제가 생겨도 원상복구 가능

Git 기본 용어

  • repository : 저장소를 의미함
    저장소를 통해 소스, 히스토리, 태그의 관리가 가능하며, 저장소를 통해 작업자가 변경한 소스의 히스토리 확인 가능
  • working tree : 저장소의 어느 한 시점을 바라보는 작업자의 현재 시점
  • staging area : 저장소에 커밋하기 전에 커밋을 준비하는 위치
  • commit : 현재 변경된 작업 상태에서 점검이 끝나면 확정하고 저장소에 저장하는 작업
  • head : 현재 작업중인 branch를 가리킴
  • branch : 가지 또는 분기점
    작업을 할 때 원본을 복사해서 branch에서 작업을 한 후 완전할 때 merge하여 작업함
  • merge : 다른 branch의 내용을 현재 branch로 가져와 병합하는 작업.

git 주요 명령어

ropository 생성

  • git init : 깃 저장소 초기화
  • git clone {url} : 원격 저장소 복사

상태 확인

  • git status : 작업 디렉토리에 변경된 파일 확인하기
  • git diff : 변경된 파일들의 변경된 내용 확인
  • git log : 변경 이력 보기

브랜치 작업

  • git branch : 로컬 브랜치 목록 확인

  • git branch -r : 원격 브랜치 목록 확인하기

  • git branch -av : 로컬과 원격 브랜치 목록 확인하기

  • git branch -m {old_name} {new_name} : 브랜치 이름 변경하기

  • git branch {new_branch_name} : 브랜치 생성

  • git checkout {branch_name} : 브랜치 변경하기

  • git branch -d {branch_name} : 브랜치 삭제

반영

  • git add . : 모든 변경사항을 커밋 준비 "스냅샷"
  • git add {file} : 특정 파일의 변경사항을 커밋 준비
  • git commit -m '{message}' : 메세지와 함께 커밋하기
  • git commit --ammend : 마지막 커밋 메세지 수정하기 (push한 commit에는 하지 말것)

취소

  • git reset --hard HEAD^ : 이전 commit 취소, 변경사항 폐기
  • git reset --soft HEAD^ : 이전 commit 취소, 변경사항 유지
  • git reset --soft merge : merge 취소하기
  • git reset --hard HEAD && git pull : 변경사항 폐기 후 원격 저장소의 최신 코드로 덮어쓰기
  • git revert {commit_code} : 커밋 되돌리기

동기화 하기

  • git fetch {remote} : 원격 저장소의 최신사항 가져오기
  • git pull {remote} {branch} : 원격 저장소의 최신사항을 가져와서 병합하기
  • git pull --rebase : 원격 저장소의 변경사항을 가져오고 초기화 하기
  • git push : 원격 저장소에 변경사항 발행하기
  • git merbe {branch} : 브랜치 병합하기
  • git rebase {branch} : 리베이스 하기

브랜치의 변경사항 임시저장

  • git stash : 임시로 변경사항 저장하기
  • git stash pop : 임시 변경사항 불러오기
  • git stash list : 임시 변경사항 보기

계정

  • git global user.name "user_name" : git 계정 name 저장/수정
  • git global user.email "user_email" : git 계정 email 저장/수정
728x90
반응형

참고 페이지의 간소화 버전이다. 아주 조금의 신경을 쓰면 명확하게 전달되는 커밋 메세지를 작성할 수 있다.

commit message 구조

  <타입>[적용 범위(선택 사항)]: <설명>

  [본문(선택 사항)]

  [꼬리말(선택 사항)]

1. 타입

  • commit 이 무엇애 대한 작업인지 키워드를 통해 인지
    • fix: - 버그 수정
    • feat: - 새로운 기능 추가, 기존 기능 변경
    • build: - 빌드 관련 수정
    • ci: - CI 관련 수정
    • docs: - 문서(주석) 수정
    • style: 코드 스타일, 포멧팅 수정
    • refactor: - 코드 리팩토링 (기능 수정 아님. )
    • test: - 테스트 코드 추가, 수정
    • chore: 기타 변경사항 수정 (.gitignore 등)

2. 설명

  • 커밋 메시지 제목
    • 제목은 50자를 넘기지 않고, 마침표를 붙이지 않기
    • 제목에 커밋 타입을 함께 작성
    • 과거 시제를 사용하지 않고 명령조로 작성
    • 제목과 본문은 한 줄 띄워 분리
    • 제목의 첫 글자는 반드시 대문자로
    • 이슈에 관련된 내용이라면 이슈 번호를 붙히기

3. 본문

  • 자세한 설명

4. 꼬릿말

  • 이슈 번호 등

참고 : https://www.conventionalcommits.org/ko/v1.0.0/#%ea%b0%9c%ec%9a%94

728x90
반응형

'VCS' 카테고리의 다른 글

[GIT] 한 컴퓨터에서 Github 계정 여러개 사용하기  (0) 2024.05.27
[GIT]  (0) 2024.04.10
[GIT] 브랜치, 커밋 간 다른 파일 목록 조회  (0) 2022.04.05
[GIT] remote branch 가져오기  (0) 2022.04.05
[TortoiseSVN] Disconnect 방법  (0) 2021.09.10

두 커밋 혹은 브랜치를 비교하여 서로 다른 파일의 목록을 출력

    git diff --name-status <commmit> <commit>
728x90
반응형

'VCS' 카테고리의 다른 글

[GIT]  (0) 2024.04.10
[VCS] 좋은 커밋 메세지 간단 작성법  (0) 2023.07.14
[GIT] remote branch 가져오기  (0) 2022.04.05
[TortoiseSVN] Disconnect 방법  (0) 2021.09.10
[GIT] 윈도우에 Git 설치하기  (0) 2020.01.26

로컬에서 원격의 브랜치를 찾을 수 있도록 갱신

    git remote update

브랜치 확인

    # 원격 저장소 확인
    git branch -r
    # 원격 + 로컬 저장소 확인
    git branch -a

원격 저장소의 브랜치 가져오기

    git checkout -t origin/브랜치명
728x90
반응형

'VCS' 카테고리의 다른 글

[GIT]  (0) 2024.04.10
[VCS] 좋은 커밋 메세지 간단 작성법  (0) 2023.07.14
[GIT] 브랜치, 커밋 간 다른 파일 목록 조회  (0) 2022.04.05
[TortoiseSVN] Disconnect 방법  (0) 2021.09.10
[GIT] 윈도우에 Git 설치하기  (0) 2020.01.26

SVN으로 버젼관리중인 소스를 이러저러한 이유로 git으로 로컬에서 버젼관리를 해야하는 상황이 되었다.

SVN에서 먼저 disconnect 해야 했는데 종종 필요한 작업일 것 같아서 기록한다.

Windows 10, TortoiseSVN 기준이다.

 

1. 파일 탐색기에서 해당 소스 경로로 이동한다.

2. 해당 소스 폴더를 우클릭한다.

3. TortoiseSVN -> Export를 선택한다.

4. Export 할 경로를 해당 소스의 경로와 동일하게 설정한다.

5. 경고창과 함께 Remove from version controll, Cancel 을 선택하게 나오는데 전자를 선택.

6. SVN을 통한 버젼관리가 삭제됨.

 

 

728x90
반응형

'VCS' 카테고리의 다른 글

[GIT]  (0) 2024.04.10
[VCS] 좋은 커밋 메세지 간단 작성법  (0) 2023.07.14
[GIT] 브랜치, 커밋 간 다른 파일 목록 조회  (0) 2022.04.05
[GIT] remote branch 가져오기  (0) 2022.04.05
[GIT] 윈도우에 Git 설치하기  (0) 2020.01.26

윈도우 버전 GIT 설치하기

  1. Git 설치 파일을 다운
    git download

 

Git - Downloads

Downloads Mac OS X Windows Linux/Unix Older releases are available and the Git source repository is on GitHub. GUI Clients Git comes with built-in GUI tools (git-gui, gitk), but there are several third-party tools for users looking for a platform-specific

git-scm.com

  1. 설치 시작 NEXT

  1. NEXT

  1. NEXT

  1. NEXT

  1. NEXT

  1. NEXT

  1. NEXT

  1. NEXT

  1. NEXT

  1. 설치 진행

  1. 설치 완료

  1. git에 사용자의 이름과 이메일 설정 후 설정 확인

    git config --global user.name '사용자 이름'
    git config --global user.email '이메일 주소'
    git config --list

     

  1. github에서 repository clone

  1. clone 한 repository open

  1. 간단한 수정 후 commit 시도

  1. github login

  1. 로그인 후 commit 성공

728x90
반응형

'VCS' 카테고리의 다른 글

[GIT]  (0) 2024.04.10
[VCS] 좋은 커밋 메세지 간단 작성법  (0) 2023.07.14
[GIT] 브랜치, 커밋 간 다른 파일 목록 조회  (0) 2022.04.05
[GIT] remote branch 가져오기  (0) 2022.04.05
[TortoiseSVN] Disconnect 방법  (0) 2021.09.10

+ Recent posts