Good advice given above. Here is my tuppence worth from my experience working on Lee Enfields. They used light and dark walnut, maple, beech, birch, coach wood, mahogany and Indian crap wood. All different grain, different density, different colours, pain in the arse to match up a set all same wood.
When I am at the refinishing stage, all my repairs have been done, wood has been stripped, and cleaned down to dry bare wood. Different ways of cleaning (whole new story) but I end up with dry bare wood all pieces with same roughness/smoothness grade of surface finish.
To see the wood true colour, a dab of water will show each piece of wood as it will look when finished. If colours are way out, I even things up by spritzing on some deck bleach, the stuff that is formulated for use on wood.
I rinse and when dry, I apply an alcohol based dye. Note that I say dye, not stain. The pigment in stain is relatively large particles as compared to dye. Dye will penetrate right into the wood cells and I found that it works best for me where an oil finish is to be used. The wood will still accept the oil whereas a stained surface sometimes won't as the stain seems to seal the surface. Dye soaks into the wood so won't wear off like stain, in fact, if I screw up and have to start over, it takes sandpaper to remove it .
Easiest source of a range of alcohol based dyes is at a hobby shop that deals with leather craft. Yup, shoe dye. I adjust my mix to give me the colour and shade that I want. Took me a while to figure it out. But a sure thing is to dye everything a dark colour such as saddle brown or a dark russet.
I then apply my boiled linseed oil finish as normal. Works for me.