Исходя из ваших комментариев, вот еще одно решение: Работайте в тематических ветках, как обычно.При необходимости объединяйте ветки объектов в мастер, как обычно.Прежде чем вы нажмете на удаленное устройство, выполните слияние сквоша с отдельной ветвью и нажмите эту ветку на удаленную ветвь.Пример:
# Create two repos for testing
mkdir test-git-merging
mkdir test-git-merging2
cd test-git-merging2
git init
# Have to set this flag to be able to push with master checked out
git config receive.denyCurrentBranch ignore
cd ../test-git-merging
git init
# Base commit in first repo
git commit --allow-empty -m "init"
# Create the branch that will be pushed to the remote
git branch remote-master
# Make some files and commit them in master
echo foo >> foo
echo bar >> bar
git add .
git commit -m "added files"
# Make a change on a branch
git checkout -b branch
echo 1 >> foo
git commit -am "Modified foo"
# Make a non-conflicting change in master
git checkout master
echo 2 >> bar
git commit -am "Modified bar"
# Do a normal merge from branch to master--normal history
git merge branch
# Squash merge from master to special remote branch
git checkout remote-master
git merge --squash master
git commit -m "Everything is squashed"
# Set up the remote and push config
git remote add other ../test-git-merging2
git config branch.remote-master.remote other
git config branch.remote-master.merge master
git config push.default tracking
# Push the branch
git push
Я протестировал эту последовательность команд, чтобы убедиться, что она работает.Конечно, удаленный мастер филиала по-прежнему никогда не будет иметь реальной истории, а это означает, что всегда будет опасно возвращать материал из него в ваши рабочие ветви, но это, по сути, то, о чем вы просите.