x bell

구독 해주세요!

x
search--v1

Welcome to my Blog

From hardware to software,

I'm System Engineer

down_to_down
facebook-like--v1

Best POST

Wait! Let's take a look at the most popular posts!

Please take a look at the latest post that I wrote with all my heart.

external-Study-school-smashingstocks-flat-smashing-stocks-5

Activities

These are the activities I've been working on so far.

Education

B.S. @Dankook University, School of Electronics and Electrical Engineering

Awards and Honors

Sungkyunkwan University Engineering Innovation Center. Creative Comprehensive Design Competition (Nov. 2021)

External activities

College Student Code-it Coding Camp 5th (an Outstanding Activist)

Comento Course - Designing Semiconductor Circuits (CHIPs) with Eyes

Taking a lecture

IDEC_ Deep Learning Foundation and Design(Jul. 2022)

IDEC_ Verilog HDL Basic and Deep Learning Neural Network Design(Jul. 2022)

IDEC_ Embedded System Design Based on FPGA(Aug. 2022)

IDEC_ Embedded Memory (SRAM) Foundation(Jan. 2023)

IDEC_ Artificial Intelligence Acceleration Processor(Feb. 2023)

IDEC_ CUDA-based GPU programming foundation(Jul. 2023)

IDEC_ Layout Design for Full Custom IC Design(Jul. 2023)

Udemy_ 객체지향 프로그래밍 및 설계(Java)

Udemy_ Android 12 및 Kotlin 개발 완전 정복

Udemy_ Git & Github 실무 활용 완벽 가이드

Udemy_ The Web Developer 부트캠프 2023

Udemy_ High-Level Synthesis for FPGA, Part 1-Combinational Circuits

인프런_ 설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계

인프런_ 설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복

Tool

Tools & Skills

I can use this Tools & Skills. Also, I'm practicing something.

Language

C C++ Python Java kotlin javascript--v1 assembly matlab

Web & App & MarkUp

Html Css Bootstrap React Node MongoDB android-studio--v2

Hardware

Systemverilog Vivado Vitis arduino Raspberrypi Arm Risc-V

Design

adobe-photoshop--v1 adobe-illustrator--v1 davinci-resolve microsoft-visio-2019

Editer & Documentation

visual-studio-code-2019 external-sublime-text-a-sophisticated-text-editor-for-code-markup-language-logo-color-tal-revivo microsoft-powerpoint-2019 microsoft-excel-2019--v1 microsoft-word-2019

Ai

tensorflow pytorch

etc.

Git external-Linux-logos-and-brands-those-icons-flat-those-icons
filled-like

Interests

I'm interested in and working on the things that come out below!

● System Design

● Logic Semiconductor Design

● Web & App Design

● AI Model Compression & Computer Vision

music

Rhythmic Hobby

Come listen to my little hobby, EDM Composition.

castle

 

1. Git Checkout

>git checkout <commit-hash>

특정 commit hash로 checkout

즉, 특정 commit hash로 건너뜁니다. (시간을 이동합니다.)

 

>git checkout HEAD~1

HEAD에서 1개 이전의 commit을 참조합니다.

 


 

* 아래와 같은 문장이 나올 수 있습니다!

-> HEAD가 분리되었습니다. 하하

 

 

HEAD가 branch를 통해 commit에 붙어 있어야 하는데, branch없이 commit에 붙어 있어서 발생하는 문제입니다.

아래와 같이 새로운 branch를 만들어서 이동하면 문제는 해결됩니다.

 

>git switch -c <branch-name>

 

 

2. 변경 사항 초기화하기

>git checkout HEAD <file-name> or >git checkout -- <file-name>

file의 수정한 내용을 전부 삭제합니다. (처음으로 되돌리기/마지막 commit의 내용으로 재설정)

 

[신 명령어]

>git restore <file-name> or >git restore --source <file-name>

 

 

3. Unstaging하기

