# Ignition 8.3: Project Load Issues When Switching Git Branches

**URL:** <https://forum.inductiveautomation.com/t/ignition-8-3-project-load-issues-when-switching-git-branches/111132>\
**Category:** Ignition\
**Tags:** ignition83\
**Created:** [October 1, 2025, 2:17pm UTC](https://forum.inductiveautomation.com/t/ignition-8-3-project-load-issues-when-switching-git-branches/111132 "2025-10-01T14:17:55Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![adrien.couturier](https://avatars.discourse-cdn.com/v4/letter/a/ed655f/32.png) [@adrien.couturier](https://forum.inductiveautomation.com/u/adrien.couturier)\
**Post date:** [October 1, 2025, 2:17pm UTC](https://forum.inductiveautomation.com/t/ignition-8-3-project-load-issues-when-switching-git-branches/111132/1 "2025-10-01T14:17:55Z")

</div>

Hi everyone,

I’m running into an issue with version control in **Ignition 8.3** 😔.

Here’s what I did:

1. I added my `data` folder to a Git repository and committed the current state in the `Main` branche.

2. I created a new branch `develop` and made some modifications to a project.

3. When I switched back to the original branch `main` (containing the initial project with no modifications), I expected the project to return to its original state.

However, when Ignition tries to load the project after switching branches, I get this error:

```python
Error loading project.

ProtoSerializationException: Fallback serialization failed
  caused by NoSuchElementException: No value present

Ignition v8.3.0 (b2025091510)
Java: Azul Systems, Inc. 17.0.16

```

Here are the screenshots :

 ![Message](https://us1.discourse-cdn.com/inductiveautomation/original/3X/7/3/735122b54778908f8dcce521c288b8bf13596168.jpeg)

 ![Details](https://us1.discourse-cdn.com/inductiveautomation/original/3X/8/6/86e6195d37c164804f035d10b7bb6d5ac3cc8e26.jpeg)

Has anyone encountered something similar?

Is there a recommended way to manage Git branches with **Ignition 8.3** projects to avoid this kind of issue?

Any help would be appreciated.

Thanks.

Adrien

---

<div class="post-metadata">

**Author:** ![cmallonee](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/cmallonee/32/6416_2.png) [@cmallonee](https://forum.inductiveautomation.com/u/cmallonee)\
**Post date:** [October 1, 2025, 3:24pm UTC](https://forum.inductiveautomation.com/t/ignition-8-3-project-load-issues-when-switching-git-branches/111132/2 "2025-10-01T15:24:35Z")

</div>

If you’re using version control to add/move/remove any files, you’ll need to trigger a scan in order for the Gateway to recognize the new files. For Project content, you’ll want to scan with the projects route - as opposed to the full Gateway scan.

On your Gateway (and assuming you are authenticated) you can access the API documentation. The relevant project route is this one: `/openapi#tag/config-management/paths/~1data~1api~1v1~1scan~1projects/post`. Alternatively, you can manage the same through the UI by clicking the `Scan File System` button on the Projects page.

 ![Screenshot 2025-10-01 at 8.22.34 AM](https://us1.discourse-cdn.com/inductiveautomation/original/3X/9/a/9a36a5baba59930fe9d0ad1e5b0877e99e3ffc0e.png)

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [October 1, 2025, 3:26pm UTC](https://forum.inductiveautomation.com/t/ignition-8-3-project-load-issues-when-switching-git-branches/111132/3 "2025-10-01T15:26:07Z")

</div>

Can you copy the `full` stacktrace of that error message and post it here [as preformatted text](https://forum.inductiveautomation.com/t/wiki-how-to-post-code-on-this-forum/77831)?

---

<div class="post-metadata">

**Author:** ![adrien.couturier](https://avatars.discourse-cdn.com/v4/letter/a/ed655f/32.png) [@adrien.couturier](https://forum.inductiveautomation.com/u/adrien.couturier)\
**Post date:** [October 1, 2025, 3:46pm UTC](https://forum.inductiveautomation.com/t/ignition-8-3-project-load-issues-when-switching-git-branches/111132/4 "2025-10-01T15:46:05Z")

</div>

I can now open my project, but the changes made in the `develop` branch are showing up in the `main` branch, which is very strange...

---

<div class="post-metadata">

**Author:** ![adrien.couturier](https://avatars.discourse-cdn.com/v4/letter/a/ed655f/32.png) [@adrien.couturier](https://forum.inductiveautomation.com/u/adrien.couturier)\
**Post date:** [October 1, 2025, 3:47pm UTC](https://forum.inductiveautomation.com/t/ignition-8-3-project-load-issues-when-switching-git-branches/111132/5 "2025-10-01T15:47:18Z")

</div>

Here is the full stacktrace

```python
java.util.concurrent.ExecutionException: com.inductiveautomation.ignition.common.rpc.proto.ProtoSerializationException: Fallback serialization failed
	at java.base/java.util.concurrent.CompletableFuture.reportGet(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture.get(Unknown Source)
	at com.inductiveautomation.ignition.client.util.gui.progress.Task.runBlocking(Task.java:146)
	at com.inductiveautomation.ignition.client.util.gui.progress.Task.runBlocking(Task.java:125)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner.loadProject(IgnitionDesigner.java:930)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner$Handler$1.openProject(IgnitionDesigner.java:2235)
	at com.inductiveautomation.ignition.designer.ProjectDialog.lambda$openProject$5(ProjectDialog.java:227)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Caused by: com.inductiveautomation.ignition.common.rpc.proto.ProtoSerializationException: Fallback serialization failed
	at com.inductiveautomation.ignition.common.rpc.proto.BuiltinAdapters.fallbackSerializer(BuiltinAdapters.java:398)
	at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.encodeValue(ProtoRpcSerializer.java:119)
	at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.encodeRpcMessage(ProtoRpcSerializer.java:85)
	at com.inductiveautomation.ignition.common.rpc.proto.ProtoRpcSerializer.writeReturnValue(ProtoRpcSerializer.java:412)
	at com.inductiveautomation.ignition.gateway.rpc.CompositeSerializer.writeReturnValue(CompositeSerializer.java:37)
	at com.inductiveautomation.ignition.gateway.rpc.RpcRoutes$OutputWriter.write(RpcRoutes.java:345)
	at com.inductiveautomation.ignition.gateway.rpc.RpcRoutes.safelyHandle(RpcRoutes.java:227)
	at com.inductiveautomation.ignition.gateway.rpc.RpcRoutes.handle(RpcRoutes.java:198)
	at com.inductiveautomation.ignition.gateway.dataroutes.Route.service(Route.java:361)
	at com.inductiveautomation.ignition.gateway.dataroutes.RouteGroupImpl.service(RouteGroupImpl.java:120)
	at com.inductiveautomation.ignition.gateway.dataroutes.RouteGroupCollectionServlet.serviceInternal(RouteGroupCollectionServlet.java:133)
	at com.inductiveautomation.ignition.gateway.dataroutes.AbstractRouteGroupServlet.service(AbstractRouteGroupServlet.java:40)
	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614)
	at org.eclipse.jetty.ee10.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1379)
	at org.eclipse.jetty.ee10.servlet.ServletHolder.handle(ServletHolder.java:736)
	at org.eclipse.jetty.ee10.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1614)
	at com.inductiveautomation.catapult.filters.GatewayFilter.doFilter(GatewayFilter.java:116)
	at jakarta.servlet.http.HttpFilter.doFilter(HttpFilter.java:97)
	at org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:208)
	at org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1586)
	at org.eclipse.jetty.ee10.servlet.ServletHandler$MappedServlet.handle(ServletHandler.java:1547)
	at org.eclipse.jetty.ee10.servlet.ServletChannel.dispatch(ServletChannel.java:819)
	at org.eclipse.jetty.ee10.servlet.ServletChannel.handle(ServletChannel.java:436)
	at org.eclipse.jetty.ee10.servlet.ServletHandler.handle(ServletHandler.java:464)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:575)
	at org.eclipse.jetty.ee10.servlet.SessionHandler.handle(SessionHandler.java:717)
	at org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1060)
	at org.eclipse.jetty.rewrite.handler.RewriteHandler$LastRuleHandler.handle(RewriteHandler.java:159)
	at org.eclipse.jetty.rewrite.handler.Rule$Handler.handle(Rule.java:108)
	at org.eclipse.jetty.rewrite.handler.HeaderPatternRule$1.handle(HeaderPatternRule.java:89)
	at org.eclipse.jetty.rewrite.handler.Rule$Handler.handle(Rule.java:108)
	at org.eclipse.jetty.rewrite.handler.HeaderPatternRule$1.handle(HeaderPatternRule.java:89)
	at org.eclipse.jetty.rewrite.handler.Rule$Handler.handle(Rule.java:108)
	at org.eclipse.jetty.rewrite.handler.HeaderPatternRule$1.handle(HeaderPatternRule.java:89)
	at org.eclipse.jetty.rewrite.handler.Rule$Handler.handle(Rule.java:108)
	at org.eclipse.jetty.rewrite.handler.HeaderPatternRule$1.handle(HeaderPatternRule.java:89)
	at org.eclipse.jetty.rewrite.handler.Rule$Handler.handle(Rule.java:108)
	at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:143)
	at org.eclipse.jetty.server.Handler$Sequence.handle(Handler.java:805)
	at org.eclipse.jetty.server.Handler$Sequence.handle(Handler.java:805)
	at org.eclipse.jetty.server.Server.handle(Server.java:182)
	at org.eclipse.jetty.server.internal.HttpChannelState$HandlerInvoker.run(HttpChannelState.java:662)
	at org.eclipse.jetty.server.internal.HttpConnection.onFillable(HttpConnection.java:418)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:322)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:99)
	at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:478)
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:441)
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:293)
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:201)
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:311)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:979)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1209)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1164)
	at java.lang.Thread.run(:0)
Caused by: java.util.NoSuchElementException: No value present
	at java.util.Optional.get(:0)
	at com.inductiveautomation.ignition.common.resourcecollection.json.ImmutableResourceSerializer.lambda$serialize$4(ImmutableResourceSerializer.java:89)
	at java.lang.Iterable.forEach(:0)
	at com.inductiveautomation.ignition.common.resourcecollection.json.ImmutableResourceSerializer.serialize(ImmutableResourceSerializer.java:86)
	at com.inductiveautomation.ignition.common.resourcecollection.json.ImmutableResourceSerializer.serialize(ImmutableResourceSerializer.java:23)
	at com.inductiveautomation.ignition.common.gson.internal.bind.TreeTypeAdapter.write(TreeTypeAdapter.java:88)
	at com.inductiveautomation.ignition.common.gson.Gson.toJson(Gson.java:842)
	at com.inductiveautomation.ignition.common.gson.Gson.toJsonTree(Gson.java:712)
	at com.inductiveautomation.ignition.common.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.serialize(TreeTypeAdapter.java:175)
	at com.inductiveautomation.ignition.common.resourcecollection.json.RuntimeResourceCollectionSerializer.lambda$serialize$3(RuntimeResourceCollectionSerializer.java:74)
	at java.util.concurrent.ConcurrentHashMap$ValuesView.forEach(:0)
	at java.util.Collections$UnmodifiableCollection.forEach(:0)
	at com.inductiveautomation.ignition.common.resourcecollection.json.RuntimeResourceCollectionSerializer.serialize(RuntimeResourceCollectionSerializer.java:73)
	at com.inductiveautomation.ignition.common.resourcecollection.json.RuntimeResourceCollectionSerializer.serialize(RuntimeResourceCollectionSerializer.java:25)
	at com.inductiveautomation.ignition.common.gson.internal.bind.TreeTypeAdapter.write(TreeTypeAdapter.java:88)
	at com.inductiveautomation.ignition.common.gson.Gson.toJson(Gson.java:842)
	at com.inductiveautomation.ignition.common.gson.Gson.toJsonTree(Gson.java:712)
	at com.inductiveautomation.ignition.common.gson.Gson.toJsonTree(Gson.java:689)
	at com.inductiveautomation.ignition.common.rpc.proto.BuiltinAdapters.fallbackSerializer(BuiltinAdapters.java:395)
	... 54 more

Ignition v8.3.0 (b2025091510)
Java: Azul Systems, Inc. 17.0.16

```

---

<div class="post-metadata">

**Author:** ![dillon](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dillon/32/81537_2.png) [@dillon](https://forum.inductiveautomation.com/u/dillon)\
**Post date:** [October 1, 2025, 3:48pm UTC](https://forum.inductiveautomation.com/t/ignition-8-3-project-load-issues-when-switching-git-branches/111132/6 "2025-10-01T15:48:01Z")

</div>

> [@cmallonee](#):
>
> Alternatively, you can manage the same through the UI by clicking the `Scan File System` button on the Projects page

Is this new to 8.3? 😱

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [October 1, 2025, 3:49pm UTC](https://forum.inductiveautomation.com/t/ignition-8-3-project-load-issues-when-switching-git-branches/111132/7 "2025-10-01T15:49:29Z")

</div>

Are you committing the `resource.json` file as well? Including updates to it?

That error message suggests that the `resource.json` file, which has a manifest of files in it, is pointing to a file, but when we try to retrieve data for that file, there's nothing there.

---

<div class="post-metadata">

**Author:** ![adrien.couturier](https://avatars.discourse-cdn.com/v4/letter/a/ed655f/32.png) [@adrien.couturier](https://forum.inductiveautomation.com/u/adrien.couturier)\
**Post date:** [October 1, 2025, 4:04pm UTC](https://forum.inductiveautomation.com/t/ignition-8-3-project-load-issues-when-switching-git-branches/111132/8 "2025-10-01T16:04:00Z")

</div>

Yes, this is included in my pending changes whenever I make changes to the project.

 ![resource.json](https://us1.discourse-cdn.com/inductiveautomation/original/3X/9/5/9564e650689f77cee7eeceee2540ee9e09121260.png)

However, the button `Scan File System Button` resolves this problem.

Now my changes are reflected in the main branch 🤔...

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [October 1, 2025, 4:11pm UTC](https://forum.inductiveautomation.com/t/ignition-8-3-project-load-issues-when-switching-git-branches/111132/9 "2025-10-01T16:11:48Z")

</div>

> [@adrien.couturier](#):
>
> Now my changes are reflected in the main branch 🤔...

Do you mean "now my changes from the main branch are reflected in Ignition"?

That's how it's supposed to work - Ignition isn't watching and reacting to the file system changing underneath it. You must invoke the scan for changes made to the file system to take effect.

---

<div class="post-metadata">

**Author:** ![adrien.couturier](https://avatars.discourse-cdn.com/v4/letter/a/ed655f/32.png) [@adrien.couturier](https://forum.inductiveautomation.com/u/adrien.couturier)\
**Post date:** [October 1, 2025, 5:31pm UTC](https://forum.inductiveautomation.com/t/ignition-8-3-project-load-issues-when-switching-git-branches/111132/10 "2025-10-01T17:31:15Z")

</div>

The changes were initiated in my `develop` branch and committed there. When I switch back to the `main` branch, which has no modifications, even after performing a `Scan File System`  
The changes from my `develop`branch are still present in the project while on the `main` branch checkout.

---

<div class="post-metadata">

**Author:** ![cmallonee](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/cmallonee/32/6416_2.png) [@cmallonee](https://forum.inductiveautomation.com/u/cmallonee)\
**Post date:** [October 1, 2025, 7:39pm UTC](https://forum.inductiveautomation.com/t/ignition-8-3-project-load-issues-when-switching-git-branches/111132/11 "2025-10-01T19:39:58Z")

</div>

> [@dillon](#):
>
> Is this new to 8.3? 😱

Yes.

---

<div class="post-metadata">

**Author:** ![cmallonee](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/cmallonee/32/6416_2.png) [@cmallonee](https://forum.inductiveautomation.com/u/cmallonee)\
**Post date:** [October 1, 2025, 7:41pm UTC](https://forum.inductiveautomation.com/t/ignition-8-3-project-load-issues-when-switching-git-branches/111132/12 "2025-10-01T19:41:30Z")

</div>

> [@adrien.couturier](#):
>
> The changes from my `develop`branch are still present in the project while on the `main` branch checkout.

If you look at the actual files on disk, do you see the changes from the `develop` branch?

---

<div class="post-metadata">

**Author:** ![adrien.couturier](https://avatars.discourse-cdn.com/v4/letter/a/ed655f/32.png) [@adrien.couturier](https://forum.inductiveautomation.com/u/adrien.couturier)\
**Post date:** [October 2, 2025, 1:32pm UTC](https://forum.inductiveautomation.com/t/ignition-8-3-project-load-issues-when-switching-git-branches/111132/13 "2025-10-02T13:32:04Z")

</div>

My bad.  
After running more tests, I found that branch switching works perfectly with project modifications. However, you need to press the `Scan File System` button before reopening the Designer.

Thank you all for your valuable help.
