В настоящее время у меня открыт PR в репо, где сопровождающий предпочитает, чтобы все PR были единым коммитом.Это сильно влияет на мой рабочий процесс при внесении изменений по запросу от сопровождающего.У меня есть рабочий стол и ноутбук, с которого я работаю.
Возможно, это не правильная идея, но я считаю мой рабочий стол "домашней базой" или "оригинальной" машиной.Мой ноутбук всегда отслеживает удаленные ветви, которые произошли с этой машины
В последнее время я столкнулся с этой проблемой, когда внесу изменения (на своем ноутбуке или на рабочем столе) и у меня возникнут проблемы с перебазированием одной и той же ветки на другой машине.Я не эксперт в git, но я думаю, что это как-то связано с попыткой перебазировать изменения в исправленных коммитах.Я приведу вам пример:
Рабочий стол на ветке с одним коммитом и открытым PR
# Make requested changes
> touch changes.txt
> git add changes.txt
> git commit --amend
> git push -f origin PR_branch
Это обновляет мой PR и запускает автоматическое тестированиескрипты.Теперь у меня длинная конференц-связь, на которую я должен пойти и все еще могу работать во время прослушивания, поэтому я беру свой ноутбук и перехожу к своему репо на ветке, которая отслеживает ветку, которую я только что нажал на
Ноутбук на ветке, отслеживающий удаленную ветку с исправленным коммитом
> git pull origin PR_branch
From gitlab:user/repo
* branch PR_branch -> FETCH_HEAD
CONFLICT (add/add): Merge conflict in changes.txt
Auto-merging changes.txt
Automatic merge failed; fix conflicts and then commit the result.
> git status
On branch PR_branch
Your branch is ahead of 'upstream/devel' by 1 commit.
(use "git push" to publish your local commits)
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both added: changes.txt
На данный момент я нашел единственный способ решить эту проблему, выполнив:
# Still on my laptop
> git checkout --theirs changes.txt
> git add changes.txt
> git commit -m "Fixed merge conflict between desktop and laptop"
Теперь я сделаю reset --hard
для хэша предыдущего коммита, который является исправленным коммитом, который имеет самые последние изменения с моего рабочего стола.Мое интуитивное ощущение, что это совершенно не верно неправильно .
> git reset <previous commit hash> --hard
Теперь у меня есть обновленные изменения с моего рабочего стола на моем ноутбуке, и все кажется кошерным.Я делал это взад и вперед со своего рабочего стола -> ноутбук -> рабочий стол -> ноутбук -> рабочий стол (это много раз).Есть ли более идиоматический способ справиться с этим, я что-то напутал в своей истории git?