728x90

 

git diff 코드 정리

git diff
git diff HEAD
git diff --staged
git diff [filename]
git diff [branchname1]..[branchname2]

 

 

 

git diff란?

commit이나 branch 사이에 다른 점

파일(Working Directory)와 Repository 사이에 다른 점을 보여주는 명령어

출처 : [Git] git diff 한 번에 정리하기 — Dev World (kotlinworld.com)

 

 

git diff와 git diff HEAD 차이

1) git diff

Working Directory와 Staging Area 사이의 차이를 확인하기 위해 사용

  • caution : git add로 Staging Area로 넘어갔으면 git diff에서 보여주지 않음

 

2) git diff HEAD

Working Directory와 Staging Area 의 변경사항 모두를 Repository의 HEAD 커밋과 비교함

Staging Area에 올라간 내용은 물론 현재 작업 중인 내용(Working Directory) 모두 Repository의 HEAD와 비교됨

  • Staging Area로 올라가 안보인 변경사항은 git diff HEAD로 보인다

출처 : [Git] git diff 한 번에 정리하기 — Dev World (kotlinworld.com)

 

 

git diff 메세지 내용

상황 : test.txt에 원래 데이터 123에서 456을 추가함

  • 1번 ---a : 변경 전 파일 지칭명
  • 2번 +++b : 변경 후 파일 지칭명
  • 3번 test.text : 변경 전 파일명
  • 4번 test.text : 변경 후 파일명
  • 5번 - : 변경 전 파일 지칭
  • 6번 1,3 : 코드 1번 line 기준으로 3번 line까지 변경됐다는 의미
  • 7번 + : 변경 후 파일 지칭
  • 8번 1,6 : 코드 1번 line 기준으로 6번 line까지 변경됐다는 의미
  • 9번 123 : 변경 전 파일의 코드 1-3번라인의 내용
  • 10번 +4 +5 + 6 : 변경 전 파일(-) 1-3번 라인 뒤에 변경 후, 파일(+) 4-6번라인이 추가됐다는 의미

 

 

 

 

 

 

 

git diff --staged

git diff --staged는 Staging Area와 Repository HEAD 커밋 사이의 변경사항 확인을 위해 사용

커밋 전 사용되는 명령어로 가장 많이 씀

Staging Area에 올라간 변경사항만 Repository의 HEAD 커밋과 비교되며, 현재 작업 중인 Working Directory에서 git add되지 않은 변경된 사항은 반영x

※ git diff --staged와 git diff --cached 같다

출처 : [Git] git diff 한 번에 정리하기 — Dev World (kotlinworld.com)

 

 

git diff [option] [filename]

git add 파일명처럼 특정 파일에 대한 변경사항만 확인할 때 사용

git diff [option] [filename]

 

 

git diff [branch1]..[branch2]

브랜치 간 변경사항 확인

git diff [branch1]..[branch2] 

 

 

 

※ 그냥 git add 하면 git diff가 안나오는데 왜그럴까?

git diff는 Working Directory와 Staging Area 사이의 차이를 보여주는데,

git add를 통해 Staging Area에 변경 사항이 올라가버렸기 때문

 

 

 

 

참고자료

https://kotlinworld.com/278#git%--diff�%--%--%--git%--diff%--HEAD%--�%A-�%--�%-D%B-�%-A%A-�%--%-C%--�%B-%--�%B-�%--�%--��%--�%--�%--%--�%-D%B-

 

 

728x90
반응형
728x90

 

로컬에 내용들이 다 날라가고 리모트에 있는 내용들을 다 가져오는 것이므로 로컬에서의 데이터가 유실 될 수 있으니 괜찮은 경우에만 사용할 것!

git fetch --all
git reset --hard origin/[브랜치명]
git pull origin [브랜치명]

 

개념

1.git fetch --all

conflict가 발생하면, fetch로 remote(깃허브) 저장소에서 이전 파일들을 fetch해와 local로 저장해둔다

 

2.git reset --hard origin/[브랜치명]

local에서는 reset hard로 컨플릭트 발생 전 상태로 되돌림

 

3.git pull origin [브랜치명]

1번에서 자료를 받아두고 2번에서 클린하게 해두고 3번에서 다시 받아오는 형식

 

ex)

git fetch --all
git reset --hard origin/main
git pull origin main

 

728x90
반응형
728x90

에러메시지

fatal: refusing to merge unrelated histories

 

상황

신규 repository에 새로 push 할려는 상황

근데 git local과 연결하고 push하기 전에 github에서 먼저 read.me를 만들어두고 전날 커밋해둠. 리드미를 지우면 해결되지만 전 날 잔디를 유지하고 싶어서 방법을 찾는 중

 

원인

에러 메세지 의미 : commit 히스토리가 서로 관련이 없다는 뜻

즉, 서로 관련성이 없기 때문에 merge할 수 없다는 것

 

github에서 새 repository를 생성하면서 만든 readme.md 파일때문인데

Git의 작동방식은 로컬 저장소의 commit 목록과 원격 저장소의 commit 목록을 비교한 후 원격 저장소의 마지막 commit id와 동일한 commit id를 가진 로컬 저장소의 commit 시점을 찾아낸 뒤, 원격 저장소의 마지막 커밋과 연결하기 때문

원격 저장소의 첫번째 commit이자 마지막 commit인 readme를 추가하는 commit이 원격 저장소에는 존재하지 않고, 따라서 현 상태에서는 둘을 연결할 수 없다.

 

해결

방법1

