発生したエラーについて
git pull origin tuboを行った結果、ローカルのtuboブランチとリモートのtuboブランチで競合が発生しました。これは、同じファイルの同じ部分が両方のブランチで異なる方法で変更されたためです。この場合のファイルはapp/views/layouts/application.html.erbでした。
競合は手動で解決する必要があります。具体的には、競合しているファイルを開き、Gitが挿入したマーカー(<<<<<<<, =======, >>>>>>>)を見つけて、どちらの変更を保持するか(あるいは新しい変更を作成するか)を決定します。
ローカルのbranch tuboとリモートのbranch tuboが異なるコミットを含んでおり、それらが分岐した(divergent)状態にあるために起こっています。このため、Gitはどのようにこれらの異なるコミットを調整(reconcile)するべきか尋ねています。
git pull origin tuboを実行すると、リモートのtuboブランチから変更を取得し、それを現在のローカルのtuboブランチに統合しようとします。しかし、あなたのローカルのtuboブランチとリモートのtuboブランチが異なるコミットを含んでいるため、Gitはどのようにこれらを統合するかを知りません。
ここでgit config pull.rebase falseを実行したことで、今後git pullを実行したときにデフォルトでマージを行うように設定しました。これにより、git pull origin tuboを再度実行したときに、Gitはリモートのtuboブランチから変更を取得し、それを現在のローカルのtuboブランチにマージしようとします。
この設定は現在のリポジトリにのみ適用されます。すべてのリポジトリで同じ設定を適用したい場合は、--globalオプションを付けてgit config --global pull.rebase falseと実行します。
次に git add . を実行しましたが、このコマンドは競合の解決を示すものではなく、新たに追加または変更されたファイルを次のコミットにステージングするものです。したがって、この時点ではまだ競合は解決されていません。
再度 git pull origin tubo を試みましたが、同様に競合が未解決のためエラーが発生しました。
git commit -m"tubo" を実行したことで、競合が解決(あるいは無視)され、新たなコミットが作成されました。
最終的にgit pull origin tuboとgit push origin tuboを成功させることができました。これは、競合が解決され、ローカルブランチがリモートブランチの変更を取り込んだ後に行われました。