If you want only those variables fixed as part of branching decisions, you can attach a node callback and use the getBranchVar() method (Java name) to get the variable that was fixed when the current node was created. It will be up to you to keep track of the sequence of variables fixed on the route to each node. One possible way is to use a branch callback to attach a list to each node (as "node data"). Another possible way is to use a key-value structure (in Java, I might use a HashMap<Integer, List<IloNumVar>>) to store the list of variables ("value") and the node number ("key", found using the getNodeId() method in Java). I think the latter is easier.
If you also want the variables fixed by other reductions (inferences) that CPLEX performs, I think you need to check at each node which variables have lower bound = upper bound. For this you need the getLBs() and getUBs() methods (again, Java names), which means you need a control callback of some type (perhaps a heuristic callback). Control callbacks can alter how CPLEX solves the problem, so you may take a performance hit for doing this.
#CPLEXOptimizers#DecisionOptimization