현재 나의 문제 상황:
github remote 에 내 데이터베이스 비밀번호가 올라가 있다.
내가 한 액션:
1. 로컬에서 ormconfig.js 파일 생성, gitignore 에 ormconfig.js를 추가한 뒤
2. git add, git commit, push
3. 깃허브 브랜치를 가보니, ormconfig.js가 업로드 되어 있고, 이상하게도 gitignore에는 내가 올라가지 말라고 해놓은 ormconfig.js가 적혀 있었다.
4. 그래서 나는 일단 깃허브에 있는 ormconfig.js 를 삭제 했다.
원격에는 비밀번호가 있는 해당 파일이 없으니 괜찮은건데,
commit history 내역에 가면
이전과 commit 후를 비교하는 내역에서 남아 있었다.
그 commit을 지우는 방법이 없을까? 하고
reset- hard 를 로컬에서 해주었다.
(이미 부트캠프에서 프로젝트를 통해 해당 경험을 한 적이 있어서 ㅎ env 파일을 올렸었다 )
reset 과 rebase는 다르다!
5. reset --hard
캐시 삭제를 하고
git log 로
해당 commit으로 reset 할 넘버를 복사해서, reset --hard!
그리고 나서, 해당 commit으로 돌아갔으니,
이제 이 로컬 그대로 원격에 올리면 되겠지 하고 push를 했다
그런데, 지금 push하려는 Remote(깃허브)가
내 로컬보다 앞서 있으니, pull 받으라는 문구가 떴다.
(----> 나중에 알았는데, reset --hard 하고 나면, remote가 앞서 있을 수 밖에 없기 때문에, 강제 Push 를 해야 한다.
설명하자면, remote 에는 1,2,3 이 올라가있는 걸, 로컬에는 1 까지 있는데,
remote가 앞서 있어 라고 하는 것을,
local에서 강제 푸쉬로 remote이 1이 되도록 만드는 것! )
그래서 나는 pull 하라는대로 pull을 했고...
6. pull
local은 다시 예전으로 돌아왔고,
remote도 새로고침해도 commit history에 변화가 없었다.
Test를 통한 해결방법!
브랜치를 하나 만들어서, 이 방법으로 되는지 test 해보고, 되면 이전 다른 브랜치 삭제 해도 되고,
dev에 가면 초기세팅의 일부만 있고,
commit 내역도 3개뿐이고,
위의 개인정보 포함된 commit이 없는 거처럼,
dev에서 branch를 새로 파서 test 를 해보자
1. 일단 dev로 갔다. 새로운 브랜치를 파기 위해..
test라는 새로 브랜치를 팠고,
조심해야 할 것이,
branch에서 branch를 파면 안 된다. dev/main으로 가서 해야 한다.
2. feature/initialSetting에 있는 내역(코드 + commit) 을 가져오기 위해
Merge!
그래서 git log를 해보면, commit 내역도
feature/initialSetting과 동일하게 가져와진다.
3. 자, 이제 여기서 reset을 하자
git log로 해당 넘버를 복붙한 뒤
4. 강제 push
git push -f -u origin feature/initialSetting
로 강제(force) Push를 한다.
개인 레포이면 괜찮은데,
함께 쓰는 레포일 경우, 강제 push는 최후에
5. 그리고 나서, 원격의 feature/test
branch commit history 를 가보면,
사라져있다.
(ormconfig.js를 올리기 전으로, reset이 되어 있다)
자, 이제는 개인정보가 들어간 commit 내역 원격에서 삭제는 했고,.
이제는, ormconfig.js가 local에는 있으나, remote에 올라지 않도록 하는 것을 test 해봐야 한다.
아까 내가 했을 때 왜 꼬였냐면,
여기에서 확인을 해줘야 한다.
로컬에서
.gitignore 파일에 내용 수정을 했을 때,
저장을 하면,
저기에 저렇게 commit할 내역 list 에 해당 파일이 뜬다.
CASE1
그럼, 로컬에서
ormconfig.js 파일 작성을 하고, .gitignore에서 ormconfig.js 해당 줄을 빼면,
command + s로 저장을 하면,
commit 할 list에 'ormconfig.js'가 뜬다. (원격에 ormconfig.js가 올라갈 거라고)
CASE2
근데, .gitignore에 ormconfig.js 를 올리지 말라고 적어두면,
ormconfig.js 파일을 작성했더라도,
commit 할 list에 'ormconfig.js'가 없다. (원격에 ormconfig.js 올리지 말라고 .gitignore에 올렸기에)
즉, 내가 깃허브에 push 하기 전에,
올라가서는 안 될 파일이 올라갈지 말지
위에서 미리 확인해볼 수 있다는 것이다.
이후 git add, commit, push를 원래대로 한다.
remote에서 확인해본다.
remote에 내가 작성한
1) ormconfig.js는 없고
2) gitignore에도 ormconfig.js 가 잘 적혀있다
끝 !
'Wecode -기업협업 인턴 (부트캠프) > 기업협업 독학, 공부' 카테고리의 다른 글
쿼리 빌더 Query Builder 왜, 언제, 어떻게 쓰는가 (0) | 2023.11.08 |
---|---|
postgre docker (0) | 2023.11.08 |
파이썬 (0) | 2023.11.08 |
import { Inject, Injectable } from '@nestjs/common' 에서 inject 와 injectable이 뭐야 (0) | 2023.11.07 |
데이터를 매핑해서 redirect하는게 뭐니 (0) | 2023.11.07 |