Git에서 기본을 다시 설정한 후 병합되기 때문에 - merged에 표시해도 표시되지 않지만 필요하지 않은 로컬 브랜치
3339 단어 Git
git branch --merged
은 표시되지 않지만 합쳐졌기 때문에 필요하지 않은 지점입니다.Gitlab에서 ff가 MR을 병합할 때만 병합할 수 있도록 설정된 경우
Merge commit with semi-linear history
, 밀어낸 후 Gitlab에 다시 기초한 후에 병합할 수 있기 때문에 로컬에 이 지점이 남아 있습니다.즉, 다음과 같이 B에서 브랜치가 발생하는 MR에 대해 설명합니다.
비로컬에서 MR 기반 재결합을 수행하면 Y를 가리키는 로컬 브랜치가 결합되므로 삭제 후에는 문제가 없습니다
git branch --merged
. 그러나 표시되지 않습니다.어떤 지점이 마스터에 통합되었는지 어떻게 검사합니까
나는 몇 가지 방법을 생각해 낼 수 있다
마스터와 같은 위치에 있는지 확인하려면 마스터를 다시 지정합니다.
git checkout feature-hoge
git rebase origin/master
# feature-hoge と origin/master が同じ位置なら feature-hoge は削除できます
git log --decorate --oneline --graph
합병 후에 차이가 있는지 없는지를 보자.git checkout -B master origin/master
git merge --no-commit --no-ff feature-hoge
# 差分がなければ feature-hoge は削除できます
git status
# マージ途中状態なので abort しておきます
git merge --abort
어떤 지점이 마스터에 통합되었는지 확인하는 방법: 수정
위의 두 가지 방법은 작업 트리와 색인이 괴롭히기 때문에 사용하기 어렵다.아래와 같이 작업 트리를 놀지 않고 확인할 수 있습니다.
우선, 합병된 지점과 마스터의 공공 조상에 대한 제출을 확인할 수 있습니다.
git merge-base feature-hoge master
제출된 삼방향 병합을 사용하는 내용을 표시합니다.git merge-tree abc12345 feature-hoge master
이렇게 아무것도 표시되지 않으면feature-hoge가 마스터에 통합되어 삭제할 수 있습니다.또한 git merge-tree
표시만 하기 때문에 작업 트리와 색인을 오염시키지 않는다.셸 스크립트
git ls-merged
를 생성하여 다음과 같이 합니다.#!/bin/bash
ref=${@:-HEAD}
git for-each-ref --format='%(refname:short)' refs/heads/ | while read -r x; do
if ! git merge-tree "$(git merge-base "$x" "$ref")" "$ref" "$x" 2>/dev/null | read -r; then
echo "$x"
fi
done
Reference
이 문제에 관하여(Git에서 기본을 다시 설정한 후 병합되기 때문에 - merged에 표시해도 표시되지 않지만 필요하지 않은 로컬 브랜치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ngyuki/items/ab744d989463147cacc0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)