1. 특정 파일만 머지하기

- 가져올 파일이 있는 브랜치 : branchB

git checkout -p branchB -- 머지할 파일 경로

※ 이 기능은 머지가 아니라 패치이므로 현재 브랜치의 수정 내역과는 관계 없이 해당 파일의 내용으로 변경된다

 

 

2. 특정 파일만 제외하고 나머지 머지하기

- 현재 작업중인 브랜치 : branchA

- 가져올 파일이 있는 브랜치 : branchB

git merge --no-commit --no-ff branchB -X theirs
git reset HEAD 제외할 파일
git clean -fd
git commit

 

 

 

 

 

728x90

git clone시 master만 가져오게 되는데, 다른 브랜치의 프로젝트를 가져오는 방법이다.

 

git remote update
git checkout -t origin/[가져올브랜치명]

 

728x90

여러 작업자와 각 로컬 브랜치를 따서 작업하고 master/stagin/dev 인 브랜치에 최종 소스 커밋을 하게 되는데, 

내가 작업중인 브랜치는 master/stagin/dev과 다르게 최신화나 커밋이 더뎌 push를 하거나, 다른브랜치로 checkout하게 되면 에러가 발생하게 된다.

 

이거를 시도 하다가 작업한거 다 날려보고.. 뻘짓을 오지게 했다.

 

방법

1. 최신화 되어있는 브랜치로 넘어오기

git checkout [base브랜치]    -> 항상 최신화 되어있는 브랜치로 넘어가기
git fetch                           -> 현재 브랜치에서 최신화 하기  
git pull origin [base브랜치]   -> FETCH_HEAD 에 [base브랜치]명으로 담기 

 

2. 적용할 대상 브랜치로 넘어가기

git checkout [적용할브랜치]            -> 최신화할 브랜치로 넘어가기
git stash                                     -> [적용할브랜치]에서 현재 작업한 내용 저장
git reset --hard origin/[base브랜치]   -> [base브랜치] 상태로 덮기
git stash apply                              -> stash로 저장된 [적용할브랜치]의 내용을 apply로 머지
git commit -am "stash 목록저장용"    -> 여러사람이 작업하다보니 한파일에 겹칠수도 있어 진행

- git reset --hard origin/브랜치 이거슨.. 필히 조심해야한다.. 

  앞서 git stash / git stash save 를 하지 않은채 하게 된다면.. 내가 작업한 내용들 다 날리게 되는 끔찍한 상황이.......

 

- git stash applygit stash pop 을 써도 되지않나 해서 사용해봤는데.. 겹치는 부분은 기존꺼랑 새로운거랑 둘다 날라가버리거나 기존거만 남거나 해서 안전하게 apply로 머지할 내용 확인하고 머지하는게 나은거 같다.

 

- git commit -am "stash 목록저장용"를 하지 않고 git pull을 해보면,

error: Pulling is not possible because you have unmerged files. 

에러를 뱉어내는데, git commit -am를 진행하고 다시 git pull을 해보면 정상 처리 된다.

 

 

3. 적용할 대상 브랜치에서 작업한거 올리기

git add .
git commit -m "작업내용"
git push

 

 

 

 

728x90

로컬 과 원격이 같은 파일을 수정했을 경우 나오는 에러이다.

브랜치를 따로 파서 작업했어야 하지만, 그러지 못할경우에 많이 봐왔다.

 

error: Pulling is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.

 

1. 해결방법

git status 
git commit -am '커밋내용'

git status 

.......
Unmerged paths:
    (use "git restore --staged <file>..." to unstage)
    (use "git add <file>..." to mark resolution)
           both modified:   파일URL....
           both modified:   파일URL....
.......

위와같이 파일 상태를 확인 할수 있는데, 정상적으로 머지를 못한 파일들이 Unmerged paths 에 나오게 된다.

Auto merge를 못한 파일을 찾아 수정하자

 

git commit -am '커밋내용'   ( = git commit --amend )

최근 커밋한 내용에 추가 하는 명령어를 사용하여 마무리!

 

728x90

그 전까지 개인깃허브 아이디를 이용하여 회사 업무를 했는데, 개인용과 업무용으로 분리 하고 싶어졌다.

새 프로젝트부터 업무용 아이디를 공유해서 작업하려고 git clone를 하려 하는데 에러가 발생했다.

 

PS C:\Users\mj\mjwork\프로젝트> git clone https://gitlab.com/프로젝트/프로젝트_뎁스
remote: The project you were looking for could not be found or you don't have permission to view it.
fatal: repository 'https://gitlab.com/프로젝트/프로젝트_뎁스.git' not found

 

기존 깃 아이디가 충돌 되서 그런가 해서 해당 프로젝트 사용할 폴더에서만

git config user.name
git config user.email 

