할 수 있습니까 git merge
커밋없이을 있습니까?
“man git merge”는 다음과 같이 말합니다.
With --no-commit perform the merge but pretend the merge failed and do not autocommit,
to give the user a chance to inspect and further tweak the merge result before
committing.
하지만 사용하려고하면 git merge
와 --no-commit
그것을 여전히 자동 커밋. 내가 한 일은 다음과 같습니다.
$> ~/git/testrepo$ git checkout master
Switched to branch 'master'
$> ~/git/testrepo$ git branch
* master
v1.0
$> ~/git/testrepo$ git merge --no-commit v1.0
Updating c0c9fd2..18fa02c
Fast-forward
file1 | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
$> ~/git/testrepo$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
이후 git log
에는 v1.0 브랜치의 모든 커밋이 마스터로 병합 된 것으로 나타납니다.
답변
병합하는 동안 출력을 기록하십시오. Fast Forward
이러한 상황에서는 다음을 수행하려고합니다.
git merge v1.0 --no-commit --no-ff
답변
여기서 병합의 의미를 오해하고 있습니다.
이는 --no-commit
MERGE COMMIT가 발생 하는 것을 방지하며 두 분기 분기 히스토리를 병합 할 때만 발생합니다. Git이 “fast-forward”병합임을 표시 한 후 Git은 분기에 이미 존재하는 커밋 만 순차적으로 적용하기 때문에 귀하의 예에서는 그렇지 않습니다.
답변
직접 입력 한 것처럼 한 번의 커밋에서 모든 변경 사항 만 커밋하려면 –squash도 수행합니다.
$ git merge --squash v1.0
$ git commit
답변
나는이 방법을 선호하므로 희귀 한 매개 변수를 기억할 필요가 없습니다.
git merge branch_name
그런 다음 ” #
“커밋을 통해 브랜치가 앞서 있다고 말하면 이제 커밋을 해제하고 다음과 같이 변경 사항을 적용 할 수 있습니다.
git reset @~#
예를 들어, 병합 후 1 커밋보다 앞서면 다음을 사용하십시오.
git reset @~1
참고 : Windows에서는 따옴표가 필요합니다. ( 조쉬 가 의견에서 언급 한 바와 같이 ) 예 :
git reset "@~1"
답변
지점에 커밋이 하나만 있으면 보통
git merge branch_name --ff