>git restore --staged <file-name>

stage에 올라간 변경사항들을 취소할 때 사용합니다.

 

 

4. Commit 취소하기/복구하기

>git reset <commit-hash>

commit-hash 이후의 commit을 제거하며, 현재 파일의 데이터는 유지 -> working directory의 변경 사항은 유지

 

>git reset --hard <commit>

commit-hash 이후의 commit을 제거하며, 현재 파일의 데이터도 삭제 -> working directory의 변경 사항도 삭제

 

=> branch 기준으로 움직임으로, 다른 branch에는 영향이 없습니다.

 

 

>git revert <commit-hash>

새로운 commit을 만들고 이전 commit의 변경 사항을 취소합니다. (모든 commit은 남아 있음)

-> 새로운 commit에 복구할 commit의 정보를 담습니다.

 

'Study > GIT' 카테고리의 다른 글

[Git] 7. Git Stash  (0) 2023.12.04
[Git] 6. Git Diff로 비교하기  (0) 2023.12.03
[Git] 5. Git Merges (branch 병합하기)  (0) 2023.11.29
[Git] 4. Git Branch  (0) 2023.11.27
[Git] 깃크라켄(GitKraken) GUI 환경에서 Git 사용하기  (0) 2023.11.27

Tag

 

1. Git Stash란?

A라는 brach에서 작업을 하던 도중에, commit을 하지 않고 다른 branch로 이동을 할 수 없습니다.

-> 이때, commit을 하고 싶지는 않는데, 다른 branch로 이동할 수 있습니다.

-> 임시 저장과 같은 개념

 

 

2. Git Stash

>git stash or >git stash save

commit되지 않은 모든 변경사항을 stash

 

>git stash pop

가장 최근에 stash한 변경사항을 꺼내올 수 있음

 

>git stash apply

가장 최근에 stash한 변경사항을 꺼내오는데, stash영역에 stash한 내용은 남겨둡니다.

 

여러 개 Stash 사용하기

* stash 영역은 stack 구조로 작동해서, 여러개를 stash할 수 있습니다.

   (많이 사용하는 기능은 아닙니다.)

 

>git stash로 여러개 push해줍니다.

 

>git stash list

stash된 목록을 보여줍니다.

 

>git stash apply stash@{id}

stash 목록의 해당 id의 stash를 가져옵니다. (stash영역에 stash한 내용은 남겨둡니다.)

 

 

>git stash drop stash@{id}

stash 목록의 해당 id의 stash를 제거합니다.

 

'Study > GIT' 카테고리의 다른 글

[Git] 8. Git Checkout/Restore  (0) 2023.12.04
[Git] 6. Git Diff로 비교하기  (0) 2023.12.03
[Git] 5. Git Merges (branch 병합하기)  (0) 2023.11.29
[Git] 4. Git Branch  (0) 2023.11.27
[Git] 깃크라켄(GitKraken) GUI 환경에서 Git 사용하기  (0) 2023.11.27

Tag

 

1. Git Diff 명령어

Git에서 변경 사항들을 보여주는 명령입니다.

ex. 파일과 파일 사이의 차이점

 

>git diff

다음 commit을 위해 stage에 등록되지 않은 working directory의 변경사항을 모두 나열

 

 

2. Git Diff 읽는 법

Ex. 변경 전: A B C D E   =>   변경 후 : A B C E

 

 

diff --git a/new.txt b/new.txt

변경 전 파일(a)과 변경 후 파일(b)

 

index e0304e4..01d5e71 100644

메타 데이터와 Hash

 

--- a/new.txt
+++ b/new.txt

변경 전 파일(a)과 변경 후 파일(b)

* (-)는 a 파일의 변경 사항 (+)는 b 파일의 변경 사항

 

@@ -1,5 +1,4 @@

-1, 5 : a파일의 1번째 줄부터 5줄이 추출되어 보여짐

