Як я можу сказати git ігнорувати мій локальний файл та взяти той з моєї віддаленої гілки, не намагаючись злитися та не викликати конфліктів?
Як я можу сказати git ігнорувати мій локальний файл та взяти той з моєї віддаленої гілки, не намагаючись злитися та не викликати конфліктів?
Відповіді:
Це найбезпечніше рішення:
git stash
Тепер ви можете робити все, що завгодно, не боячись конфліктів.
Наприклад:
git checkout origin/master
Якщо ви хочете включити віддалені зміни у головну гілку, ви можете зробити:
git reset --hard origin/master
Це зробить вас гілкою "майстер", щоб вказати на "походження / майстер".
git stash; git fetch origin; git reset --hard origin/master
git stash
? git stash list
пусто.
Я розумію питання так: ви хочете повністю замінити вміст одного файлу (або виділення) з висхідного потоку. Ви не хочете впливати на індекс безпосередньо (тому ви переходите через додавання + фіксація, як зазвичай).
Просто робіть
git checkout remote/branch -- a/file b/another/file
Якщо ви хочете зробити це для широких підкреслень і замість цього бажаєте вплинути на індекс безпосередньо
git read-tree remote/branch:subdir/
Потім можна (необов'язково) оновити свою робочу копію, виконавши
git checkout-index -u --force
Я розумію, що, наприклад, ви неправильно зберегли оновлений файл лише для тестування. Потім, коли ви запускаєте "git status", файл видається як "Змінений", і ви говорите кілька поганих слів. Ви просто хочете повернути стару версію і продовжувати працювати нормально.
У цьому сценарії ви можете просто виконати таку команду:
git checkout -- path/filename
Я б заказав віддалений файл із "master" (віддаленого / вихідного сховища) таким чином:
git checkout master <FileWithPath>
Приклад: основні компоненти git checkout / indexTest.html
Використовуйте -s
або --strategy
варіант у поєднанні з -X
опцією. У своєму конкретному запитанні ви хочете зберегти всі віддалені файли та замінити локальні файли з однойменною назвою.
Замініть конфлікти з віддаленою версією
git merge -s recursive -Xtheirs upstream/master
використовуватиме віддалену версію репо всіх конфліктуючих файлів.
Замініть конфлікти на локальній версії
git merge -s recursive -Xours upstream/master
буде використовувати локальну версію репо всіх конфліктуючих файлів.
git merge -s their
.