LINUX.ORG.RU

Revision tree отдельного файла

 


0

2

Работают с git 2.6.2. Необходимо посмотреть каким был некий отдельный файл в другом бранче и сравнить его с другой версией из другого бранча. Как это сделать в gitk, TortoiseGit или в рекомендуемом вами GUI для git?

★★★★★

В рекомендуемом мною CLI это делается так:

git diff commit1 commit2 -- filename
staseg ★★★★★
()

в рекомендуемом вами GUI для git?

Рекомендуемый GUI для git, это CLI. Самый удобный интерфейс, GUI вообще не нужен.

git diff master:file.c to_eclipse_android:file.c
EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: так? от Debasher

Нет, не так. Я спрашивал про GUI, тоесть как-то так

http://i.stack.imgur.com/kay5F.png

В TortoiseGit есть revision tree, но он работает лишь на уровне коммитов, а не отдельных файлов.

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от Debasher

Возможность сравнить любые версии в любых бранчах. Возможность посмотреть каким был файл к каком-то бранче после какого-то коммита. В ClearCase это легко делалось.

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от bbk123

ты слишком то не переживай о том что и чём мне говорит
как в гуях делать вышеописанное не имею представления, это очень странно вообще такое хотеть
сказал что знаю, если не помогло - ну и ладно

Debasher ★★★★★
()
Ответ на: комментарий от bbk123

Аббревиатура GUI тебе о чём-то говорит?

люди тебе советуют рабочие решения для CLI, но ты упёрся в гуйню...
тебе шашечки или ехать? если шашечки - страдай
а ещё вангую что ты под наркотой вендой сидишь

q11q11 ★★★★★
()
Ответ на: комментарий от q11q11

Что характерно, даже в венде в тортойзе можно в одну кнопку открыть гитовую консоль, по-моему даже баш.

staseg ★★★★★
()
Ответ на: комментарий от Debasher

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

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от q11q11

Это не рабочие решения. Пока я буду искать хеши коммитов в выхлопе git log --graph, копировать их в сторонку и потом вводить с git show или git diff и длинными путями к файлам, рабочий день закончится. Поэтому я вангую, что в больших проектах ты никогда не участвовал.

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от q11q11

продолжай использовать ClearCase, зачем сюда пришёл?

Продолжай курить вещества и выдумывать за собеседника то, что он не говорил. Я использую git уже несколько лет, а ClearCase был лишь примером той функциональности, которая мне нужна.

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от littlechris

IDEA: контекстное меню файла → Git → Compare with branch

Спасибо, но это не совсем то, что мне нужно. Я нашёл некий GitVersionTree

https://github.com/crc8/GitVersionTree

Дерево версий он показывает так как мне надо. Но похоже, что он умеет лишь это.

Ещё можно запустить gitk --all /path/to/file
Но и это далеко от того, что мне нужно.

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от bbk123

у меня весь процесс работы базируется на консольном интерфейсе и я не замечал проблем типа

искать хеши коммитов в выхлопе git log --graph, копировать их в сторонку и потом вводить с git show или git diff и длинными путями к файлам, рабочий день закончится.

единственное что могу посоветовать для повышения продуктивности это освоить magit в emacs'е

Debasher ★★★★★
()
Ответ на: комментарий от bbk123

а ты вообще пытался сравнить продуктивность и удобство в данных направлениях?

q11q11 ★★★★★
()
Ответ на: комментарий от bbk123

Пока я буду искать хеши коммитов в выхлопе git log --graph, копировать их в сторонку и потом вводить с git show или git diff и длинными путями к файлам, рабочий день закончится. Поэтому я вангую, что в больших проектах ты никогда не участвовал.

Ну так и ты не додумывай то, чего я не говорил.

И кстати, просвяти меня что есть «Большой Проект» для тебя, а то я скажу что ты не участвовал в командной многолетней разработке. И всё что делаешь - мышкой тыкаешь в гуйню и наслждаешься внешней красотой не понимая о чём проект вообще.
А знаешь почему я так думаю? Потому что ты привёл бредовый пример на основе своих фантазий, ибо руками хэши никто не ищет, люди знают проект над которым работают, знают что делают и следуют правильному git-workflow.

q11q11 ★★★★★
()
Ответ на: комментарий от EXL

Рекомендуемый GUI для git, это CLI. Самый удобный интерфейс, GUI вообще не нужен

magit легко потягается с ним. Приведенная задача решается через magit-status d =f - указываешь файлы для дифа, затем r hash1...hash2

loz ★★★★★
()
Ответ на: комментарий от q11q11

