Log & Diff 실습환경 만들기
VSCODE - extensions - Git Graph 설치
remote repository 생성
repository name : log_project, add readme file 옵션 체크
remote repository 주소 복사
local repository에 clone
파일 추가, 저장
cat > 파일명
enter를 누르면 파일에 넣을 내용을 입력받는다.
파일이 있다면 파일 내용을 덮어씌우고, 없다면 파일을 생성해서 입력 받은 내용을 넣어준다.
cat >> 파일명
원래 있던 내용에 추가해줌
cat 파일명
파일 내용 출력
ctrl + D
입력한 내용 저장
파일 수정 후 저장
cat > 파일명
3~5번 과정을 수행한 코드
git clone 주소(username, token 주소안에 넣기) #local repository에 clone
cat > hello.py #입력 후, 엔터키
print('hello, world') #입력 후, 엔터키, ctrl+D 키로 저장
cat hello.py #파일 내용 출력
git add hello.py
git commit -m 'create' hello.py # main branch에서 create
#이제부터는 hello.py 파일 내용을 수정하고, 이를 commit하여
git graph 변화를 본다.
cat > hello.py #입력후 엔터하고 입력창에 아래코드
print('hello, cat')
git commit -m 'modify 1' hello.py #main branch에서 modify 1
#새로운 branch를 만들고, 이동 후 hello.py 파일 내용을 수정하고
이를 commit해서 git graph 변화를 본다.
git checkout -b dev #dev라는 branch 생성 후, 이동
cat > hello.py #입력후 엔터하고 입력창에 아래코드
print('hello, dog')
git commit -m 'modify 2' hello.py #dev branch에서 modify 2
git log
branch 별 변경이력을 볼 수 있음, 단 보고자 하는 branch에 있어야함.
위 실습환경 만드는 코드에서 남긴 log를 조회해보자.
main 조회
dev 조회
modify 1까지는 main과 같고 modify 2에서 차이가 난다
git log를 보기 편하게 만든 것이 git graph이다.
git config --global core.editor <editorname> --wait
--wait 옵션(생략가능)은 vscode를 실행하고 있다면, command를 대기상태로 두고(git bash에 아무것도 입력 못하는 상태), vscode를 닫으면 다시 git bash에서 명령어를 입력 가능하도록 하는 것
Git Configuration 파일 열기
git config --global -e
git editor를 vscode로 설정하여서 vscode로 열린다.
Git Diff 설정 추가
위 파일에 git diff 설정을 추가한다.
difftool 명령을 vscode로 wait 옵션을 넣어 실행한다는 의미
[diff]
tool = vscode
[difftool "vscode"]
cmd = "code --wait --diff $LOCAL $REMOTE"
Git Diff란?
버전 차이를 조회하는 명령, branch 간에 commit 간 비교가 가능
git diff <branch1> <branch2>
git diff <commit고유번호1> <commit고유번호2>
git difftool <branch1> <branch2>
git difftool <commit고유번호1> <commit고유번호2>
diff를 이용하면 아래와 같이 vim형태로 보인다.
difftool은 vscode에서 실행되고 diff보다 보기 편하다.
아래 예제들이 모두 difftool을 이용한 예이다.
git difftool main dev
branch간 비교를 위해 branch 별로 같은 파일명에 파일내용에 변화를 주었다.
git difftool commit고유번호1 commit고유번호2
commit간 비교에는 commit 고유 번호가 필요하다.
고유번호는 git log 명령으로 조회가능
번호 전체를 다 넣어도되고, 앞에서 7자리까지만 넣어도 됨
commit간 비교를 위해
하나의 파일에 파일내용을 변경할때마다 commit을 하였다.
git difftool head head^
head : 마지막 commit, head^ : 마지막 전 commit
git difftool head
git difftool main origin/main
main : local, origin/main : remote
Git Graph 확인
현재폴더에서 code .
branch, 처음부터 마지막 commit 기록, commit 고유번호, 파일 내용 등을 한눈에 볼 수 있다.
Merge 실습환경 만들기
merge_project 라는 remote repository 생성(+add readme file)
local repository에 clone
clone 후, merge_project 폴더로 이동
파일 추가, 저장
test.txt 파일(내용 my name is noma.)
commit('create')
branch 생성 후 이동, 파일 수정
branch : 'dev'
test.txt 파일 수정(다음 내용 추가 are you?)
Merge tool 설정
git configuration 파일 열기
git config --global -e
git merge 설정 추가
위 파일에 아래 코드 추가
[merge]
tool = vscode
[mergetool "vscode"]
cmd = "code --wait $MERGED"
현재 위치한 branch에 다른 branch를 병합
git merge <병합할 branchname>
a에 b를 병합한다고 하면, 현재 위치가 a여야 한다.
main에 dev를 merge 한 결과 조회
원래 modify 1 commit은 dev에만 존재했는데
merge 후에 main에도 modify 1이 존재한다.
branch를 merge 하는 과정에서 충돌이 생길 수 있다.
혹은 push,pull 과정에서도 충돌이 생길 수 있음
merge conflict 상황 만들기
main에서 branch 생성 : dev2 이동은 x
main에서 파일 내용 수정, 수정 후 commit
dev2에서 파일 내용 수정, 수정 후 commit
main에서 dev2를 merge : conflict 발생
git mergetool
입력git add 파일명
git commit
#
위 코드 실행하고
merge branch 'dev2'문구가 뜨면
conflict가 해결되고 merge가 된것
git log or git graph로 결과 확인
특정 버전(commit)에 tag를 달아놓을 필요가 있을 때 사용(예를 들어, 새로운 버전 릴리즈)
중요한 commit에 tag를 해서 바로 찾을 수 있도록 도와주는 기능
실습환경 만들기
1. remote repository 생성 : tag_project, +add README
2. local repository clone
3. 파일 생성 후, commit 3개 만들기
파일명 hello.txt
commit1 : hello, world.
commit2 : hello, noma.
commit3 : hello, zerobase.
4. remote repositort에 push
마지막 commit에 tag 생성
git tag <tagname>
특정 commit에 tag 생성
git tag <tagname> <commithash>
tag를 remote repository로 push
git push origin <tagname>
tag 목록보기
git tag
tag 상세정보
git show <tagname>
tag 삭제(local)
git tag --delete <tagname>
tag 삭제(remote)
git push --delete origin <tagname>
Git의 기능은 아니고, Git hub에서 제공하는 기능
프로젝트에 대한 설명, 사용방법, 라이센스, 설치법과 같은 부분을 기술한 파일
나, 동료, 프로그램 사용자를 위해 존재
readme 실습 파일 readme