repository를 삭제하고 다시 만든다. (readme.md 파일을 없애고 다시 저장소를 만든다.)

 

방법2

git pull origin 브런치명 --allow-unrelated-histories

git에서는 서로 관련 두 프로젝트를 병합할 때 기본적으로 거부하는데, 이를 허용하는 명령어

 

방법3

강제로 합병하는 방법

주의! 기존 커밋했던 코드 및 파일이 유실될 수 있음

git push -u origin +master
git push origin master -f

 

 

참고자료(Reference)

https://jobc.tistory.com/177

https://seolahchloe.tistory.com/entry/Git-오류해결-Updates-were-rejected-because-the-tip-of-your-current-branch-is-behind-its-remote

728x90
반응형
728x90

해당 저장소(repository)에 들어가서 우측 상단에 settings 클릭

왼쪽 탭에 Branches 탭으로 들어가서 아래처럼 Default branch에 현재 디폴트 브랜치명이 있고

이 우측에 연필 모양이 아이콘을 누르면 브랜치 네이밍 및 다른 브랜치를 디폴트 브랜치로 변경할 수 있다!

728x90
반응형
728x90

 

 

remote 연결, 조회, 연결해제

 

remote 연결

원격저장소(remote) 연결하기

git remote add <name> <url>

ex)

git remote add origin [<https://github.com/neverGiveUpppppp/kh-workspace.git>](<https://github.com/neverGiveUpppppp/kh-workspace.git>)

 

 

remote 목록보기

연결된 원격저장소(remote) 목록보기

git remote -v 

 

현재 로컬에 연결된 remote 목록    

 

remote 삭제

해당 원격저장소(remote) 삭제

git remote remove 리모트명

 

728x90
반응형
728x90

 

Fork란?

Fork는 포크로 집어 온다는 걸 연상하면 된다

팀프로젝트를 같이 깃허브에서 했다고 한다면 팀장의 깃허브에서 같이 작업했을텐데

해당 작업물을 내 리파지토리(저장소)로 끌어올 수 있는 편한 기능이다

 

팀프로젝트 깃허브 리파지토리에 들어가면 아래처럼 상단에 Fork가 보일 것이다

 

해당 아이콘을 누르면 아래의 페이지로 이동하는데

내 저장소로 가져갈 리파지토리 이름을 정하면 된다. create fork 클릭

 

Fork 업데이트하기

한번 포크해오고 나서 또 업데이트가 있어서 나중에 다시 Fork를 최신화 하고 싶을 때는 어떻게 해야할까?

포크한 리파지토리에서 가서 Sync fork를 누르고 Update branch 클릭 하나면 끝!!

728x90
반응형
728x90

 

깃을 처음 세팅하면서 유저 이름(name),이메일(email)을 등록하게 되는데

이때 오타가 있거나 등록한게 마음에 안들거나 한다면 변경하고 싶을 것이다. 나처럼ㅋㅋ

 

이렇게 name까지만 치면 현재 등록된 이름이 나온다

이메일도 마찬가지

 

변경하는 방법은 저 세팅 코드에서 name이나 email 다음 변경하기를 원하는 이름과 이메일주소를 넣으면 된다

$ git config --global user.name 변경할이름
$ git config --global user.email 변경할이메일주소

 

 

 

728x90
반응형
728x90

 

깃허브에서 디폴트 브랜치명이 master라 main으로 바꿨다.

예전에는 master라고 다들 썼는데 master slave라는 표현이 인권 문제 쪽 이슈 때문에

표현 자체가 좀 그렇다고 해서 깃허브에서도 main으로 쓸 것을 권유한다고 들었다. 그래서 겸사겸사 깃허브에서 브랜치명을 바꿨는데 깃배쉬에서는 여전히 master로 되어있어서 새로운 브랜치명으로 master로 만들어져서 들어가는 것 같았다.

그래서 깃배쉬에서의 master를 main으로 바꾸었다

 

1.브랜치 목록 확인

git branch

 

아래처럼 전체 브랜치 리스트를 볼 수 있다

 

2.브랜치 이름 변경

git branch -m 현재브랜치명 변경될이름의브랜치명

 

 

 

 

 

 

728x90
반응형
728x90

 

Merge하다  해당 메시지와 함께 아래의 화면이 나올 경우

Please enter a commit message to explain why this merge is necessary,

especially if it merges an updated upstream into a topic branch.

일단 이는 깃 에러 메시지가 아니라고 한다. 깃이 사용하는 디폴트값의 에디터라고 하며

해결방법은

  1. press "i" (i for insert)
  2. write your merge message
  3. press "esc" (escape)
  4. write ":wq" (write & quit)

이렇게 하여 빠져나왔다

 

출처

https://stackoverflow.com/questions/19085807/please-enter-a-commit-message-to-explain-why-this-merge-is-necessary-especially

 

728x90
반응형
728x90

 

깃허브 브랜치(branch) 생성 & 변경 

깃허브 브랜치(branch) 생성하고 생성한 브랜치로 변경해보기

 

git help 누르면 각종 명령어와 도움말들을 얻을 수 있다

 

1.브랜치 생성

git branch 브랜치명

create라는 이름을 가진 브랜치를 master 브랜치에 세팅했다고 한다

 

 

2.브랜치 변경

create라는 이름을 가진 branch에서 master 브랜치로 옮겨갔다

빨간줄을 보면 커맨드 입력 후 create -> master로 바뀐 것을 볼 수 있다

명령어는 git switch 브랜치명

 

 

 

 

728x90
반응형

+ Recent posts