Question: Is there a way to work on the same file but on different features/branches in GIT?

I'm sure there is a way but what is the easiest?  

I don't want to stash my changes as that's cumbersome. 

With SVN I was able to work on 2 separate branches as 2 different entities without any intervention and easy to switch between the two.

Answer: 
use the git worktree.

***`git worktree`***
====================

Git worktree was introduced in 2007 under the `contrib` folder in the git repo and was called `new-workdir`. 

In **git V2.5** it was named `worktree` and it allows you to have multiple instances of the same repository across different folders.

for example:

```
git worktree add <second path>

```

will create another folder on your computer which allows you to work on different branch simultaneously.

---

If you want to remove the worktree, delete the folder and then execute `git worktree prune` which will remove the worktree reference.

> 
> ***`prune`***  
> 
>  Prune working tree information in `$GIT_DIR/worktrees`.
> 
> 
> 

### Creating new worktree

```
# create new branch inside the worktree folder 
git worktree -b <branch name> <path>

```

### Removing worktree

```
# do your code and once you have done 
# commit, push and now you can delete your folder
rm -rf <path>

# Tell git to remove the workdir copy
git worktree prune

```

**Update**
In the coming versions (git 2.17+) a `git worktree delete` will be exposed as a new command for deleting worktrees.

### Listing worktree

[![enter image description here](https://i.stack.imgur.com/PCngz.png)](https://i.stack.imgur.com/PCngz.png)

---

If you use rebase later on:

* Note: ([Since Git 2.7](https://github.com/git/git/blob/master/Documentation/RelNotes/2.7.0.txt))  

you can also use the `git rebase [--no]-autostash` as well.
From what I understood from the comments section: is that you want to have 2 different "versions" of the same file. (As you mentioned on the comments, having file.txt have "AAAAAAA" line on one, and "BBBBBBB" on one, but not "AAAA").

This CAN be achieved by branching very easily. 

Before starting your work, you will be "standing" on one branch (probably `master`). You can at this point create a new branch `git checkout -b feature1` (This command creates and switches you to branch feature1). where you will make some changes to file.txt. Say you will write "AAAAAA". Then, you will have to commit it. `git commit -a -m "Added the AAAA line"`. 
If you now `git checkout master` (you go back to master). Your file WON'T have "AAAAA" written on it, you can then do other changes to this file (either on this branch, or another branch). You can write "BBBBBBB" to this file, and you will have 2 "versions" of the same file "file.txt", one will have "AAAA" (the one on branch feature1) and the other on master will have BBBB. 

Note: I created a scenario where you haven't already changed the file originally, but if you have, there are also ways of achieving this by branching. You should **def** read <https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging>