git 브랜치의 수정 된 파일이 다른 지점으로 쏟아져 나옵니다.
-
05-07-2019 - |
문제
나는 마스터 브랜치와 다른 주제 지점이있는 git 저장소에서 작업하고 있습니다. 주제 지점으로 전환하고 파일을 수정했습니다. 이제 마스터 브랜치로 전환하면 동일한 파일이 수정 된 것으로 표시됩니다.
예를 들어:
Git-Build Branch의 GIT 상태 :
# On branch git-build
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: cvsup_current
#
마스터 브랜치로 전환하십시오
[root@redbull builder_scripts (git-build)]# git co master
M builder_scripts/cvsup_current
Switched to branch "master"
마스터 브랜치의 git 상태
[root@redbull builder_scripts (master)]# git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: cvsup_current
#
파일이 Git-Build Branch에서 수정 되었더라도 마스터 브랜치에서 수정 된 이유는 무엇입니까?
내 이해는 가지가 서로 독립적이며 한 가지에서 다른 지점으로 바뀌면 변경 사항은 한 가지에서 다른 지점으로 "유출"되지 않습니다. 그래서 나는 분명히 여기서 몇 가지를 놓치고 있습니다.
누구든지 단서 스틱이 있습니까?
해결책
이것이 Git의 기본 동작입니다.
당신이 사용할 수있는 -에프 원한다면 "청소 체크 아웃"을하기 위해 체크 아웃하는 플래그.
다른 팁
파일이 Git-Build Branch에서 수정 되었더라도 마스터 브랜치에서 수정 된 이유는 무엇입니까?
기억해야 할 열쇠는 파일 이었다는 것입니다 ~ 아니다 Git-Build Branch에서 수정되었습니다. 작업 사본에서만 수정되었습니다.
당신이 커밋 할 때만, 당신이 체크 아웃 한 지점으로 변경 한 것입니다.
다른 사람에서 작업하기 위해 출발하는 동안 한 가지에 변경 사항을 일시적으로 저장하려면 git stash
명령. 그것은 git을 사용하는 놀라운 작은 멍청이 중 하나입니다. 예제 워크 플로 :
git stash #work saved
git checkout master
#edit files
git commit
git checkout git-build
git stash apply #restore earlier work
git stash
변경 스택을 저장하므로 여러 체크 포인트를 안전하게 저장할 수 있습니다. 당신은 그들에게 이름/설명을 줄 수도 있습니다. 전체 사용 정보 여기.
수정 된 파일은 추가 할 때까지 저장소에 넣지 않습니다. 그리고 그들을 커밋하십시오. 주제 지점으로 다시 전환하여 파일을 커밋하면 마스터 브랜치에 표시되지 않습니다.
- 그것은 git 브랜치가 서로 의존하는 것과 같지 않지만 각 지점에 대해 별도로 완전한 코드베이스가 없습니다.
- 각 커밋에 대해 GIT는 변경 사항에 대한 포인터를 포함하는 객체를 저장합니다. 따라서 각 지점은 자체 최신 커밋을 가리키고 현재 당신이있는 지점을 가리 킵니다.
- 분기를 전환하면 헤드 포인터가 지점의 특정 커밋을 가리 킵니다. 따라서 수정 된 파일이 있으면 기본 동작은 파일을 복사하는 것입니다.
이 문제를 극복하기 위해 다음 작업을 수행 할 수 있습니다.
- 사용
-f
변경 사항을 무시하는 옵션.
변경 사항을 저장하려면 :
- 동일한 분기에서 로컬로 변경 사항을 커밋 한 다음 분기를 전환하십시오.
- 사용
git stash
, 지점을 바꾸고, 작업을하고, 원래 지점으로 다시 전환하고git stash apply
.