1, 4 : b파일의 1번째 줄부터 4줄이 추출되어 보여짐

 

 A
 B
 C
-D
 E

A, B, C, E는 변경 사항이 없음

a파일에서 D가 사라짐

 

 

3. 다양한 사용법

[ staging 되지 않은 파일 비교 ]

stage에 올리지 않고 >git diff 사용

 

[ 작업 directory 비교 ]

>git diff HEAD

마지막 commit이후의 working directory의 모든 변경 사항을 보여줌

 

>git diff HEAD [filename]

특정 파일 비교

 

[ staging된 변경사항만 비교 ]

>git diff --staged or >git diff --cached

stage에 등록된 변경 사항만 보여줌

 

>git diff --staged [filename]

특정 파일 비교

 

[ 전반에 걸친 비교 ]

>git diff branch1..branch2 or >git diff branch1 branch2

branch1과 branch2를 비교

 

>git diff commit1..commit2 or >git diff commit1 commit2

commit1과 commit2를 비교

* commit은 hash로 된 commit code를 넣어주면 됩니다. ex) 4a9da7b

 

'Study > GIT' 카테고리의 다른 글

[Git] 8. Git Checkout/Restore  (0) 2023.12.04
[Git] 7. Git Stash  (0) 2023.12.04
[Git] 5. Git Merges (branch 병합하기)  (0) 2023.11.29
[Git] 4. Git Branch  (0) 2023.11.27
[Git] 깃크라켄(GitKraken) GUI 환경에서 Git 사용하기  (0) 2023.11.27

Tag

 

1. Merging Branches

여러 branch를 하나로 합치는 기능 (보통 Master로 합침)

- 특정 commit이 아닌 branch를 병합

- 현재 head의 branch를 병합 -> 병합하고 싶은 branch로 이동해주어야 함

  ( >git switch master )

 

>git merge <branch-name>

branch-name의 branch를 현재 Head가 가리키는 branch에 병합

 

1) 병합할 branch의 commit이 없을 경우

병합 전
병합 후

 

2) 병합할 branch의 commit이 있을 경우

- 병합된 commit은 두 개의 부모 commit을 갖습니다.

 

병합할 2개의 commit이 겹치는 내용이 없을 경우, 문제없이 병합이 됩니다.

    하지만, 겹치는 내용이 있으면, 병합시 충돌이 발생합니다.

 

병합 전
병합 후

 

2. 병합 중 충돌 해결하기

 

1. 충돌이 발생하면, Git은 충돌이 된 파일을 알려줍니다.

2. 충돌이 발생한 파일을 열어 편집해줍니다.

3. 변경 사항을 commit합니다.

 

* VS Code를 이용하면 여러가지 옵션을 쉽게 사용하여 고칠 수 있습니다.

 

 

Accept Current Change: 현재 변경 사항을 수락하고 충돌을 해결합니다. 충돌이 발생한 현재 라인의 변경 사항을 그대로 유지합니다.

 

Accept Incoming Change: 다른 브랜치(일반적으로 병합 대상 브랜치)의 변경 사항을 수락하고 충돌을 해결합니다. Accept Incoming Change를 선택하면 충돌이 발생한 현재 라인을 선택한 브랜치의 변경 사항으로 대체합니다.

 

Accept Both Changes: 현재 변경 사항과 다른 브랜치의 변경 사항을 모두 수락하고 충돌을 해결합니다. 충돌이 발생한 현재 라인에 대해 두 변경 사항을 모두 유지합니다. 이 경우, Git은 변경 사항을 모두 포함하는 병합 커밋을 만듭니다.

 

Compare Changes: 변경 사항을 비교하고 수동으로 충돌을 해결할 수 있습니다. 변경 사항을 쉽게 비교할 수 있는 비교 도구가 열립니다.

 

'Study > GIT' 카테고리의 다른 글

