Як я інтерактивно відмежую певну луску в геті?


106

Якщо у мене в моєму індексі розміщено пару записів із того самого файлу, то як я можу інтерактивно відмежувати один із них?

Чи є альтернатива видалити весь файл, а потім повторно виконати описи, які я хочу зберегти, або вручну скасувати зміни до робочої копії, а потім інтерактивно додавати ці скасовані зміни?

Відповіді:


135

Спробуйте git reset --patch filename; git add --patchзгідно з документацією, це має робити навпаки . Коротка форма -pтакож працює для обох команд.


Я не думаю, що в моїй версії є (це 1.6.3.3), але це виглядає як правильна відповідь.
Ендрю Грімм

2
У такому випадку (якщо припустити, що ви не можете оновити з якоїсь причини), пропоную скористатися git stash save --keep-indexдля збереження та скидання поточних змін робочої копії. Потім ви можете скинути файл і скасувати зміни, які ви не хочете. Якщо ви скопіюєте файл спочатку в якесь тимчасове місце, ви можете використовувати diffдля збереження змін, які ви скасовуєте. Потім ви можете знову додати файл назад (немає необхідності в інтерактивному додаванні, оскільки ви приховували інші зміни, які вас не цікавили). Використовуйте git stash popдля повернення старих змін та diffзастосування змін, які ви скасували. Досить громіздкий ... :-(
Aasmund Eldhuset

The short form -p also works for both commands... Ти маєш на увазі git reset -p filename?
Наваз

1
@Nawaz: Це правильно - git add -p filenameвибірково стадіює зміни з цього файлу і git reset -p filenameвибірково нестабільність змін. Є також git checkout -p -- filename, що дозволяє вибірково вилучати зміни з файлу. Увага: кожен з addі resetможе бути використаний для скасування інших з цих двох, але якщо ви використовуєте цю форму , checkoutщоб скасувати зміни, ви не можете отримати його назад.
Асмунд Елдхусет

2

git guiмає гідний графічний інтерфейс для інтерактивної постановки або нестабільних перегонів або ліній. Є гарніші / кращі клієнти GUI, але git guiце легка, вбудована та кросова платформа (lin, win, mac).

https://git-scm.com/docs/git-gui

Просто клацніть правою кнопкою миші на клаптиші, щоб поставити / нестабільність. Для рядків виділіть спочатку рядки, а потім клацніть правою кнопкою миші.


-1

У GitX є приємний інтерфейс користувача для відклеювання фрагментів файлу: введіть тут опис зображення

Офіційний клієнт деякий час не підтримувався, але роздрібнення в GitHub з додатковими функціями популярне в деяких колах. ( повідомлення про це в блозі )


1
Для користувачів Windows там Git Extensions має аналогічний приємний інтерфейс користувача.
Асмунд Елдхусет

4
Так і вбудований git gui, за винятком я не впевнений, що я
вжив

1
SourceTree (Windows + Mac) також має приємний інтерфейс для цього.
chrnola

Я мушу згадати останніх графічних клієнтів Git зараз - GitKraken прекрасний, і це підтримує (хоча зараз він постачається з здоровою платою за комерційне використання). GitHub в GitHub Desktop безкоштовно, красивий, і підтримує легко постановка і unstaging скнара. GitKraken і GitHub Desktop є кросплатформенними, але жоден з них не є відкритим кодом.
jdgregson
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.