2015-02-19 2 views
0

Я довольно новичок в github. Я загрузил один из своих проектов, и случайно я также передал все свои двоичные файлы. Я использовал сайт github для управления моим проектом и удаления двоичных файлов. Проблема в том, что каждый раз, когда я удалял файл, он считался фиксацией.GitHub: Связывание уже совершено в одном фиксаторе

Обычно это не проблема, но я человек, который любит смотреть статистику и видеть, как они развиваются.

Теперь статистика фиксации и другие статистические данные, относящиеся к счету фиксации, перепутаны и выглядят так, что проект идет очень быстро, так как несколько сот удаленных вручную двоичных файлов считаются единственными коммитами против моего 2-8 регулярных совершает день.

Есть ли какой-либо хороший способ связать совершенные коммиты с одной фиксацией или удалить их из статистики фиксации вообще?

Я знаю, что могу просто удалить проект и повторно загрузить его снова, но потом я потеряю историю своих файлов.

+1

Я не использую мерзавца (на данный момент), но это так, вопрос, я думаю, решает проблему: [Сквош мой последний X коммитов вместе с помощью Git] (http://stackoverflow.com/q/5189560/1364007) - или, если ссылка не работает, используйте 'git rebase' или' git merge --squash' или 'git reset --soft HEAD ~ 3 && git commit ' –

+0

Я уже совершил намного больше после коммитов, которые хочу расслоить. Могу ли я как-то «сквош» совершать в пределах диапазона? – Markus

+1

Боюсь, я не знаю, но я бы так подумал. Я отложу ответ на вопрос, кто знает git. –

ответ

3

Есть много ответов на эту проблему. Один из них:

git rebase -i HEAD~n 
// n will define the range of commits that you want to consider 
// You can also use a SHA1 hash instead of HEAD~n 

Эта интерактивная сводка покажет вам список коммитов. Если вы хотите раздавить их все вместе, вы просто префикс каждой фиксации (кроме первой) с помощью сквоша. Это объясняется в инструкциях по интерактивной переадресации, которые появятся в вашей командной строке.

Так что, если вы установите п = 4, и вы увидите следующее:

pick 111111 // Random hashes 
pick 222222 
pick 333333 
pick 444444 

Просто замените это на

pick 111111 
squash 222222 
squash 333333 
squash 444444 

Это приведет, в конце концов, за одну фиксацию, содержащий изменения кода из этих 4 коммитов. Обратите внимание, что это будет переписать историю создания git. Эти 4 фиксации исчезнут и будут заменены новым, совокупным фиксацией.

Хотя это не самое простое решение, оно обеспечивает большую гибкость. Интерактивная перезагрузка также позволяет переименовывать сообщения фиксации, переписывать фиксации и многое другое. Это также позволило бы вам увеличить степень детализации, если бы вы захотели, скажем, squash 2, зафиксировали в одном коммите, а squash 2 других зафиксировали в одном коммите. Пример:

pick 111111 
squash 222222 
pick 333333 
squash 444444 

Для получения более подробной информации https://www.atlassian.com/git/tutorials/rewriting-history/git-rebase-i/

+0

Спасибо много. Я подробно расскажу об этом днем, когда уйду с работы. – Markus