а ещё вангую что ты под наркотой вендой сидишь

Это старый, больной человек. Не обижай его.

bbk123 ★★★★☆ // использует Windows XP без юникодных символов

EXL ★★★★★
()
Ответ на: комментарий от q11q11

Ну так и ты не додумывай то, чего я не говорил.

Речь зашла о стандартном git CLI. Тут и додумывать не надо.

И кстати, просвяти меня что есть «Большой Проект» для тебя, а то я скажу что ты не участвовал в командной многолетней разработке. И всё что делаешь - мышкой тыкаешь в гуйню и наслждаешься внешней красотой не понимая о чём проект вообще.

Да ты и так много глупостей сказать можешь, не спрашивая ни у кого разрешения.

А знаешь почему я так думаю? Потому что ты привёл бредовый пример на основе своих фантазий

На основе идиотских предложений использовать git show и git diff.

, ибо руками хэши никто не ищет, люди знают проект над которым работают, знают что делают и следуют правильному git-workflow.

А какой из git-workflow нынче правильный? Есть несколько разных, описанных в книжках. Их «правильность» определяется нуждами конкретного проекта.

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от EXL

Я не обижаюсь на старых больных людей, пишущих всякий бред, вроде того, что написал выше ты.

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от bbk123

В ClearCase это легко делалось.
делалось

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

Речь зашла о стандартном git CLI. Тут и додумывать не надо.
не спрашивая ни у кого разрешения.
На основе идиотских предложений использовать git show и git diff.

не пыхти, ты теперь в одном ряду с любопытныйгрызун и дримжэкт

q11q11 ★★★★★
()
Ответ на: комментарий от q11q11

> В ClearCase это легко делалось.

эти строки означают что ты им пользовался, верно?

Верно. И что это означает?

ты теперь в одном ряду с любопытныйгрызун и дримжэкт

Расскажи это своей маме. А здесь пользы от тебя нет никакой.

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от anonymous
git whatchanged -p -- path/to/file/in.project


Эта команда показывает изменения конкретных коммитов и только в текущем бранче. Немного лучшего результата можно добиться следующей командой

git log -p --all --graph -- path/to/file

Но и это далеко от того, что мне нужно. Здесь нет возможности выбрать два произвольных коммита на графе и сравнить их между собой.

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от amm

