Если то, что вы хотели бы сделать, это вернуть слияние и применить X до слияния Y:
git checkout X~2 # go to revision before merge
git cherry-pick X # apply the revision at the tip of X
git merge Y -m "Merging Y"
# if you like the results
git branch -f X
git checkout X
PS Принимая во внимание беспокойство @ 0andriy, приятно заметить, что это переписывает историю. Если вы уже отправили то, что у вас есть на X, в репозиторий, где другие люди, возможно, уже начали играть с ним, считается грубым , чтобы переписать историю. Если, с другой стороны, это то, что вы нигде не толкали, то смело переписывайте историю.