Вопросы

Git Pull без изменения моих локальных файлов

Я ищу в Интернете, как использовать git pull без изменения конкретных файлов, но я хожу по кругу и теряюсь.

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

Чтобы использовать C локально на каждой из наших машин, мы выполнили git update-index --assume-unchanged ..path-to-C../C, так что всякий раз, когда один из нас делает push, этот конкретный файл не принимается во внимание. Другими словами, если я правильно понял, C не будет обновляться в репозитории на git, даже если мы внесем в него локальные изменения. Таким образом, каждый из нас может указать свой путь к файлу.

Но это только половина проблемы.

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

Как мне получить такой результат?

Я не хочу использовать .gitignore, потому что в ходе проведенных нами тестов мы увидели некоторые поведения, которых не хотим. Например, если мой коллега помещает C в .gitignore и делает push, когда я выполняю pull, мой C не будет присутствовать в моем локальном репо. Поэтому каждый раз, когда я делаю тягу, мне придется C вручную внутри своего проекта, чтобы он заработал.

Это связано с тем, что для его работы мы выполняем следующую комбинацию команд:

git rm --cached ..path-to-C../C

move C to the .gitignore (with intellij .ignore plugin)

from intellij mark it as a file to be untracked

В результате Intellij выделяет наш файл желтым цветом, чтобы сказать, что этот файл официально не отслеживается.

Читать:
Pylint не работает при использовании в качестве хука предварительной фиксации в github

Я хочу автоматизировать эту часть процесса, пометив каким-то образом файл, как я сделал для push, но в данном случае для pull.

stackoverflow.com/a/1733921/341994   —  person config.err    schedule 12.11.2020

Вы можете использовать тайник как обходной путь и создать псевдонимы командной строки, которые используют этот обходной путь. Затем используйте эти псевдонимы вместо обычных pull / push   —  person config.err    schedule 12.11.2020

Обратите внимание: если файл C существует в коммитах и ​​в индексе Git (который заполняется в из коммитов), перечисление файла C в .gitignore буквально не имеет никакого эффекта. Так что упоминание .gitignore здесь неуместно. Что действительно важно, так это этот трюк.   —  person config.err    schedule 13.11.2020

Важно то, что незафиксированные изменения в файле C будут мешать слияниям, которые действительно имеют изменения в файле C. Помните, что git pull означает запустить git fetch, а затем запустить вторую команду Git. Вторая команда Git по умолчанию git merge. Вы можете изменить выбор второй команды, но другой вариант — git rebase — здесь не поможет. Проблема в самом файле C. Не делай так.   —  person config.err    schedule 13.11.2020

Если вы … э-э … обязались (если вы извините за выбор слова) в любом случае сделать это таким образом, что ж, теперь вы должны разобраться с проблемой. Это почти все, что нужно сделать.   —  person config.err    schedule 13.11.2020

@torek извините, torek Я не очень хорошо объяснил процесс, который следует за подходом .gitignore, теперь я отредактировал вопрос, надеюсь, процесс станет более понятным   —  person config.err    schedule 13.11.2020

Похожие записи

Невозможно заставить вспомогательную функцию работать в AWS lambda nodejs

admin

Почему моя логика будущего Combine работает внутри кнопки, но не внутри ее собственной функции, вызываемой кнопкой?

admin

Синхронизация пароля приложения laravel с Active Directory

admin

Pycharm, программа для прыжков с мячом в pygame

admin

Бесконечная вертикальная прокрутка в обоих направлениях (добавление элементов динамически вверху / внизу), которая не мешает положению прокрутки при добавлении в начало списка

admin

Выбор функции потерь для lstm, обученного на векторах word2vec, когда целью является вектор тех же размеров

admin