В Git Extensions (https://gitextensions.github.io/) есть функция File history: показывает дерево ревизий для отдельного файла и позволяет посмотреть diff для выбранных ревизий.

Спасибо, я это попробую.

bbk123 ★★★★★
() автор топика

Нашёл почти то, что мне нужно.

gitk --all path/to/file

Затем выделяю одну произвольную версию на графе и делаю правый клик по другой произвольной версии. Выбираю «Diff this -> selected» или «Diff selected -> this» и вот оно сравнение. Выглядит убого, но лучше, чем ничего.

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от bbk123

Верно. И что это означает?

а означает это что твоя фраза «Продолжай курить вещества и выдумывать за собеседника то, что он не говорил.» унылый высер и я таки ничего не выдумывал, и ты таки продолжай пользоватся ClearCase и таки вопрос остался неотвеченным - зачем сюда пришёл?

q11q11 ★★★★★
()
Ответ на: комментарий от bbk123

Здесь нет возможности выбрать два произвольных коммита на графе и сравнить их между собой.

а так ты не думал попробовать?

git log -p --all --graph hash1..hash2 -- path/to/file

ах да, ты же понятия не имеешь как работет консольный git, ну ничего, припрёт - выучишь, ну или если попадёшь в нормальную команду - заставят выучить

q11q11 ★★★★★
()
Ответ на: комментарий от q11q11

а означает это что твоя фраза «Продолжай курить вещества и выдумывать за собеседника то, что он не говорил.» унылый высер и я таки ничего не выдумывал, и ты таки продолжай пользоватся ClearCase и таки вопрос остался неотвеченным - зачем сюда пришёл?

Твой недуг называется дислексией. Обратись наконец к доктору. ClearCase я не использую уже несколько лет, тоесть продолжать его использовать я никак не могу.

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от q11q11

да ты школота как ни крути

Да ты задрот, как ни крути.

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от q11q11

> Здесь нет возможности выбрать два произвольных коммита на графе и сравнить их между собой.

а так ты не думал попробовать?

git log -p --all --graph hash1..hash2 -- path/to/file


ах да, ты же понятия не имеешь как работет консольный git, ну ничего, припрёт - выучишь, ну или если попадёшь в нормальную команду - заставят выучить


Судя по всему это ты понятия не имеешь как работает тобой же предлагаемая команда. Продолжай учить git, школьник.

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от bbk123

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

q11q11 ★★★★★
()
Ответ на: комментарий от q11q11

По теме ничего умного ты сказать не можешь, но говоришь больше всех. За всё время обсуждения выдавил из себя лишь одну git команду, при этом сам не понимая что она делает. Кто ты после этого? Правильно: задрот, школота и к тому же страдаешь дислексией. На этом разговор с тобой окончен, возвращайся к маме.

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от bbk123

Не тебе решать когда разговор со мной окончен.
Переходишь на личности, маму мою почему-то упоминаешь... попахивает ущербным узколобым непрофессионалом. Несёшь чушь про удобство и продуктивость гуйни, хотя ничего никогда не сравнивал ибо консолью просто не умеешь пользоваться. Если ты не понимаешь результат работы команд которые тебе посоветовали знающие люди - твоя проблема, вангую что ты эти команды даже не попробовал запустить и/или понять. Приводишь примеры дорогостоящего узопрофильного проприетарного софта, который не можешь купить или к которому не можешь кряк найти (выкладывать 2500$ только чтоб git diff делать - согласен, глупо, ещё и с ЭТИМ на ЛОР припёрся) и хочешь чтоб везде было так же... чудес не бывает. Учись пользоваться свободным софтом или плати, ну или (в твоём случае) страдай на ЛОРе в попытках доказать что ты не олень.

q11q11 ★★★★★
()
Ответ на: комментарий от bbk123

Здесь нет возможности выбрать два произвольных коммита на графе и сравнить их между собой.

Ты не понимаешь как устроен гит, отсюда совершенно безграмотные вопросы. Скури последовательно: главу в ProGit где объясняется структура объектной базы гита, а затем man gitglossary и man gitrevisions.

По ходу топика ты меняешь условия задачи: в исходном посте решение git diff <branchname:filename> <branchname:filename>.

Теперь же тебе потребовалось «выбрать два произвольных коммита на графе и сравнить их между собой». Опять безграмотное требование. Нет никакой технической мотивации сравнивать два объекта типа commit. Понятно дело высокоуровневый git diff даже не стремиться его выполнять: он берёт деревья на которые ссылаются коммиты, получает множество блобов на которые ссылаются деревья и сравнивает их между собой. Специально для каких так ты есть форма git diff <commit> <commit> -- <filename>, что и является решением.

Более регулярная форма git diff <commit:filename> <commit:filename>, как и в первом случае <branchname:filename> сравнивает два блоба.

Для того чтобы выбрать два произвольных коммита есть команда git blame <branchname> -- <filename>.

Учти, что команды здесь представлены в упрощённой форме. И вместо branchname можно подставлять любую форму из gitrevisions.

Резюмируя. Опять гит-тролли жидко просрались.

Macil ★★★★★
()
Ответ на: комментарий от templarrr

И давно ты говоришь за всех?

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от q11q11

Не тебе решать когда разговор со мной окончен.

Ну разумеется. Постучи ножкой, покажи какой ты грозный.

Переходишь на личности, маму мою почему-то упоминаешь...

Я разговариваю с каждым так, как он разговаривает со мной. Ты перешёл на личности первым.

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

Консолью я пользуюсь постоянно, но не фанатично. В данном случае консоль не очень подходит. А про твою чушь смотри ниже.

Если ты не понимаешь результат работы команд которые тебе посоветовали знающие люди - твоя проблема, вангую что ты эти команды даже не попробовал запустить и/или понять

Плохая из тебя Ванга. Я запускал все предлагаемые мне команды и смотрел, что они делают. Та команда, которую предложил ты, просто показывает два коммита и что изменилось в каждом из них в отдельности, а не сравнивает их между собой.

Приводишь примеры дорогостоящего узопрофильного проприетарного софта, который не можешь купить или к которому не можешь кряк найти (выкладывать 2500$ только чтоб git diff делать - согласен, глупо, ещё и с ЭТИМ на ЛОР припёрся) и хочешь чтоб везде было так же... чудес не бывает.

Я привёл пример того, что мне нужно. То, что ClearCase платный, не имеет никакого значения. Мне нужна определённая функциональность для работы с git, а не ClearCase.

Учись пользоваться свободным софтом или плати

В итоге выяснилось, что я научен лучше тебя и нашёл более менее приемлемое решение в стандартном gitk.

ну или (в твоём случае) страдай на ЛОРе в попытках доказать что ты не олень.

Пока что страдаешь тут лишь ты один.

bbk123 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.