git - файлы - убрать файл из коммита




Показывать, какие файлы изменились между двумя версиями (10)

Я хочу объединить две ветви, которые были разделены на некоторое время и хотели узнать, какие файлы были изменены.

Перешел по этой ссылке: http://linux.yyz.us/git-howto.html что было весьма полезно.

Инструменты для сравнения отраслей, с которыми я столкнулся, - это:

  • git diff master..branch
  • git log master..branch
  • git shortlog master..branch

Интересно, есть ли что-то вроде «git status master..branch», чтобы видеть только те файлы, которые отличаются между двумя ветвями.

Не создавая новый инструмент, я думаю, что это самое близкое, что вы можете сделать сейчас (что, конечно же, будет показывать повторы, если файл был изменен более одного раза):

  • git diff master..branch | grep "^diff"

Интересно, есть ли что-то, что я пропустил ...


Вы также можете легко сравнить ветви для измененных файлов, используя, например, TortoiseGit . Просто нажмите « Обзор ссылок» и выберите ветви, которые вы хотите сравнить.

Например, если вы сравниваете свою ветку с мастером, вы получите в качестве результата список файлов, которые будут изменены в master, если вы решите объединить свою ветвь в master .

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


Если вам нравится графический интерфейс и вы используете Windows, это простой способ.

  1. Загрузить WinMerge
  2. Проверьте две ветви в разные папки
  3. Сделайте папку по папке, используя WinMerge. Вы также можете легко вносить изменения, если одна из ветвей - это та, на которой вы работаете.

Если кто-то пытается создать файл diff из двух ветвей:

git diff master..otherbranch > myDiffFile.diff

Есть две ветви, которые можно сказать

  • A (Филиал, на котором вы работаете)
  • B (Другой филиал, с которым вы хотите сравнить)

Находясь в ветке А, вы можете ввести

git diff --color B

то это даст вам результат

Важным моментом в этом является

  1. Текст в зеленом цвете находится внутри отделения А

  2. Текст красного цвета присутствует в ветке B


Здесь много ответов, но я хотел добавить что-то, что я обычно использую. ЕСЛИ вы находитесь в одной из ветвей, которые вы хотели бы сравнить, я обычно делаю одно из следующего. Ради этого ответа мы скажем, что мы находимся в нашей вторичной отрасли. В зависимости от того, какой вид вам нужен в то время, будет зависеть от того, что вы выберете, но большую часть времени я использую второй вариант этих двух. Первый вариант может быть полезен, если вы пытаетесь вернуться к исходной копии - в любом случае, как выполнить работу!

Это будет сравнивать мастер с веткой, в которой мы находимся (которая является вторичной), а исходный код будет добавленными строками, а новый код будет считаться удалёнными строками

git diff ..master

ИЛИ ЖЕ

Это также сравнит мастер с веткой, в которой мы находимся (что является вторичной), а исходным кодом будут старые строки, а новый код будет новыми строками

git diff master..

И если вы ищете изменения только для определенных файлов, то:

git diff branch1 branch2 -- myfile1.js myfile2.js

branch1 не является обязательным, и ваша текущая ветка (ветка, в которой вы находитесь) будет рассмотрена по умолчанию, если branch1 не предоставлен. например:

git diff master -- controller/index.js

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

Если ваш Upstream, возможно, переместился, вы должны сделать следующее:

git fetch
git diff origin/master...

Просто использование git diff master может включать или не включать соответствующие изменения.


Пытаться

$ git diff --stat --color master..branchName

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

Вы также можете перевернуть ветки, чтобы получить более четкое представление о различии, если бы вы слились в другую сторону:

$ git diff --stat --color branchName..master

Также имейте в виду, что git имеет дешевое и легкое ветвление. Если я думаю, что слияние может быть проблематичным, я создаю ветвь для слияния. Поэтому, если у master есть изменения, которые я хочу объединить, а ba - это моя ветка, которая нуждается в коде от мастера, я могу сделать следующее:

git checkout ba
git checkout -b ba-merge
git merge master
.... review new code and fix conflicts....
git commit
git checkout ba
git merge ba-merge
git branch -d ba-merge
git merge master

Конечным результатом является то, что я должен попробовать слиться в откидной ветке, прежде чем вкручивать свою ветку. Если я соберусь, я могу просто удалить ветвь ba-merge и начать все сначала.


Чтобы сравнить текущую ветвь с master

$ git diff --name-status master

Чтобы сравнить любую пару ветвей

$ git diff --name-status firstbranch..yourBranchName

Это должно делать то, что вам нужно, если я правильно вас понимаю.







git-diff