반응형
목차
버전 관리
- 동일한 정보에 대한 여러 버전을 기록
- 데이터의 과거와 현재 상태를 기록
- 다른 시점의 데이터를 불러올 수 있는 것
- 두 시점의 데이터를 비교
- 유사 용어
- 버전 관리
- 형상 관리
- 협업 도구
- 종류
- CVS
- Git
- SVN
Git
- 버전 관리 시스템 중 하나
- 로컬 저장소와 원격 저장소로 구분
- 분산 버전 관리 시스템
- branch로 병합
- master와 별개로 브랜치를 생성하여 작업 가능
- 파일 수정 내용 추적 가
Git 설치
- GUI (그래픽 유저 인터페이스)
- 소스트리
- GitHub Desktop
- Tortoise
- CLI (커맨드 라인 인터페이스)
- 터미널에서 명령어 직접 입력
- 윈도우
- 터미널
- GItBash
- VSCode 터미널..
- 맥OS
- 터미널
다운로드
- Git 설치
- vsCode 설치
- 소스 트리 설치
- Mercurial 체크 해제
Sourcetree | Free Git GUI for Mac and Windows
- Git Graph 설치
- VSCode 내에서 Git Graph 설치
- 환경 변수 설정 옵션
- Use Git from Git Bash only
- Git Bash에서만 실행
- User Git from the Windows Command Prompt
- 윈도우 명령프롬프트에서 git 실행이 가능하도록 환경변수 추가
- Use Git and optional Unit tools the Windows Command Prompt
- git과 unix 도구들을 환경변수에 추가
- Use Git from Git Bash only
- 라인 엔딩 옵션
- Checkout Windors-style, commit Unix-style line endings
- 체크아웃, 커밋 둘다 CRLF가 LF로 변환 (체크)
- Checkout as-is, commit Unix-style line endigns
- 체크아웃 변환 작업하지 않음, 커밋 변환
- Checkout as-is, commit as-is
- 체크아웃, 커밋 둘 다 변환하지 않음
- Checkout Windors-style, commit Unix-style line endings
- CRLF, LF
- 줄바꿈을 표시하는 제어 문자
- CRLF는 커서를 다음 줄의 맨 앞으로 이동 (윈도우)
- LF는 커서를 한 줄 아래로만 이동 (유닉스)
- 줄바꿈을 표시하는 제어 문자
- 설치 확인
git --version
기본 세팅
- 사용자 설정
git config --global [user.name](<http://user.name>) "사용자 이름"
git config --global [user.](<http://user.name>)email "이메일 주소"
- 설치 확인
git config --global [user.name](<http://user.name>)
git config --global [user](<http://user.name>).eamil
- 줄 바꿈 문제
- OS마다 사용되는 줄 바꿈 문자열이 다르므로, 통일
- Window
$git config --global core.autocrlf true
- Mac
$git config --global core.autocrlf input
리눅스 기본 명령어
파일 및 디렉토리 명령어
- ls (list)
- 기능
- 해당 디렉토리에 존재하는 파일 목록 출력
- 옵션
- -a
- 숨긴 파일 포함
- -l
- 상세 정보 출력
- *.확장자
- 확장자에 해당하는 파일 출력
- -a
- 별칭
- ll
- ls -al과 동일
- ll
- 기능
- cd (change directory)
- 기능
- 디렉토리 변경
- 사용법
- cd + 경로
- 경로 종류
- 상대 경로
- 현재 위치 기준으로 경로 설정
- 절대 경로
- 최상위 경로를 기준으로 경로 설정
- 상대 경로
- 기능
- pwd
- 기능
- 현재 디렉토리 경로 출력
- 기능
- touch
- 기능
- 크기가 0인 파일 생성
- 파일이 존재하면 수정 시간만 변경
- 기능
- cp (copy)
- 파일이나 디렉토리 복사
- mv (move)
- 파일 또는 디렉토리 이동 및 이름 변경
- mkdir (make directory)
- 새 디렉토리 생성
- rmdir (remove directory)
- 디렉토리 삭제
- 디렉토리가 비어있어야 함
- remove (remove)
- 파일 또는 디렉토리 삭제
- 옵션
- -f
- 강제 삭제
- -rf
- 하위 디렉토리까지 전부 강제 삭제
- -f
파일 확인 명령어
- cat
- 파일 내용 출력
- head
- 파일 앞 10행 출력
- tail
- 파일 마지막 10행 출력
- more
- 파일 내용을 페이지 단위로 출력
- clear
- 현재 화면 초기화
vi (vim) 편집기
- vi 파일명
- 존재하지 않는 파일 명을 입력하면 새 파일을 생성
- 모드
- i
- 입력 모드
- esc
- 명령 모드
- i
명령 모드 주요 명령어
- :w
- 저장
- :q
- 종료
- :wq
- 저장 후 종료
- :q!
- 강제 종료
- : set number
- 행 번호 출력
- /문자열
- 문자열 찾기
- 찾은 후 n으로 다음 위치 이동
- x
- 문자 삭제
- dd
- 현재 행 삭제
- yy
- 현재 행 복사
- p
- 붙여넣기
- 복사한 내용 현재 행 이후에 붙여넣기
- 이동 명령어
- gg
- 첫 행으로 이동
- G
- 끝 행으로 이동
- :숫자
- 해당 숫자의 행으로 이동
- ^
- 현재 행의 처음으로 이동
- $
- 현재 행의 끝으로 이동
- gg
Git 기초
기본 명령어
- git init
- 저장소 생성
- git add 파일명
- 저장소 스테이지에 파일 추가
- git commit
- 변경된 파일을 저장소에 제출
- 이력, 버전, 타임라인 추가
- git status
- 저장소 상태 출력
파일 상태
- tracked
- 버전을 만든 후에 깃에서 변경 내역을 추적 중
- untracked
- 한 번도 버전을 만들지 않음
- umnodified
- 수정되지 않은 상태
- modified
- 작업 트리에서 수정한 후 아직 스테이지에 저장하지 않은 상태
- staged
- 스테이지에 있고 아직 커밋하지 않은 상태
커밋
- 코드의 변화를 기록하는 것
- 모든 코드의 변경 이력은 커밋을 통해 기록
branch 관련 명령어
- git branch 브랜치 명
- 브랜치 추가
- git switch 브랜치 명
- 작업중인 브랜치 변경
- git merge 브랜치명
- 현재 작업중인 브랜치에서 해당 브랜치를 끌어와 병합
활용
- 저장소 생성
- 폴더 생성
mkdir git_dir
- 폴더 이동
cd git_dir
- 깃 초기화
⇒ master 생성, .git 폴더 생성git init
- 저장소 파일 추가
- 파일 생성
vi test.txt
- 저장소 상태 확인
git status
- 파일 추가
- git 추척 설정
- 한 번에 수정된 모든 파일 추가는 git add .
git add test.txt git add .
- git 추척 설정
- 커밋
- 커밋 메세지 작성 후 저장
git commit
- 메세지 작성 + 커밋
git commit -m "메세지 내용"
- add와 한 번에 커밋
git commit -am "메세지 내용"
- 로그 확인
- git log
- 과거 버전으로 돌아가기
- reset
- 해당 시점으로 돌아감
- 코드 앞 4자리만 입력해도 가능
- —hard 옵션은 파일까지 완전히 삭제
$ git reset --hard 해시 값
- revert
- 새로운 커밋을 추가
- 중간의 해당 행적만 삭제
- revert에서 충돌이 날 경우 revert 불가 (수정 후 revert)
- 해당 커밋 내역이 제외되었다는 이력이 추가
- Accept Current Change
- 현재 브랜치 변경 사항을 유지하고, 병합 하려는 변경 사항 무시
- Accept Incoming Change
- 병합 하려는 변경 사항을 유지하고, 현재 브랜치의 변경 사항 무시
- Accept Both Changes
- 두 변경 사항 모두 파일에 포함
- Compare Changes
- 충돌한 두 변경 사항을 비교해서 차이 확인
- Accept Current Change
- reset, revert 차이
- 리셋은 이력을 남기지 않음
- 리버트는 이력을 남김
- reset
- 브랜치 생성
- master와 브랜치 출력
git branch
- 브랜치 이동
- checkout이었으나, 2.23 이후 switch와 resotre로분리
git switch -c 브랜치 명
- 브랜치 삭제
git branch -d 브랜치 명 (커밋 남아있을 경우 강제 삭제는 -D)
- 브랜치 명 변경
git branch -m 기존 브랜치 명 새 브랜치 명
- master 브랜치와 병합
- merge
- 합치면서 새로운 커밋 하나 생성
git merge 브랜치 명 // 충돌 전으로 돌아가기 git merge --abort
- rebase
- 가지를 그 앞으로 그대로 옮겨 붙임
- merge
- 충돌 해결
- 두 개의 브랜치에서 같은 파일을 수정한 상태에서 병합하려는 경우 충돌 발생
- 해당 경우 수정해서 반영
- 로그 보기
- git log -p
- 커밋 마다 패치 내용 확인 (상세, diff형식)
- git log —start
- 요약 정보
- git log —name-only
- 이름만 출력
- git log —graph
- 그래프 형태로 출력
- git log -p
- 관리가 필요없는 파일 대상에서 제외
- .gitigmore파일 생성
- touch 명령어는 비어있는 파일 생성
- .으로 시작하는 파일은 숨김파일 (ls로는 보이지 않고, ls -al로해야 보임)
- git ignore파일에 내용 추가
- 깃이 더이상 추적하지 않음
- 파일 내용을 변경해도 상태가 변하지 않음
git add .gitignore
- .gitigmore파일 생성
GitHub
- 가입
GitHub · Build and ship software on a single, collaborative platform
- 용도
- 원격 저장소에서 깃 사용
- 지역 저장소 백업
- 협업 프로젝트에서 사용
- 온라인 개발 툴 사용
- 개발 이력 관리
- 오픈 소스 참여
- 코파일럿 사용
- 원격 저장소
- 서버 상에 통합되어있는 저장
- 토큰 생성
- 토큰 재확인 불가
- 별도 보관
- 윈도우
- Window 자격 증명 관리자
- 맥
- Keychain Access
- 소스트리 도구 옵션
- 원격 저장소 생성
- Fork
- 다른 사람의 저장소 복사
- Pull Request
- 포크한 저장소를 수정하여 다시 원본 저장소에 병합해달라는 요청 보냄
- Issue
- 저장소 내 사용자들 간 이슈 논의
- Wiki
- 기록 저장
- Fork
- 저장소 생성
- public
- collaborators 외에는 쓰기 권한 없음
- github 사용자는 누구나 읽기 및 fork 가능
- 소유권 이전 가능
- private
- 관리자가 지정한 협업자만 접근 가능
- 지정한 협업자만 포크 가능
- 유료 사용자에게만 소유권 이전 가능
- public
- 용어
- remote
- 원격 저장소와 연결
- branch -M main
- master 브랜치 명을 main으로 변경
- push -u origin main
- 현재 파일들을 원격 저장소로 push
- remote
Git 명령어
- git clone “저장소 주소”
- 원격 저장소의 모든 내용을 로컬 저장소로 복사
- git remote
- 로컬 저장소를 특정 원격 저장소와 연결
- git push
- 로컬 저장소의 변경사항을 원격 저장소로 보냄
- git fetch
- 로컬 저장소와 원격 저장소의 변경 사항이 다른 경우 비교해서 git merge로 문제 해결
- 최신 커밋을 로컬로 가져오기만 함
- git pull
- push와 반대, 원격 저장소의 내용을 로컬 저장소로 가져와 병합
- 최신 커밋을 로컬로 가져와 merge또는 rebase
- fetch와 pull의 경우 다른 개발자가 원격 저장소를 먼저 수정하는 경우 버전을 맞추기 위한 용도로 사용됨
권한
- 계정명, 그룹명
- 허가권 (누구한테 권한이 있는지)
- 3개 권한
- r
- 읽기 권한
- w
- 쓰기 권한 (수정, 삭제)
- x
- 실행 권한
728x90
반응형
'Git' 카테고리의 다른 글
5/8 - Git, 코파일럿 (1) | 2025.05.11 |
---|---|
5/7 - Git 명령어, GitHub, Eclipse 연결 (1) | 2025.05.11 |