Git - log, diff, merge, conflict, tag, README : 데이터 취업 스쿨 스터디 노트 12/29

slocat·2023년 12월 29일
0

start-data

목록 보기
53/75

⭐cat

# 파일 내용 확인
cat test.txt

# 파일 내용 변경
cat > test.txt

# 덮어쓰지 않고 기존 내용에 추가
cat >> test.txt

# 저장 : ctrl+D

1. log, diff

1-1. 실습 환경 설정

cat > hello.py
print('hello world')

cat > hello.py
print('hello cat')

git commit -m 'modify 1' hello.py
git checkout -b dev

cat > hello.py
print('hello dog')

git commit -m 'modify 2' hello.py

1-2. log

branch별 변경 이력을 보여주는 명령어

# main branch에서 실행하면 main branch의 log를 보여줌
git log

1-3. git editor 설정

# wait: command line으로 VSCode를 실행한 경우, VSCode 인스턴스를 닫을 때까지 command 대기
git config --global core.editor <editorname> --wait

1-4. git diff tool 설정

버전 간 차이점을 조회해주는 명령어

# git configuration 파일 열기
git config --global -e

# git diff 설정 추가
[diff]
	tool = vscode
[difftool "vscode"]
	cmd = "code --wait --diff $LOCAL $REMOTE"

1-5. git diff

main branch hello.py : print('hello, cat')
dev branch hello.py : print('hello, dog')

# commithash 확인
git log
# branch 간 비교
git diff <branch1> <branch2>
git difftool <branch1> <branch2>

# commit 간 비교
git diff <commithash> <commithash>
git difftool <commithash> <commithash>

# 마지막 commit과 이전 commit 비교
git diff HEAD HEAD^
git difftool HEAD HEAD^

# 마지막 commit과 현재 변경사항 비교
git diff HEAD
git difftool HEAD

# local과 remote 간 비교
git diff <branch> origin/<branch2>
# 세팅
cat > hello.py
print('hello, pig')

# push
git push origin main

# commit
git commit -m 'modify 3' hello.py

# local과 remote 간 비교
git diff <branch> origin/<branch2>

>>>
--- a/hello.py
+++ b/hello.py
@@ -1 +1 @@
-print('hello, pig')
+print('hello, cat')

2. merge, conflict

2-1. merge tool 설정

# git configuration 파일 열기
git config --global -e

# git merge 설정 추가
[merge]
	tool = vscode
[mergetool "vscode"]
	cmd = "code --wait $MERGED"

2-2. merge

현재 위치한 branch(main)에 다른 branch(dev) 병합하기

# main branch에 위치한 상태에서
git merge dev

2-3. conflict

merge, push, pull 할 때 충돌이 일어날 수 있다.

# in main
cat > test.txt
hello, ggomi.

git branch dev3

cat > test.txt
hello, zero.

git commit -m "modify -zero" test.txt

# in dev3
cat > test.txt
hello, dev.

git commit -m "modify -dev" test.txt

# in main (main에서 dev3을 merge하려고 함)
git merge dev3
>>>
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.

conflict 발생 후 merge tool을 실행하면 conflict 발생한 파일이 차례대로 열린다.

git mergetool

원하는 코드를 선택하여 수정하고 저장한다.
터미널에 돌아와서 conflict을 해제한다. (add + commit)

git add test.txt
git commit

3. tag

특정 버전(commit)에 tag를 달고 싶을 때 사용한다.
예) version release - ver 1.0.0

# tag 목록 확인
git tag

# tag 상세 정보 확인
git show <tagname>
# 현재 버전에 tag 달기
git tag <tagname>

# 특정 버전에 tag 달기
git tag <tagname> <commithash>

앞선 작업은 모두 local에서 이루어진 것이다.
tag를 remote repository에 push 하려면?

git push origin <tagname>
# tag 삭제
git tag --delete <tagname>

local에서 삭제했다고 remote에서도 삭제되는 것은 아니다.
remote에서도 삭제하려면,

git push --delete origin <tagname>

4. README

github에서 제공하는 기능으로, 프로젝트에 대한 설명, 사용방법, 라이센스, 설치방법 같은 내용을 기술하는 파일이다.
프로젝트를 진행할 때도 적절히 활용해보자!

markdown 문법

# This is H1
## This is H2
> This is a first blockquote
> * list 1
> * list 2
> > This is a second blockquote
> > > This is a third blockquote

1. first
2. second
3. third

* 1단계
  * 2단계
    * 3단계
+ 1단계
  + 2단계
    + 3단계
- 1단계
  - 2단계
    - 3단계
(* + - 혼용 가능)

<code>print('This is codeblock')</code>
<pre><code>print('This is codeblock')</code></pre>

``` print('This is codeblock') ```

* * *
***
*****
- - -
-----

- slocat: https://velog.io/@slocat/posts
- link: [slocat](https://velog.io/@slocat/posts, "slocat velog 입니다.")

* *single asterisks*
* _single underscores_
* **double asterisks**
* __double underscores__
* ~~cancleline~~

image updload: 이미지가 어딘가에 업로드 되어 있어야 함
* github 저장소 - issue- new issue
* 내용에 업로드할 이미지를 넣으면 생성되는 마크다운 링크를 copy
* <pre><code>![Alt text](/path/to/img.png)</code></pre>
* <pre><code>![Alt text](/path/to/img.png "Optional title")</code></pre>

0개의 댓글