2014-01-29 2 views
1

Я хочу отключить фиксацию, если вы не на ветке.Отключить фиксацию, если нет на ветке

Я потерял код на сервере разработки, так как код был совершен, но никогда не толкнул ...

Можно ли остановить ублюдок от совершения, если вы не на ветке?

Обновление: Я не на ветке, так как раньше делал «git checkout mytag».

+0

Вы всегда находитесь на ветке, если вы сделали 'git init' в этом каталоге. –

+2

Это может помочь использовать приглашение оболочки, которое включает в себя имя ветки в нем, тогда гораздо легче определить такие ошибки. –

+1

На самом деле ваши фиксации не были потеряны, они просто недоступны ни одной ветке. Вы все еще можете ввести «git reflog» и увидеть эти коммиты и их хеши. Затем вы можете добавить эти фиксации в свою текущую ветку, используя git cherry-pick (или любым другим способом, который вы хотели бы). –

ответ

0

В принципе, если вы используете репозиторий git для своего проекта, вы всегда находитесь на ветке, поэтому первая часть вашего вопроса путается. Затем для второго оператора не должно быть возможности потерять код с помощью git, вы можете восстановить свои фиксации, чтобы найти код обратно. Но запутанная часть этой части заключается в том, что вы совершаете локальные коммиты и нажимаете их на удаленную ветку. Затем, наконец, чтобы ответить на ваш вопрос, в зависимости от среды/IDE, можно прекратить совершать, просто не совершая. Поскольку это в основном ручная задача.

Я хотел бы прокомментировать это (недостаточно очков), так как разумно, чтобы вы объяснили свою ситуацию немного лучше и указали, какую IDE вы используете, а также ветку и возможные коммиты/команды, которые вы сделали.

О потере кода вы можете вернуть свою ветку к предыдущему фиксации. Если вы задержите свои текущие изменения, вы даже не обязательно потеряете какой-либо код с момента совершения. Проверьте следующую тему:

How to revert Git repository to a previous commit?

+2

Существует состояние, называемое «отдельно стоящим HEAD», когда вы не находитесь в какой-либо отрасли. Это происходит после «git checkout

+0

True; это также демонстрируется в верхнем ответе в ссылке и, следовательно, «В принципе» в ответе. – jvdp

1

Вы можете использовать Git Hooks для достижения этой цели.

Я нашел предварительно совершить крюк на GitHub, что делает именно то, что вы хотите:

#!/bin/sh 


if ! git symbolic-ref HEAD &> /dev/null; then 
    echo "You are in a detached head state! Commit has been blocked. (Use --no-verify to bypass this check.)" 
    exit 1 
fi 

Поместите его в файл с именем pre-commit в .git каталоге/крючками и сделать этот исполняемый файл.

Смежные вопросы