[git] 자동 커밋없이 Git 병합

할 수 있습니까 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-commitMERGE 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


답변