두 가지 프로젝트가 있습니다. 하나는 "공식적인"프로젝트이고 두 번째는 간단한 수정입니다 (일부 파일 추가). 새 지점을 만들고 새 파일을 추가했습니다. 그러나 개발 중에 두 가지에 공통적 인 일부 파일이 변경되었습니다.
이 파일 만 어떻게 커밋합니까?
두 가지 프로젝트가 있습니다. 하나는 "공식적인"프로젝트이고 두 번째는 간단한 수정입니다 (일부 파일 추가). 새 지점을 만들고 새 파일을 추가했습니다. 그러나 개발 중에 두 가지에 공통적 인 일부 파일이 변경되었습니다.
이 파일 만 어떻게 커밋합니까?
답변:
한 지점에 대한 변경 사항을 커밋 한 다음 다른 지점에 변경 사항을 표시하려고한다고 가정합니다. git에서는 분기를 변경할 때 HEAD 위에 변경 사항이 없어야합니다.
다음을 통해 변경된 파일 만 커밋합니다.
git commit [some files]
또는 스테이징 영역이 깨끗하다고 확신 할 수있는 경우
git add [some files] # add [some files] to staging area
git add [some more files] # add [some more files] to staging area
git commit # commit [some files] and [some more files]
커밋을 두 지점에서 모두 사용하려면
git stash # remove all changes from HEAD and save them somewhere else
git checkout <other-project> # change branches
git cherry-pick <commit-id> # pick a commit from ANY branch and apply it to the current
git checkout <first-project> # change to the other branch
git stash pop # restore all changes again
git commit [some files]
를 의미 함 --only
)를 사용해야합니다. (첫 번째 예 git add [some files]
다음은 git commit
)도 있었다 다른 변경은 단계적 커밋한다.
커밋하려는 파일 목록을 가져옵니다.
$ git status
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: file1
modified: file2
modified: file3
modified: file4
준비에 파일 추가
$ git add file1 file2
무엇을하고 있는지 확인하십시오
$ git status
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: file1
modified: file2
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: file3
modified: file4
커밋 메시지로 파일 커밋
$ git commit -m "Fixed files 1 and 2"
실수로 잘못된 파일을 커밋 한 경우
$ git reset --soft HEAD~1
파일을 스테이지 해제하고 다시 시작하려면
$ git reset
Unstaged changes after reset:
M file1
M file2
M file3
M file4
다음과 같이 업데이트 된 파일을 커밋 할 수 있습니다.
git commit file1 file2 file5 -m "commit message"
이 중 일부는 "불완전한"것 같습니다
사람들의 그룹은 따옴표 등을 사용해야하는지 알 수 없습니다.
위치 경로를 보여주는 특정 파일 1 개 추가
git add JobManager/Controllers/APIs/ProfileApiController.cs
커밋 (커밋은 로컬 전용이며 다른 시스템에는 영향을 미치지 않음)
git commit -m "your message"
원격 저장소로 푸시
git push (this is after the commit and this attempts to Merge INTO the remote location you have instructed it to merge into)
다른 답변 은 때때로 당신이하고 싶을 숨길 등을 보여줍니다
다음과 같이 여러 파일을 변경했다고 가정하십시오.
그러나 File1 및 File3의 변경 사항 만 커밋하려고합니다.
이를 수행하는 두 가지 방법이 있습니다.
1. 다음을 사용하여이 두 파일 만 준비하십시오.
git add file1 file2
그런 다음 커밋
git commit -m "your message"
그런 다음
git push
2. 직접 커밋
git commit file1 file3 -m "my message"
그런 다음
git push
실제로 첫 번째 방법은 파일을 정기적으로 수정하고 준비하는 경우-> 대규모 프로젝트, 일반적으로 라이브 프로젝트 인 경우에 유용 합니다.
그러나 파일을 수정하고 준비하지 않으면 직접 커밋-> 소규모 프로젝트를 수행 할 수 있습니다
--only
. 그런 다음 참조 와 동일한 명령 git commit --only file1 --only file3 -m "my message"
이거나 바로 가기를 사용합니다 git commit -o file1 -o file3 -m "my message"
. git-scm.com/docs/git-commit
코드를 많이 변경하지 않으면 간단한 방법입니다.
1. git stash
2. git stash apply
3. remove the files/code you don't want to commit
4. commit the remaining files/code you do want
그런 다음 별도의 커밋 또는 다른 브랜치에서 제거 한 코드 (커밋하지 않은 비트)를 원하면이 브랜치에서 여전히 수행하십시오.
5. git stash apply
6. git stash
5 단계에서 이미 숨김을 적용하고 4 단계에서 원하는 코드를 커밋 한 경우 새로 적용된 숨김에서 diff 및 untracked는 4 단계에서 커밋하기 전에 3 단계에서 제거한 코드입니다.
6 단계는 커밋하지 않은 코드를 숨겨둔 것이므로 변경 사항을 제대로 잃고 싶지 않을 것입니다. 따라서 올바른 분기에서 git stash apply를 적용하고 커밋하여 6 단계의 새 숨김을이 분기 또는 다른 분기에 커밋 할 수 있습니다.
분명히 이것은 하나의 플로우에서 단계를 수행한다고 가정합니다.이 단계의 다른 지점에서 숨김을 설정하면 기본 숨김 이외의 최신 단계를 적용하는 대신 위의 각 단계에 대한 숨김 참조를 기록해야합니다.