형상관리?(svn,cvs,git…..)
형상관리란?
소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것으로, 형상 관리는 일반적인 단순 버전 관리 기반의 소프트웨어 운용을 좀 더 포괄적인 학술 분야의 형태로 넓히는 근간을 이야기한다.
형상관리는 변경사항을 체계적으로 추적, 통제한다는 것. 이 말은 어떤 문서나 파일이 변경되었을 경우 변경된 내역을 기록하였다가 나중에 이를 찾아보아야 할 경우, 변경 원인과 변경 사항을 확인해야 할 경우에 대한 관리를 말한다.
많이 쓰이는 곳은 소프트웨어 개발에서 많이 쓰이지만 꼭 이에 대해서만 쓰는 것은 아니다. 예를 들어 회사 내에서 정책 문서가 있을 경우 이에 대한 변화와 왜 변경되었는지를 기록, 추후에 동일한 변경이 필요한 경우 이에 대한 과거 변경 요인들을 확인하기 위해서도 사용한다. 문서의 표지 다음, 목차보다 먼저 등장하여 변경사항을 기록하도록 하는 페이지를 많이 보았을 것이다.
소프트웨어 개발에서 많이 사용하게 된 것은 혼자 개발하는 경우에는 문서 변경과 같은 이력 조회로써 사용할 수 있지만 여러 사람이 함께 개발하는 경우 이에 대한 내역 확인이 필수이다. 버전을 확인하여 변경사항을 확인하고 이에 대해서 반영 및 수정하는 과정이 발생한다.
또한 혼자 개발하는 경우에는 버전의 충돌이 발생하지 않지만 똑같은 파일을 다른 사람과 공유하여 개발하고 있을 경우 이에 대한 충돌 해결로도 많이 사용된다.
형상관리 도구 종류
쉘(shell)이란 키보드로 입력한 명령어를 운영체제에 전달
리눅스가 바로 유닉스 계열의 운영체제를 기반으로 만들어졌기 때문
git bash를 설치하면 윈도우 OS환경에서 리눅스 커맨드 사용 가능
Git할 폴더 들어가서 실행
git config --global user.name "이름"
git config --global user.email "tjdgus9773@gmail.com"
github가서 repository에 new -> repository name 기입 -> public/private 선택
->Add a README file 체크 (프로젝트 로그 관람가능) -> creating repository
<> Code 선택 -> https 주소 복사
Git할 폴더 들어가서 git bash 실행
git init
git remote add origin 깃주소
git add .
git commit -m "커밋 이름"
git push origin master
repository 들어가서 왼쪽 탭 main/master 선택해서 파일 보기
git checkout -t -b master origin/master < master로 변경
git pull origin master
git checkout 브렌치 이름 : 해당 브랜치로 이동
git branch 브렌치 이름 : 브랜치 생성 후 이동
해당 브랜치 가서 commit 후
git checkout master 이동 (안되면 git stash : 임시저장)
git merge 브랜치 이름
git push origin master
merge 완료
원격 URL을 HTTPS에서 SSH로 전환해줘야한다
git remote -v
git remote set-url origin "원하는 repository의 ssh주소"
git remote -v
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
이런 에러가 발생하는 이유는 해당 git@github.com에 연결된 ssh key가 설정되어있지 않기 때문
ssh key를 만들고 이 키를 본인의 github 계정에 등록하면 해결
ssh-keygen -t rea -C "본인 github계정 이메일"
=> ssh key를 만드는데 rsa(공개키 암호 알고리즘)방식으로 만들고 C 옵션은 그냥 고멘트라 써도되고 안써도 됨
엔터키를 누르면 기본 위치(~/.ssh/id_rsa.pub)에 생성
패스워드 지정하려면 입력
패스워드 지정 안하고 싶으면 그냥 엔터 눌러도 상관없음
절대 이 키는 남에게 공개하면 안됩니다. (공개하면 그냥 나의 깃허브를 마음껏 사용하세요란 말과 같아요)
cat ~/.ssh/id_rsa.pub
후에 나온 ssh부터 끝까지 복사
복사한 키를 나의 github 계정에 세팅해주면 끝
5-1. github 로그인
5-2. Settings -> SSH and GPG keys
5-3. New SSH key 누르고 원하는 Title 입력
5-4. 복사한 ssh key 키 넣어주고 생성
reset: 되돌리고 싶은 시점의 commit이력으로 돌아가는 것(시간여행)
revert: 현재까지 남긴 이력들을 유지한 채 되돌리고 싶은 commit을 원상복귀시키는 것(복구commito 추가됨)
git log --oneline
HEAD가 있는 곳이 현재 브랜치(master)를 가르키는 포인터
-> 가장 최근의 commit
돌아가고 싶은 commit을 찾은 후 git reset 실행
reset hard -> 돌아가려는 이력 이후 내용 모두 삭제
(과거 commit들만 지우고 stage에 올려놓고 commit하고 싶으면 reset soft
git reset --hard "되돌리고 싶은 노란색 커밋명"
되돌리고 싶은 commit으로 복구
이 commit에 내가 stage에 올라온 파일들을 묶어서 내 로컬에 저장해 놓은 것(commit)
이후
git push (-f) origin master (잘 안될 경우 -f 사용 고민)