LINUX.ORG.RU

git rm вопрос

 


0

1

как удалить файл из репы но чтобы он остался на диске у всех?
git rm --cached оставит файл локально, но если ктото вызовет git pull то файл у него удалится

Никак, наверное. Информация в репозитории управляет репозиторием, а не локальными файлами. Можно попробовать одновременно с удалением добавить файл в gitignore, но не думаю, что это сработает.

xaizek ★★★★★
()

Я бы попробовал как-то так (не проверял)

$ cp file file.bk
$ git rm file
$ git commit
$ echo file > .gitignore
$ mv file.bk file

pru-mike ★★
()

Ты хочешь странного.

Удали файл, разошли всем, чтобы они сохранили файл вне репозитория, запуш изменения.

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

разошли всем, чтобы они сохранили файл вне репозитория,

Кстати, необязательно, у нас же есть Git:

git checkout HEAD~ removed_file

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

Если специально не трогать - не удалиться

Таки удалится (и речь не о тся/ться):

/tmp/repo2 master u-2 $ git pull
Updating 5a7ee64..ba8bd85
Fast-forward
 .gitignore | 1 +
 file.txt   | 2 --
 2 files changed, 1 insertion(+), 2 deletions(-)
 delete mode 100644 file.txt

/tmp/repo2 master u= $ git log -2 --stat
commit ba8bd8513627d031508be95065f8b7d6900bba40 (HEAD -> master, origin/master, origin/HEAD)
Author: No Body <No.Body@localhost.com>
Date:   Thu Jun 7 12:06:01 2018 +0200

    Remove file.txt

 file.txt | 2 --
 1 file changed, 2 deletions(-)

commit 39c3ea64c724923b21bf06f50333beec8c716f58
Author: No Body <No.Body@localhost.com>
Date:   Thu Jun 7 12:05:06 2018 +0200

    Ignore file.txt

 .gitignore | 1 +
 1 file changed, 1 insertion(+)

KennyMinigun ★★★★★
()
Последнее исправление: KennyMinigun (всего исправлений: 1)
Ответ на: комментарий от Deleted

Если в команде сказочные ССЗБ, то они могут просто не обратить внимание на то, какие файлы затронуты, сделать rebase или вообще --force, а виноват будет угадай кто?

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

в команде сказочные ССЗБ

Ты ж понимаешь, что в этом случае вообще всё сложно и vcs далеко не первая проблема

Deleted
()
Ответ на: комментарий от r3lgar

щито поделать, остаётся по максимуму применять принцип «работает - не трогай», даже для legacy двадцатилетней давности. А лучше запись в master запретить(если есть возможность) и потом самому сливать(заодно ревью будет)

Deleted
()
Ответ на: комментарий от r3lgar

Ага, а локальные изменения?

Там не получится незаметно их упустить. Будет конфликт («deleted by them» ЕМНИП). Тут уже и так будет ясно что делать.

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

Будет конфликт

В зависимости от ситуации. Если закоммичено, то оно выдаст конфликт и придётся разрешать вручную, если нет, то попросит запихать в стэш. А если изменений не было, то оно тупо "заменит" (в данном случае — удалит), и придётся вытягивать из истории.

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

А если изменений не было, то оно тупо «заменит» (в данном случае — удалит), и придётся вытягивать из истории.

Да, в таком случае git choeckout HEAD~ removed_file

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

А тут будет конфликт, толи при merge/rebase толи при git stash pop. Т.е. безповоротно и беззвучно утратить изменения не выйдет (вот что я хотел сказать).

KennyMinigun ★★★★★
()
Последнее исправление: KennyMinigun (всего исправлений: 1)
Ответ на: комментарий от KennyMinigun

Т.е. безповоротно и беззвучно утратить изменения не выйдет

Да, ты прав. Я где-то затупил.

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