2016-03-22 6 views
0

Я застрял на следующей задаче:Git локальные изменения/сравнения/JGIT

Это то, что я хочу:

  • команда мерзавец, что я могу использовать, чтобы показать изменения в «US»
  • он должен работать как статус, (показать то, что я сделал) в comparisation к удаленному

это то, что я пробовал:

  1. git diff [in JGit -> diffentry] со многими вариантами e.G. master..branchName
  2. Я попытался найти git status cmd, который работает с 2 коммитами.
  3. Я смотрел через весь diffEntry [JGIT] методы, чтобы найти способ, чтобы получить мой желаемый выход
  4. Я гугле методов JGit, что покажет мне мой желаемый выход

    к 1. ->The Проблема:: Когда я меняю файл на удаленном компьютере, команда git diff показывает файл как «M» для изменения, но пользователь его не модифицировал, это может быть правдой, но это не так, но я не ищу

    To 2. -> git Status - это то, что я хотел бы использовать, потому что он показывает, что именно я хочу .... но только от индекса к голове ...

Для чего?

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

Ходит рабочий процесс?

Я клонирую ветку, делаю N-коммиты и теперь хочу нажать. Каждый файл в этих N-коммитах должен быть изменен. (и это проблема с этим измененным, если он изменен в удаленной ветке, но не локально, чем я не должен касаться его своим сценарием, но у меня нет возможности разграничить эти два)

€ dit: Дополнительная Информация

git diff-index делает почти то, что я хочу. Проблема: мне нужно отфильтровать только «наши» изменения. Поэтому, если файл изменен на удаленном компьютере, я не хочу его видеть. Я хочу видеть MY измененные файлы.

+0

Побалуйте меня, если хотите. Вы просто ищете способ увидеть различия между локальными изменениями и удаленным? – Hexana

+0

Да, но со следующими ограничениями: git diff показывает файл как Измененный, если он был изменен на удаленной ветке, но я хочу показать пользователю только файлы, которые были изменены/удалены/добавлены, так что это сбивает с толку, если он видит измененный файл, который он не коснулся. – Keey

+0

Я не на 100% понятен в том, что вы просите, но вот несколько советов. git diff origin/master даст вам разницу между вашей локальной ветвью и пультом дистанционного управления. Вы также можете сделать: git fetch origin, если вы знаете, что на пульте есть изменения, и чтобы увидеть различия, которые вы делаете git log -p HEAD..origin. Другая возможность найти отличия - $ git diff -name-status master..branchName (очевидно, меняя названия соответствующих названий ветвей). У меня такое чувство, что последнее может быть тем, что вы ищете? – Hexana

ответ

0

Если вы хотите увидеть изменения на вашей стороне только, вы должны обновить индекс, прежде чем дифф, поэтому запустить git fetch <remote> <branch> и указательный дерево будет на сегодняшний день, после этого вы можете запустить git diff-index <branch>

вы можете добавить --diff-filter=ADM, если вы хотите выбрать только файлы, которые добавлены (A), удаленные (D), модифицированные (M)

+0

Я только что протестировал его, и он не работает: Вот что я сделал: -OTHER PC- (на другом ПК, чем у меня) // 1) мерзавец клон 2) мерзавец контроль разработки 3) файл изменить 4) мерзавец совершить -a -m "тест" 5) мерзавец толчок -Мой PC- (на моем компьютере, текущая ветвь мастер) // 1) git fetch origin develop 2) git diff-index - name-status origin/develop И отображается измененный файл с другого ПК. Я думаю, что я что-то делаю g wrong Спасибо за вашу помощь до сих пор – Keey

+0

после того, как вы извлекли источник, просто сравните с локальным индексом 'git diff-index --name-status' –

+0

Если я напишу эту команду точно так, я получу информационный текст на как использовать команду. Возможно, это потому, что мы используем git 2.6? – Keey