[Git] 7. Git Stash  (0) 2023.12.04
[Git] 6. Git Diff로 비교하기  (0) 2023.12.03
[Git] 4. Git Branch  (0) 2023.11.27
[Git] 깃크라켄(GitKraken) GUI 환경에서 Git 사용하기  (0) 2023.11.27
[Git] 3. Commit 추가 사항들  (0) 2023.11.27

Tag

 

1. Git Branch?

Git 브랜치(branch)는 Git 버전 관리 시스템에서 코드를 효과적으로 관리하고 개발하는 데 사용되는 기능 중 하나입니다. 브랜치는 코드의 특정 버전을 나타내는 포인터이며, 개발자들은 동시에 여러 가지 작업을 진행하거나 서로 다른 기능을 개발할 수 있도록 도와줍니다.

 

새로운 기능을 추가하거나 버그를 수정하려고 할 때, 기존의 코드를 변경하지 않고 새로운 브랜치에서 작업할 수 있습니다. 이는 여러 작업이 서로 간섭하지 않고 병렬로 진행될 수 있도록 합니다. 작업이 완료되면, 해당 브랜치를 기존의 코드에 통합할 수 있습니다.

 

아래와 같이 각 Commit해시 코드를 가지고 있으며 부모의 해시코드를 가리키고 있습니다.

 

출처

 

 

2. Master Branch

Master Branch는 Git 저장소에서 기본적으로 생성되는 기본 브랜치 중 하나입니다. 이 브랜치는 초기 Git 저장소를 생성할 때 자동으로 만들어지며, 보통 프로젝트의 초기 상태를 나타냅니다. 개발자들은 이 "master" 브랜치에서 작업을 시작하고, 여기에 있는 코드를 기반으로 새로운 기능을 개발하거나 버그를 수정할 수 있습니다.

 

아래 그림에서 보이는 main이 Master Branch를 의미합니다.

또한, 'On Branch main'도 이를 의미합니다.

 

 

"master" 브랜치는 Git 저장소를 초기화할 때 기본적으로 생성되는 기본 브랜치의 이름 중 하나였습니다. 그러나 Git의 사용 방식이 변화하면서 "master" 브랜치의 이름 대신 "main"이나 다른 이름을 사용하는 추세가 있습니다. 이것은 주로 다양한 이유로, 특히 다양한 문화적 및 언어적 이슈와 함께 사용자 커뮤니티에서의 더 나은 포용성을 위해서입니다.

 

>git branch

저장소에 있는 현재 존재하는 브랜치 목록을 보여줌

(*가 있는 곳이 현재 위치하는 Branch)

 

 

# Head -> Master

HEAD -> master는 Git에서 현재 작업 중인 브랜치와 커밋을 나타내는 표기입니다.

 

 

HEAD: Git에서 현재 작업 중인 커밋을 가리키는 포인터입니다. HEAD는 현재 브랜치의 최신 커밋을 가리키거나, 직접적으로 커밋을 가리키는 "detached HEAD" 상태에 있을 수 있습니다.

master: 이는 현재 작업 중인 브랜치의 이름입니다. "master"라는 브랜치에서 작업 중이라는 것을 나타냅니다.

 

* Head는 언제나 master branch에서 가장 최근에 commit한 branch를 가리킴

 

 

3. Branch 생성 및 전환

>git branch <branch-name>

새로운 branch를 만듦 (Note : 만든 branch로 이동하는 것이 아님)

 

=> Head는 master와 새로 만든 branch를 가리킴

 

 

>git switch <branch-name>

branch간에 이동

 

>git switch -c <branch-name>

branch를 생성 후, 생성된 branch로 이동

 

>git checkout <branch-name>
git switch와 동일한 작업을 하지만, 오래된 명령

 

※ 주의 사항

파일을 수정한 후, git switch 명령시 데이터가 삭제될 수 있어서 오류가 발생합니다.

