"변경 내용을 커밋하거나 병합하기 전에 저장하십시오"라는 git을 해결하려면 어떻게 해야 합니까?
로컬 머신에서 업데이트를 하고 리모트저장소로 푸시하여 변경 내용을 서버로 가져오려고 하면 메시지가 나타납니다.
error: Your local changes to the following files would be overwritten by merge:
wp-content/w3tc-config/master.php
Please, commit your changes or stash them before you can merge.
그래서 뛰어서
git checkout -- wp-content/w3tc-config/master.php
이치노 그럴 거예요.w3tc
설정로컬 복사본과 리모트 복사본 중 어느 것이 서버에 저장되든 상관없습니다(리모트 복사본이 최선이라고 생각합니다). 나머지 변경사항(플러그인 업데이트)을 병합할 수 있으면 됩니다.
좋은 생각 있어요?
로컬 수정사항과 병합할 수 없습니다.Git은 잠재적으로 중요한 변경 사항을 손실하지 않도록 보호합니다.
다음의 3가지 옵션이 있습니다.
변경을 커밋하다
git commit -m "My message"
숨겨놔.
스택은 스택 역할을 하며, 여기서 변경을 푸시할 수 있으며, 변경 내용을 역순으로 팝합니다.
저장하려면 다음을 입력합니다.
git stash
Marge를 수행하고 stash를 꺼냅니다.
git stash pop
로컬 변경 파기
를 사용합니다.
git reset --hard
★★★★★★★★★★★★★★★★★」git checkout -t -f remote/branch
또는: 특정 파일에 대한 로컬 변경 내용을 삭제합니다.
를 사용합니다.
git checkout filename
git stash
git pull <remote name> <remote branch name> (or) switch branch
git stash apply --index
첫 번째 명령어는 변경 내용을 일시적으로 저장하여 작업 디렉토리에서 제거합니다.
두 번째 명령어는 브런치를 바꿉니다.
합니다([ ] the 、 [ ] 、 [ ] 。--index
옵션은 스테이징된 파일이 스테이징된 상태로 유지되도록 하는 데 유용합니다).
다음의 몇개의 방법을 시험할 수 있습니다.
기본을 바꾸다
간단한 변경의 경우 변경 내용을 끌어당기는 동안 그 위에 기본 설정을 다시 시도하십시오.
git pull origin master -r
따라서 취득 후 현재의 브랜치를 업스트림브런치 위에 적용합니다.
은 '하다, 하다, '에 해당합니다.checkout master
,fetch
★★★★★★★★★★★★★★★★★」rebase origin/master
git 명령어
이는 잠재적으로 위험한 작동 모드입니다.이미 이력을 공개했을 때는 좋지 않은 징조가 됩니다.주의 깊게 읽지 않으면 이 옵션을 사용하지 마십시오.
체크 아웃
로컬 변경에 관심이 없는 경우 다른 지점의 임시(강제적으로)로 전환했다가 다시 전환할 수 있습니다.
git checkout origin/master -f
git checkout master -f
리셋
로컬 변경에 관심이 없는 경우 HEAD(원래 상태)로 리셋해 보십시오.
git reset HEAD --hard
되지 파일git)에이 있을 수 ..gitattributes
) 。따라서 명령어를 커밋하는 것이 좋습니다. 사용 중인 권한을 사용하지 않도록 해야 합니다.filemode
configgit Configuration으로 합니다.
관련:로컬 파일을 강제로 덮어쓰려면 어떻게 해야 합니까?
이거 드셔보세요
git stash save ""
다시 당겨봐
사용방법:
git reset --hard
다음에, 다음과 같이 입력합니다.
git 풀 오리진 마스터
그래서 제가 마주친 상황은 다음과 같습니다.
오류: wp-content/w3tc-config/master 파일에 대한 로컬 변경은 병합에 의해 덮어씁니다.php 변경 내용을 커밋하거나 저장하여 병합하십시오.
다만, 그 직전에는 리모트였습니다.실제로 다음과 같습니다.
remote: 오류:다음 파일에 대한 로컬 변경은 병합에 의해 덮어쓰게 됩니다.some/file.ext 변경 내용을 커밋하거나 저장하여 병합하십시오.
리모트 서버 저장소의 이동 변화로 인해 git 포스트 수신 훅이 실행되어 망하기 시작했는데, 이론상으로는 만지지 말았어야 했습니다.
그 결과, 수신 후크를 추적하고, 이것을 발견하면, 서버의 리모트 저장소에 액세스 할 필요가 있었습니다(로컬 저장소에는 없었습니다만, 실제로는 일치하는 것, 변경 사항 없음, 커밋할 것, 최신 정보 등). 그 에서 '아예'를 .git checkout -- some/file.ext
로컬 저장소와 리모트 저장소가 실제로 일치하여 작업을 계속하고 도입할 수 있었습니다.이 상황이 어떻게 발생했는지는 정확히 알 수 없지만, 수십 명의 개발자와 IT 변화가 이와 관련이 있을 수 있습니다.
경고: 추적되지 않은 파일이 삭제되므로 이 질문에 대한 좋은 답변은 아닙니다.
저 같은 경우에는 파일을 보관하고 싶지 않았기 때문에 이 방법이 효과가 있었습니다.
Git 2.11 이후:
git clean -d -fx .
이전 Git:
git clean -d -fx ""
레퍼런스: http://www.kernel.org/pub/software/scm/git/docs/git-clean.html
-x는 무시된 파일뿐만 아니라 get에 알려지지 않은 파일도 제거됨을 의미합니다.
d는 추적되지 않은 파일 외에 추적되지 않은 디렉토리를 삭제하는 것을 의미합니다.
강제로 실행하려면 -f가 필요합니다.
이 문제를 해결하는 동안 새로 만든 파일을 기록하려면:
파일을 새로 작성한 경우 로컬 변경 패치를 만들고 원격 Marge를 풀인한 후 로컬 패치를 적용할 수 있습니다.다음 절차에 따라 원격 Marge가 완료된 후 로컬 패치를 적용할 수 있습니다.
- 로컬 변경을 준비합니다.(커밋하지 마세요).새로 생성된 파일의 패치를 작성하려면 스테이징이 필요합니다(아직 추적되지 않음).
git add .
- 기록할 패치 생성
git diff --cached > mypatch.patch
- 로컬 변경 내용을 삭제하고 새 로컬 파일 삭제
git reset --hard
- 변경 내용 가져오기
git pull
- 패치 적용
git apply mypatch.patch
Git은 변경 사항을 병합하고 병합되지 않은 변경 사항에 대해 .rej 파일을 만듭니다.
Anu의 제안대로 패치 적용에 문제가 있는 경우 다음을 시도해 보십시오.
git apply --reject --whitespace=fix mypatch.patch
이 답변 git: 패치는 이 문제에 대한 자세한 설명을 적용하지 않습니다.
기능에 관한 계속적인 작업을 즐기고, 완료되면 로컬 변경을 커밋합니다.
이것으로 오류가 해결되었습니다.
A 지점입니다.
git stash
마스터 브랜치로 이동:
git checkout master
git pull*
지점 "A"로 되돌아가다
git checkout A
git stash pop*
저는 이 방법이 효과가 있었습니다.
git reset --hard
그리고 나서.
git pull origin <*current branch>
그 후
git checkout <*branch>
꺼내기 전에 커밋을 요청합니다.
- 저장하다
- git pull origin << branchname >>
필요한 경우:
- git stash 적용
를 사용하여 합니다.git reset --hard
는 ★★★★★★★★★★★★★★★★★★★★★★★★」git reset --hard
일
커밋할 것이 없었기 때문에 커밋은 선택사항이 아니었다.
저장할 것이 없었기 때문에 저장할 수 없었습니다.
에 looks in in in in in in in in in in in in in in in in in in in in in in in in in in in in in파일의 것 ..git/info/exclude
있다git update-index --assume-unchanged <file>
파일을 몇 개 편집했습니다.
reset을 사용하기 전에 언제든지 돌아갈 수 있도록 revert를 사용하는 것을 고려하십시오.
https://www.pixelstech.net/article/1549115148-git-reset-vs-git-revert
요청 시
출처 : https://www.pixelstech.net/article/1549115148-git-reset-vs-git-revert
git reset vs git revert sonic0002 2019-02-02 08:26:39
git 등의 버전 관리 시스템을 사용하여 코드를 유지관리할 경우 버그나 임시 코드 복귀로 인해 잘못된 커밋을 롤백해야 하는 경우가 있습니다.이 경우, 신참 개발자는 다른 사람에게 영향을 주지 않고 변경을 롤백하기 위해 무엇을 해야 할지 몰라 매우 긴장하게 되지만, 베테랑 개발자에게는 이것이 일상 업무이며, 다른 방법을 보여줄 수 있습니다.이 투고에서는, 개발자가 자주 사용하는 2개의 주요한 것을 소개합니다.
- git 리셋
- git 복귀
그 차이점 및 대응하는 사용 사례는 무엇입니까?아래에 자세히 설명하겠습니다.git reset 아래에 커밋이 몇 개 없다고 가정합니다.
커밋 A와 B는 작업 커밋이지만 커밋 C와 D는 잘못된 커밋입니다.다음으로 커밋B로 롤백하여 커밋C와 D를 드롭합니다.현재 HEAD는 D 5lk4er 커밋을 가리키고 있습니다.우리가 원하는 것을 달성하려면 B a0fvf8 커밋을 HEAD로 가리키기만 하면 됩니다.git reset 명령어를 사용하기 쉽다.
git reset --hard a0fvf8
위의 명령을 실행한 후 HEAD는 커밋 B를 가리킵니다.
그러나 현재 리모트 오리진에는 D를 커밋하기 위한 HEAD 포인트가 남아 있습니다.우리가 직접 git push를 사용하여 변경을 푸시하는 경우 리모트 repo를 갱신하지 않습니다.변경을 강제하기 위해 -f 옵션을 추가해야 합니다.
git push -f
이 방법의 단점은 리셋이 완료되면 HEAD 이후의 커밋이 모두 없어지는 것입니다.만약 어느 날 우리가 어떤 커밋이 좋은 것을 먹어서 그것을 지키고 싶어한다는 것을 알게 되면, 이미 늦었다.따라서 많은 기업이 이 방법을 사용하여 변경을 롤백하는 것을 금지하고 있습니다.
git revert git revert는 이전 커밋을 되돌리는 새로운 커밋을 작성하는 것입니다.HEAD는 새로운 복귀 커밋을 가리킵니다.위의 git reset의 예에서는 커밋D를 되돌리고 나서 커밋C를 되돌리는 것만으로 끝납니다.
git revert 5lk4er
git revert 76sdeb
이제 2개의 새로운 커밋 D'와 C'가 생성됩니다.
위의 예에서는 되돌릴 커밋은 2개뿐이므로 하나씩 되돌릴 수 있습니다.하지만 되돌리기 위한 커밋이 많다면?우리는 정말로 범위를 되돌릴 수 있습니다.
git revert OLDER_COMMIT^..NEWER_COMMIT
이 방법으로는 git reset의 단점이 없고, HEAD가 새로 생성된 복귀 커밋을 가리키며, -f 옵션을 사용하지 않고 변경 사항을 직접 리모트로 푸시해도 괜찮습니다.이제 좀 더 어려운 예를 보겠습니다.3개의 커밋이 있지만 나쁜 커밋이 두 번째 커밋이라고 가정합니다.
커밋 B를 롤백하기 위해 git reset을 사용하는 것은 좋지 않습니다.커밋 C는 좋은 커밋이기 때문에 커밋 C를 유지해야 합니다.이것으로 커밋 C와 B를 되돌린 후 체리픽을 사용하여 C를 다시 커밋할 수 있습니다.
위의 설명에서 git reset과 git revert의 가장 큰 차이점은 git reset은 원하는 커밋 후에 모든 변경을 드롭함으로써 브랜치 상태를 이전 상태로 리셋하고 git revert는 새로운 되돌림 커밋을 생성하여 원래 커밋을 유지한다는 것을 알 수 있습니다.기업 환경에서는 git reset 대신 git revert를 사용하는 것이 좋습니다.참고 자료: https://kknews.cc/news/4najez2.html
% git status HEAD disached at 5c 변경은 커밋에 대해 스테이징되지 않음: ("git add ..."를 사용하여 커밋할 내용을 갱신함) (작업 디렉토리의 변경 내용을 파기하기 위해 "git restore ..."를 사용함)
로컬에서 파일 중 하나만 업데이트되고 해당 파일의 변경 사항을 취소하려면 다음 작업을 수행할 수 있습니다.
// Pull latest activities-page.tsx from remote and discard local changes.
git checkout activities-page.tsx
//Pull latest branch
git pull origin master
저 같은 경우에는 Git이 불평하고 있는 파일을 백업하고 삭제하여 커밋하고 나서, 드디어 다른 지점을 체크할 수 있었습니다.
그런 다음 파일을 교체하고 내용을 다시 복사한 후 아무 일도 없었다는 듯이 계속했습니다.
이는 CRLF의 문제로 인해 발생할 수 있습니다.
참조: core를 사용해야 하는 이유를 참조하십시오.autocrlf=참입니까?
이를 통해 풀링 및 강제 업데이트를 수행합니다.
git pull origin master
git checkout origin/master -f
나는 첫 번째 답을 시도했다.git stash
가장 높은 점수를 받았으나 오류 메시지가 여전히 떴고, 이 글은 'Relative Commit'을 저장하는 대신 변경을 커밋하는 것을 발견했습니다.
에러 메세지가 마침내 사라졌습니다.
1:git add .
2:git commit -m "this is an additional commit"
3:git checkout the-other-file-name
효과가 있었어요이 답변이 도움이 되길 바랍니다.:)
Git Extensions를 사용하는 경우 로컬 변경 내용은Working directory
다음과 같이 합니다.
변경이 없는 경우는 서브모듈이 잘못되어 있는 것이 원인일 가능성이 있습니다.따라서 다음과 같이 잠수함 아이콘으로 모든 항목을 확인합니다.
커밋되지 않은 변경을 발견한 경우:
다음 행 선택Working directory
[ Diff ]탭으로 이동하여 연필로 행을 오른쪽 클릭합니다(또는+
또는-
) 아이콘을 클릭하여 [Reset to first commit or commit ]또는 [stash]등의 조작을 선택합니다.
아마
git --rebase --autostash
도움이 될 것이다
나는 비슷한 문제에 직면했다..env
내 NestJS 프로젝트에 파일을 저장해놔.
이 페이지의 어프로치를 포함해 많은 어프로치를 시도했습니다.
'아까부터'의 ..env
클립보드로하고, 「」를 참조해 .git pull
★★★★★★★★★★★★★★★★★★!
했습니다..env
내용을 다시 붙여 넣었습니다.
파일이 여러 개일 경우 일시적으로 git repo 디렉토리 밖으로 이동하고 변경 내용을 풀한 후 다시 이동하기만 하면 됩니다.
파일 중 하나라도 변경한 경우
git add를 클릭합니다.
그럼,
git - m "메시지" 커밋
그런 다음 repo에서 가져오거나 repo로 성공적으로 푸시할 수 있습니다.
언급URL : https://stackoverflow.com/questions/15745045/how-do-i-resolve-git-saying-commit-your-changes-or-stash-them-before-you-can-me
'programing' 카테고리의 다른 글
switch 문을 문자열에 적용할 수 없는 이유는 무엇입니까? (0) | 2023.04.15 |
---|---|
이동 중에도 변수를 유지할 수 있는 방법이 있습니까? (0) | 2023.04.15 |
jQuery가 요청 본문에 유효한 json을 게시합니다. (0) | 2023.04.05 |
네이티브와 안드로이드 대응 (0) | 2023.04.05 |
응답 useReducer 비동기 데이터 가져오기 (0) | 2023.04.05 |