no image
[Git] 강제 Pull로 내 로컬 커밋내역 덮어 씌우기
원격에 있는 형상과 커밋 로그를 내 로컬에 그냥 덮어 씌워버리고 싶을 때가 있다. 그러한 목적으로 현재 내 커밋 로그에 원격 커밋 로그를 그냥 Pull 하면 로그가 뒤죽박죽이 되거나 충돌이 나게 될텐데 그냥 원격에 있는거 Ctrl+C and Ctrl+V 하려면 어떻게 해야할까 바로 원격을 Clone 받았을 때로 돌아가면 된다.   1. git ref log를 입력해서 Clone 시점을 찾는다.   2. git reset --hard를 입력해서 해당 시점으로 돌아간다.reset이 완료되면 내가 수정하던 소스코드도 Clone 받던 시점으로 돌아가게 될 것이다.   3. Pull을 마저 진행한다.
2024.07.19
Git
[Git] 자주 사용하는 명령어들
1. git clonegit clone https://:@특정 깃허브 리포지토리를 연결함과 동시에 메인 브랜치 커밋 내역들을 로컬의 커밋내역으로 병합한다.1. git remote add origin : 해당 주소를 원격 저장소로 연결2. git pull origin main: 원격 저장소의 메인 브랜치만 다운로드 하여 커밋내역을 병합한다.위 2가지가 합쳐진 명령어임 2. git pullgit pull origin 연결된 원격 저장소의 특정 브랜치의 커밋 내역들을 로컬에 현재 접속되어 있는 브랜치에 병합한다.1. git fetch origin: 원격 저장소의 모든 브랜치들을 다운 받는다.2. git merge origin/: 다운받은 원격 저장소의 메인 브랜치를 병합한다.                   ..
2024.02.24
Git
728x90

원격에 있는 형상과 커밋 로그를 내 로컬에 그냥 덮어 씌워버리고 싶을 때가 있다.

 

그러한 목적으로 현재 내 커밋 로그에 원격 커밋 로그를 그냥 Pull 하면 로그가 뒤죽박죽이 되거나 충돌이 나게 될텐데

git pull 진행 시 오류 발생

 

그냥 원격에 있는거 Ctrl+C and Ctrl+V 하려면 어떻게 해야할까

 

바로 원격을 Clone 받았을 때로 돌아가면 된다.

 

 

 

1. git ref log를 입력해서 Clone 시점을 찾는다.


git reflog

 

 

 

2. git reset --hard를 입력해서 해당 시점으로 돌아간다.


git reset --hard

  • reset이 완료되면 내가 수정하던 소스코드도 Clone 받던 시점으로 돌아가게 될 것이다.

 

 

 

3. Pull을 마저 진행한다.


git pull origin main

 

728x90

'Git' 카테고리의 다른 글

[Git] 자주 사용하는 명령어들  (1) 2024.02.24

[Git] 자주 사용하는 명령어들

태이니즘
|2024. 2. 24. 20:16
728x90

1. git clone

git clone https://<본인계정 이름>:<토큰 값>@<github 저장소 주소>
  • 특정 깃허브 리포지토리를 연결함과 동시에 메인 브랜치 커밋 내역들을 로컬의 커밋내역으로 병합한다.
  • 1. git remote add origin <github 주소>: 해당 주소를 원격 저장소로 연결
  • 2. git pull origin main: 원격 저장소의 메인 브랜치만 다운로드 하여 커밋내역을 병합한다.
  • 위 2가지가 합쳐진 명령어임

 

2. git pull

git pull origin <브랜치 이름>
  • 연결된 원격 저장소의 특정 브랜치의 커밋 내역들을 로컬에 현재 접속되어 있는 브랜치에 병합한다.
  • 1. git fetch origin: 원격 저장소의 모든 브랜치들을 다운 받는다.
  • 2. git merge origin/<브랜치 이름>: 다운받은 원격 저장소의 메인 브랜치를 병합한다.                                                 
  • 위 2가지가 합쳐진 명령어임

 

3. git checkout 

git checkout -b <브랜치 이름>
  • 특정 브랜치를 생성하면서 해당 브랜치로 이동한다.

 

4. git push

git push origin <브랜치 이름>
  • 원격 저장소의 특정 브랜치에 현재 로컬에서 접속되어 있는 브랜치의 커밋 내역을 병합한다.
  • 원격 저장소에 해당 브랜치가 없으면 자동으로 생성된다.
git push -f <브랜치 이름>
  • 현재 접속되어 있는 로컬 브랜치를 강제로 push 한다.
  • git push를 일반적으로 입력 할 때 오류가 생기는 부분이 있는데, 로컬에서 어떤 작업을 새로 했다면 그 새로 작업을 하기전의 커밋 내역들이 원격 저장소의 브랜치의 커밋 내역들과 동일해야 한다.
  • 이 조건이 충족이 되어야 push를 하면 Fast-Forward Merge나 3-Way Merge를 할텐데 이게 안되면 아예 커밋 시작점이 달라져 버리기 때문에 허용되지 않는다.
  • 이럴 경우 커밋 내역을 그냥 덮어씌어 버려야 하는데 이 때 git push -f 명령어를 사용한다.

 

5. git rebase

git rabase -i HEAD~<현재 HEAD를 포함하여 수정하고 싶은 커밋 로그의 갯수>
  • 특정 커밋 로그의 범위를 압축하여 원하지 않는 커밋 로그를 삭제하는 명령어.
  • ex) 1. 로그인 기능 만들다 잠와서 집감 - 2. 다음날 로그인 기능 만들다 화장실감 - 3. 로그인 기능 완료(HEAD)
    이 3개의 로그인 작업에 대한 커밋 로그가 있을 때 1번, 2번 로그가 마음에 들지 않을 때
    git rebase -i HEAD~3을 입력한 후 에디터에서 1. pick - 2.squash - 3.squash 수정

 

6. git reset

git reset --hard <돌아가고 싶은 지점의 해시 인덱스 번호>
  • git reflog 를 입력하면 내가 했던 모든 작업들, 예를 들면 브랜치 이동, 커밋 등의 로그들이 남는데 해당 특정 부분으로 시간을 돌리고 싶을 때 사용한다.
  • git reflog 출력 결과에 나오는 해시 인덱스를 입력하면 그곳으로 돌아갈 수 있다.
  • reset도 soft, hard 등 다양하지만 보통 hard를 많이 사용한다. 위험하지만 내가 뭔가 잘못한게 있어 돌아가고 싶은 확신이 있을 때 사용
728x90

'Git' 카테고리의 다른 글

[Git] 강제 Pull로 내 로컬 커밋내역 덮어 씌우기  (0) 2024.07.19