-> commit하거나 삭제하거나 stash(임시 저장)하여 해결

 

 

 

4. Branch 삭제 및 이름 변경

>git branch -d <branch-name>

branch 삭제

 

>git branch -D <branch-name>

병합 상태와 관계없이 강제 삭제

 

>git branch -d <new-branch-name>

branch 이름 변경 ( 이름을 바꾸고자 하는 branch에서 수행)

 

Tag

 

1. 깃크라켄(GitKraken)이란?

깃크라켄(GitKraken)Git시각적으로 관리하고 사용할 수 있게 해주는 Git 클라이언트입니다. Git은 분산 버전 관리 시스템으로, 소스 코드의 효율적인 협업과 관리를 위해 사용됩니다. GitKraken은 사용자가 Git 프로젝트를 더 쉽게 관리할 수 있도록 도와주는 툴이며, 그래픽 사용자 인터페이스(GUI)를 제공하여 Git 명령어를 사용하지 않고도 프로젝트를 관리할 수 있습니다.

 

GUI는 브랜치 및 히스토리 시각화, 충돌 해결, 머지 시각화 등을 제공하여 사용자 경험을 향상시키고 팀 협업을 지원합니다.

 

 

2. 깃크라켄(GitKraken) 다운로드

GitKraken

 

 

 

3. 깃크라켄(GitKraken) 사용법

기존의 repository를 사용하거나, 새로운 repository를 추가하여 줍니다.

 

초기 화면입니다.

 

 

새로운 파일을 추가하거나 파일을 수정하면 우측 위에 목록이 뜹니다.

(Note) 빈 Branch로 선택되어 있어야 함 (파일을 추가하거나 변경하면 생김)

 

 

업데이트하고 싶은 파일의 Stage File을 클릭하면 아래로 내려가게 된다.

 

 

그리고 Comment를 입력 후 Commit changes to..을 누르면 Commit이 된다.

 

 

모두 잘 업데이트가 되었습니다.

 

 

'Study > GIT' 카테고리의 다른 글

[Git] 5. Git Merges (branch 병합하기)  (0) 2023.11.29
[Git] 4. Git Branch  (0) 2023.11.27
[Git] 3. Commit 추가 사항들  (0) 2023.11.27
[Git] 2. Git 기초  (0) 2023.11.27
[Git] 1. Git과 Git 설치  (0) 2023.11.27

Tag

 

1. Atomic Commits

Atomic Commits은 소프트웨어 개발에서 사용되는 개념으로, 한 번의 커밋에서 하나의 독립적인 변경 사항만을 포함하는 것을 의미합니다. "Atomic"은 원자적인 변경이라는 뜻이며, 이는 커밋이 마치 하나의 원자처럼 분할할 수 없는 단위로 간주되어야 함을 나타냅니다.

 

- 가독성 향상: 각 커밋이 한 가지 변경 사항만을 포함하면 코드 변화를 추적하고 이해하기 쉽습니다. 이는 팀원들이나 나중에 코드를 검토하거나 유지보수할 때 도움이 됩니다.

 

- 롤백 용이성: 하나의 원자적인 변경 사항이 실패하면 해당 변경 사항만 롤백할 수 있습니다. 전체 커밋이 실패하는 경우보다 문제 해결이 빠릅니다.

 

- 협업의 편의성: 여러 명의 개발자가 협업할 때, Atomic Commits를 사용하면 각자의 작업을 조율하고 통합하는 데 도움이 됩니다.

 

 

2. Commit Message

Git Docs에 따르면 현재시제의 메세지를 쓸 것을 권장합니다. (명령어를 사용하여 do, make, create ..)

-> 오래된 관례로 꼭 따르지 않아도 됨.

-> 자신에게 주어진 환경에 맞게 사용 (회사에서는 회사 내규에 따라...)

 

 

3. Git Log

>git log

 

>git log --oneline

log를 한 줄로 깔끔하게 보여줌

 

 

 

