git-브랜치가 1 커밋만큼 '원산지 / 마스터'보다 앞서 있습니다.


107

나는 git의 초보자이고 git에서 일하고 있습니다.

git에 몇 가지 파일을 추가했습니다.

git add <file1>
git add <file2>

검토를 위해 푸시하고 싶었지만 실수로

git commit

그래서 내가 변경 한 파일은 리뷰를 위해 가지 않습니다.
이제 명령을 입력하면 :

git status

그것은 말한다

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)

해당 커밋을 되돌리고 싶고 커밋보다는 검토를 위해 해당 파일을 푸시하고 싶습니다. 누구든지 내가 어떻게 할 수 있는지 알려줄 수 있습니까?



1
코드 리뷰에 무엇을 사용하고 있는지 모르겠습니다. 유엔 커밋 방법의 간단한 질문에 대한 간단한 답변입니다git reset HEAD^
Anonymoose

나는 HEAD를 재설정했다. 내가 푸시하려고 할 때하지만, 그것은 내가 지사는 앞서 1 일까지 원산지 / 마스터입니다 커밋 그것은 나를 말한다 다시 psuh하려고 할 때 나를 file1.py D 말한다

"검토를 위해 해당 파일을 푸시하고 싶습니다"라는 말은 무엇을 의미합니까? 다른 사람들이 당신의 커밋을 보길 원하십니까?
Jake Greene

내 코드는 먼저 검토되고 커밋됩니다. 그래서 먼저 검토를 위해 코드를 푸시하고 싶지만 실수로 커밋했습니다
sam

답변:


128

아직 커밋되지 않은 것은 푸시 할 수 없습니다. 작업 순서는 다음과 같습니다.

  1. 변경하십시오.
  2. git add -커밋을위한 변경 단계
  3. git commit -이것은 단계적 변경을 로컬로 커밋합니다.
  4. git push -이것은 커밋 된 변경 사항을 원격

커밋하지 않고 밀면 아무것도 밀리지 않습니다. 추가하지 않고 커밋하면 아무것도 커밋되지 않습니다. 커밋하지 않고 추가하면 아무 일도 일어나지 않으며 git은 추가 한 변경 사항이 다음 커밋에 대해 고려되어야 함을 기억합니다.

표시되는 메시지 (분기가 1 개의 커밋보다 앞서 있음)는 로컬 저장소에 아직 푸시되지 않은 커밋이 하나 있음을 의미합니다.

다른 말로 : addcommit로컬 작업이다 push, pullfetch조작은 원격 상호 작용할 것이다.

작업하는 곳에 공식 소스 제어 워크 플로가있는 것 같으므로 내부적으로 어떻게 처리해야하는지 문의해야합니다.


4
아 알 겠어. 커밋 후 푸시해야한다는 뜻입니다
sam

4
좋은 설명-질문자가 실제로 커밋을 되돌리고 싶지는 않지만 origin저장소로 푸시하기 전에 사람들이 커밋을 검토하도록 합니다. 또한 git-scm.com/documentation
dbr

1
내 자식 상태가 "당신의 브랜치가 1 커밋만큼 '원산지 / 개발'보다 앞서 있습니다."라고 말하면 파일이 변경된 것을 정확히 어떻게 볼 수 있습니까? 자식은 diff는 무엇이든 할 것 같지 않습니다

때로는 거기에서 일한 다른 사람이 있습니다. 당신의 밀어 넣기 전에 풀 확인
아드리안 P.

67

git reset HEAD^ --soft (변경 사항 저장, 마지막 커밋으로 돌아 가기)

git reset HEAD^ --hard (변경 사항 취소, 마지막 커밋으로 돌아 가기)


3
당근 '^'가있는 HEAD의 의미는 무엇입니까? 나는 그것이 당근 없이도 쓰여지는 것을 보았다.
Mugen

29

변경 사항을 버리고 마지막 커밋 (공유하려는 커밋)으로 되돌리려면 다음을 수행하십시오.

git reset --hard HEAD~

git log모든 변경 사항을 잃게되므로이 항목 ( ) 이 필요한지 절대적으로 확인하는 것이 좋습니다 .

더 안전한 대안은 실행하는 것입니다.

git reset --soft HEAD~ # reset to the last commit
git stash              # stash all the changes in the working tree 
git push               # push changes 
git stash pop          # get your changes back 

21

나는 간단한 실행으로 이것을 해결했습니다.

git pull

더 이상은 없습니다. 이제 다음과 같이 표시됩니다.

# On branch master
nothing to commit, working directory clean

필요하지 않은 브랜치가 2 개 이상 생성되면 문제가 발생할 수 있습니다.
Anil Kumar Arya 2014 년

1
당신은 원격 상태 당신에게 돌아가서 마지막 작업 손실 : D
Gucho 칼슘

13

자식 재설정 HEAD ^

그러면 수정 된 파일이 표시됩니다.

수정 된 파일을 새 분기로 이동할 수 있습니다.

사용하다,

git checkout -b newbranch

git checkout commit -m "files modified"

git push origin newbranch

git checkout master

그러면 깨끗한 브랜치에 있어야하며 변경 사항은 newbranch에 저장되어야합니다. 나중에이 변경 사항을 마스터 브랜치에 병합 할 수 있습니다.


4
git reset HEAD <file1> <file2> ...

다음 커밋에서 지정된 파일 제거

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.