나는 master 브랜치를 잡아 당겼다. 로컬 마스터에서 나는 여러 커밋을했다. 이제 마지막 커밋 (이전 커밋이 아닌) 만 푸시합니다. 이것을 어떻게 성취합니까?우리가 리스터 팅하는 동안 커밋을 더 높이거나 낮추어야 하는가?
나는 그것을하는 방법에 대한 좋은 설명을 발견 : How to push only one commit with Git. 더 "추상적"형태로,
git push origin 2dc2b7e393e6b712ef103eaac81050b9693395a4:master
을 또는 : 그래서, 명령이이 같은해야 내가 이해로까지, 그러나
git push <remote name> <commit hash>:<remote branch name>
, 일반적인 경우, 을 것이다은 하나의 커밋 (해당 해시에 의해 주어진)을 푸시하지 않습니다. 대신 지정된 커밋과 지정된 커밋 이전에 완료된 모든 커밋을 푸시합니다.
따라서 하나의 단일 커밋 만 수행하려면 우선 커밋 순서를 변경해야합니다. 즉, 밀어 넣으려는 커밋이 가장 오래된 커밋 (커밋 시퀀스의 첫 번째 커밋) . 방법은 여기에서 설명합니다 : How to reorder commits with Git. 이 설명은 명확하다, 나를 혼란 유일한 것은이 구절이다 : 내 경우
, 나는 불어 넣고 싶었 내 난 단지 밀어 수 있도록 내가 바닥에 내려 프로젝트 파일을 고정 곳 커밋 가장 상단 그 중 하나는 원격 서버에 커밋합니다.
그러나 우리가 일종의 반대를하고 싶지 않은 경우는 아닙니까? "맨 아래로"커밋을 가져 오면 마지막 (가장 최근) 커밋으로 간주되며 푸시 할 때 해시를 사용하면 그 전에 오는 모든 것을 푸시합니다 ("모든 커밋"을 의미 함). .
우리가하고자하는 것은 git rebase -i HEAD~5
을 실행할 때 우리가 보는 파일에 커밋을 올려 놓는 것입니다. 내가 맞습니까?
그러나 내가 밀어 넣은 저장소에서 끌어 오지 않으면 어떻게 될까요? – Roman
내 접근 방식에 문제가 있습니까? – Roman
@Roman 그건 중요하지 않습니다. 'git push' 또는'git pull' ('git fetch' 포함)을 실행할 때 원격 저장소의 URL을 동적으로 지정할 수 있습니다. 'git push HEAD : ','git pull '여기서'branchA'와'branchB'는 같은 이름을 가질 수 있습니다. 'urlA'와'urlB'가 일정한 경우, 하나 또는 두 개의 리모트로 추가 할 수 있습니다. 하나의 리모컨에는 두 개의 값이 있습니다. 하나는 푸시 용이고 다른 하나는 페치 용입니다. –
ElpieKay