새로 정보 등록해주었지만, 제대로 처리 되지 않고 여전히 에러를 뱉어냈다.

 

해결방법

1. 오리진을 재설정하기

git remote set-url origin https://본인깃랩아이디@gitlab.com/프로젝트/프로젝트_뎁스.git

2. 깃 시작하기

git init

이렇게 진행했더니 글로벌 등록했던 개인용이 아닌 재설정한 리모트의 권한이 있는 아이디와 비번을 확인 액션이 생겨서 정상 처리 되나보다 했다. 

 

원래는 1~2까지만 하면 프로젝트 생성엔 문제가 없다.
하지만 나란인간은 새 프로젝트에 새로운 이메일주소로 초대 받고, 그에 해당하는 유저정보...비밀번호를 등록하지 않아 아래 에러를 뱉어 낸것으로 확인됐다.. 해당프로젝트 깃랩에 비밀번호 설정하고 1~2번 시도하니까 깔끔하게 완료....
ㅎ ㅏ..

 

하지만, 새로운 에러를 뱉어냈는데,

PS C:\Users\mj\mjwork\mobilink> git clone https://본인깃랩아이디@gitlab.com/프로젝트/프로젝트_뎁스.git
Cloning into '프로젝트_뎁스'...
remote: HTTP Basic: Access denied
fatal: Authentication failed for 'https://본인깃랩아이디@gitlab.com/프로젝트/프로젝트_뎁스.git/'

 

결국, 자동로그인이 문제였던거 같다.

관리자 권한으로 cmd를 실행하여 아래 코드를 입력하고

유저정보를 재등록 하였다. (글로벌은 사용하지 않았다. 해당프로젝트에서만 이 아이디를 사용할거니깐!)

 

3. 자동로그인 풀기

git config --system --unset credential.helper

 

4. 유저정보 재등록

git config user.name
git config user.email 

 

5. 다시 clone

git clone https://gitlab.com/프로젝트/프로젝트_뎁스.git

 

이러면 정상 처리 오나료!!

remote: Enumerating objects: 11, done.
remote: Counting objects: 100% (11/11), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 11 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (11/11), done.

728x90

깃에서 리액트 프로젝트를 다운받고 npm start를 했을때 자주본 에러이다.

npm/node의 버전이 package.json에 설치된 버전과 안맞아서 그런줄알고 다시 설치해보고 삭제해보고 업데이트 해보고 이걸로 엄청 뻘짓 했는데 의외로 간단한 방법이 있었다.

 

해결방법

1. npm 캐시 삭제

npm cache clean -f   

 

2. node_modules, package-lock.json 삭제

방법1. 명령어로 삭제 

rm -rf node_modules   -> 이거슨 window에서 작동하지 않은듯 하다.

아래 명령어중 하나를 사용하면 된다.
rm -r node_modules
rm node_modules
rmdir node_modules /s /q

 

방법2. 폴더에서 -> 휴지통으로 

 

3. 재설치

npm install

 

728x90

Git 사용의 미숙으로 인한 로컬에 강제로 프로젝트를 덮어 써야 하는 상황이 오기도 한다. 

작업한 내용을 다 날리기 싫어서 이거저거 명령어 써봤다가

 

돌아올수 없는 강을 건너면.....

 

 

 

 

 

 

 

 

내가 쓰는.. 치트키 같은것이다... 최근버전으로 강제 덮어쓰기...

 

1. 강제 덮어쓰기

git fetch --all
git reset --hard origin/master

 

2. 기존 로컬 커밋 유지하고 브랜치 따로 파서 덮기

git checkout -b <새 브랜치 명>
git fetch --all
git reset --hard origin/master
728x90
You have not concluded your merge (MERGE_HEAD exists)
Please, commit your changes before you can merge

pull을 했는데 위와 같은 오류가 떠서 처음엔 head에 이력이 남아서 머지가 충돌 났다고 생각하여 캐시를 지우고 head를 리셋 했다.

git clean -d -f .  /  git clean -d -f ""
git reset --hard HEAD

 

그리고 다시 pull을 진행했는데도 에러..

 

해결방법

git merge --abort
--충돌 수정 --
git pull
git status
git commit -am "커밋 내용"
728x90
The following untracked working tree files would be overwritten by merge...

대부분 현재 수정중인 파일을 다른 작업자가 이미 커밋한 상태일때 git pull을 하면 발생하는 에러코드이다.

 

처리 방법

git add .
git stash
git pull  또는  git pull upstream master
git stash apply  또는  git stash pop  

git stash는 동기화 먼저 진행하고 add 로 내가 수정한 파일은 head로 임시 저장된 상태

git pull을 진행해 최근버전으로 프로젝트 가져오고,

git stash apply를 해서 내가수정한 파일과 합치거나, git stash pop로 머지를 강제 진행하고 삭제

 

 

728x90

+ Recent posts