4. --amend 실수 수정

git commit --amend

바로 직전의 commit을 수정할 수 있음

(수정 사항을 stage에 올리고 위 명령어를 입력하면 적용)

 

 

5. 파일 무시하기

일부 공개되기 싫거나 숨기고 싶은 파일을 깃으로 추적하지 않도록 설정하는 것

(ex. 보안키, 언어의 라이브러리 파일들, OS 전용 파일, ...)

 

repository안에 .gitignore 파일을 만들어 추적하고 싶지 않은 목록을 만들어서 사용

 

.gitignore

 

아래 사이트에서 무시할 파일에 대한 리스트를 얻을 수 있습니다.

 

gitignore.io

 

'Study > GIT' 카테고리의 다른 글

[Git] 5. Git Merges (branch 병합하기)  (0) 2023.11.29
[Git] 4. Git Branch  (0) 2023.11.27
[Git] 깃크라켄(GitKraken) GUI 환경에서 Git 사용하기  (0) 2023.11.27
[Git] 2. Git 기초  (0) 2023.11.27
[Git] 1. Git과 Git 설치  (0) 2023.11.27

Tag

 

1. Git Repo

Git Repo는 Git이라는 분산 버전 관리 시스템을 사용하여 관리되는 저장소(Repository)를 가리킵니다.

 

Git Repo에는 프로젝트의 모든 파일과 폴더, 그리고 각 파일의 변경 이력이 포함되어 있습니다. 이러한 저장소는 로컬 컴퓨터에 있을 수도 있고, 원격 서버에 있을 수도 있습니다. 여러 개발자가 협업할 때, 중앙 저장소나 원격 저장소를 사용하여 소스 코드를 공유하고 업데이트할 수 있습니다.

 

Repository

- 깃저장소(작업공간)

- 각각 독립된 프로젝트를 의미

 

 

2. Git Init & Status

>git status

깃 저장소에 대한 정보 / 폴더 내 내용 변화 감지-> git이 계속 관찰 중임

 

>git init

new git repository -> 현재 repository를 git 저장소로 초기화 (프로젝트 당 한번 사용)

 

* git init 사용하면 폴더에 숨김 폴더 .git 생성

* git repository 밑에 있는 폴더는 이미 git의 영향권에 있음
-> >git status를 이용해 확인 후 >git init을 할 것

(이미 git영향을 받고 있는데 init하면 문제가 생길수도) => .git을 제거하여 해결

 

 

3. Commit Flow

commit

git 저장소의 check point 중 하나

 

 

* 선택적으로 commit이 가능

-> 여러 변경 사항을 한번에 commit가능 (원하는 시점에서 commit 가능)

 

 

4. Git Add로 변경 사항 스테이징

 

working directory

실제 작업 공간(폴더)

 

starting area

commit 전에 변경 사항들을 등록하는 곳

 

>git add file1 file2

starting area에 file 추가

 

 

 

5. Git 명령어

>git commit

 

>git commit -m "my message"

message와 함께 commit (message: 변경 사항 등을 확인할 수 있게 달아두는 주석)

 

 

 

6. Git Log 명령어

>git log

깃 저장소에 대한 커밋 정보들을 검색

 

>git add .

모든 변경 사항들을 datage에 넣음

 

'Study > GIT' 카테고리의 다른 글

[Git] 5. Git Merges (branch 병합하기)  (0) 2023.11.29
[Git] 4. Git Branch  (0) 2023.11.27
[Git] 깃크라켄(GitKraken) GUI 환경에서 Git 사용하기  (0) 2023.11.27
[Git] 3. Commit 추가 사항들  (0) 2023.11.27
[Git] 1. Git과 Git 설치  (0) 2023.11.27

Tag

C

Contents

island
dragon
Danger!

이 친구는 사실 용이에요.

용에게 인사를 해주세요.

man-raising-hand-icon
hashtag
fox