diff --git a/app/graphql/mutations/branches/create.rb b/app/graphql/mutations/branches/create.rb
index 6354976f1ea2f9a9529e0f174f8222e8a23633aa..a94d3966258f16e2b5528d9a71a4a963c7a16d6c 100644
--- a/app/graphql/mutations/branches/create.rb
+++ b/app/graphql/mutations/branches/create.rb
@@ -30,8 +30,6 @@ class Create < BaseMutation
       def resolve(project_path:, name:, ref:)
         project = authorized_find!(project_path)
 
-        context.scoped_set!(:branch_project, project)
-
         result = ::Branches::CreateService.new(project, current_user)
                    .execute(name, ref)
 
diff --git a/app/graphql/resolvers/branch_commit_resolver.rb b/app/graphql/resolvers/branch_commit_resolver.rb
index 11c49e17bc57a5a671bc80a87bf945749fc39901..4f6062a47812f935dadaa1284ab1fc7e02b35d60 100644
--- a/app/graphql/resolvers/branch_commit_resolver.rb
+++ b/app/graphql/resolvers/branch_commit_resolver.rb
@@ -10,8 +10,9 @@ def resolve(**args)
       return unless branch
 
       commit = branch.dereferenced_target
+      project = Project.find_by_full_path(commit.repository.gl_project_path)
 
-      ::Commit.new(commit, context[:branch_project]) if commit
+      ::Commit.new(commit, project) if commit
     end
   end
 end
diff --git a/changelogs/unreleased/mc-bug-remove-reliance-on-branch-context.yml b/changelogs/unreleased/mc-bug-remove-reliance-on-branch-context.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a4631a8394f54d7b31961b1447878c17c057e469
--- /dev/null
+++ b/changelogs/unreleased/mc-bug-remove-reliance-on-branch-context.yml
@@ -0,0 +1,5 @@
+---
+title: Resolve project from branch in commit resolver.
+merge_request: 55694
+author:
+type: fixed
diff --git a/lib/gitlab/git/commit.rb b/lib/gitlab/git/commit.rb
index 35c3dc5b0b3d47ee3266170c894c840c69342815..ff99803d8dec7b0b0f59db186ab8d83bb76ca2c3 100644
--- a/lib/gitlab/git/commit.rb
+++ b/lib/gitlab/git/commit.rb
@@ -20,6 +20,7 @@ class Commit
       ].freeze
 
       attr_accessor(*SERIALIZE_KEYS)
+      attr_reader :repository
 
       def ==(other)
         return false unless other.is_a?(Gitlab::Git::Commit)
diff --git a/spec/graphql/resolvers/branch_commit_resolver_spec.rb b/spec/graphql/resolvers/branch_commit_resolver_spec.rb
index 78d4959c3f96f87fb9dc77c256204b04036e8524..9d085fd19a6d7505053a11424701b8a12a691bc5 100644
--- a/spec/graphql/resolvers/branch_commit_resolver_spec.rb
+++ b/spec/graphql/resolvers/branch_commit_resolver_spec.rb
@@ -15,6 +15,10 @@
       is_expected.to eq(repository.commits('master', limit: 1).last)
     end
 
+    it 'sets project container' do
+      expect(commit.container).to eq(repository.project)
+    end
+
     context 'when branch does not exist' do
       let(:branch) { nil }