Based on a suggestion from another user:
I tried upgrading the Embedded Git used by SourceTree
(Tools => Options => Git => Update Embedded Git)
And after that, my Push Dialog showed all the branches once again.
To avoid such problem in the future, SourceTree upgrade process should detect version of Embedded Git and notify user when the Embedded Git also needs to be updated
However, there still appears to be problems with the Push Dialog:
Push Dialog should show my recent local branch as available to push to remote
Push Dialog does not show my recently created local branch
In my case upgrading the embedded version of git solved the issue, but I had to switch to actually use the embedded version since I was using the system git at 2.13.1. Updating the system git also worked. So apparently you need to update to git >2.13.1
I can't reproduce the issue reported by @Phileo99 in his update, neither with the embedded git nor the system git. However when I click the local branch to push, it doesn't show the new branch name in the remote branch column like it used to do with earlier versions. The push works however, and after pushing, the name is shown on subsequent pushes.
I found some related bug reports:
It looks like the entire push menu doesn't work correctly for some time. Initially, I no longer had auto-completion for remote names of untracked branches (3.2.5). Then, in 3.2.6, this happened.
I have exactly the same issue. This occurred sometime after the automatic update to 3.2.6, although it had been working fine for a few days after the update.
Pushing via the command line still works, and all of my remote branches appear, but no branches show up in the Push window. Fetching does nothing. The same problem affects all of my remote accounts, both on Bitbucket and GitHub.
I've tried most of the fixes here, nothing works; updated SourceTree to the latest version - currently 3.4.2; I'll explain a lot since I'm a noob, so may others can check this fix:
A. As you can see, there are no branches on the right menu; also, the push dialog menu looks like in the picture of the original post;
B. Make sure you are on the local repository, within SourceTree; click Terminal, which opens the command line interface:
In terminal, do the following commands:
$ git status #list the status of git
$ git add <file_name> # Example: git add file_2.txt
$ git commit -m "<msg>" # Example: git commit -m "second file to upload, one more line"
$ git push origin <branch_name> # Example: git push 2021-test-v2 master # aka push to remote repository 2021-test-v2 and brunch master;
Last command output should be like:
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 253 bytes | 253.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://bitbucket.org/<your account or username here>/2021-test-v2
* [new branch] master -> master
C. Now you should have the branches shown on the workspace of SourceTree
D. Go on the local repository folder; create a new file, let's say file3.txt;
Go/open again SourceTree, select local repository, see the newly created file3.txt; click on it, choose Stage Selected, write something on the Comment window, click "Commit" button below the comment section.
E. Go on the left menu/ workspace, see the master branch additional sign and Push button with 1 task waiting;
F. Make sure you have the last line selected, press Push
G. Now, you should have the possibility to choose the remote repository and branches;
The Push button will still show 1 task to complete, but the file will be uploaded to the cloud repository; check that by going to bitbucket.org/your account / your repository , master branch or whatever you selected, the file should be there.
I think most issues noted here have to do with a disparity between the sourcetree version and the git version in use.
Be aware that sourcetree is nothing but a UI wrapper around git. Some of the issues occurring have nothing to do with sourcetree itself, but with the installed git and it's configuration.
The second thing to be aware of is that sourcetree comes with an embedded version of git but that if you have git installed separately you can also use the 'system version' of git. This setting is available in the git tab of the settings dialog. Here you can also update the embedded git version.
Personally I prefer using the system git, since I have git installed through homebrew, and it gets updated automatically whenever I do a brew update/upgrade, which I do a couple of times a week anyway.
After my initial issues with branches not showing up properly in the push dialog, I could solve these by upgrading the git version in use, and I have never experienced similar issues since (I've used sourcetree extensively both on Windows and on MacOS).
A final thing to be aware of is that sourcetree is a free program and that there is a multitude of similar - free - solutions available (VS Code has excellent git clients, both built in and as extensions for example) so you're not obliged to use sourcetree. If it doesn't work for you find another git client that does.
I've been fixing this issue either by upgrading git version or by re-installing SourceTree.
But yesterday issue reappeared after update to newer version and now nothing helps.
I'm done with SourceTree. Going to find the replacement (Fork preliminary).
I already suggested to add "Console" window to let users track what ST communicates to git. W/o that it is impossible to guess what goes wrong. Nobody listens.
I was also having a problem with the Push since I upgraded to the latest Sourcetree 3.4.2 this morning.
Was about to give up after 3 hours of farting around trying about every solution mentioned here, such as:
I followed the advice from the first post in this thread and upgraded to the latest embedded Git but that didn't fix the issue and now just noticed that I cannot even push from the command line either.
Trying to push from the command line caused a couple of CredentialHelperSelector forms to pop up asking me to select a credential helper: and I have no idea which of the 10 options I want.
Found an article that seemed to say we want the "manager" option.
I really am amazed and disgusted that this problem that although was originally reported in Aug 2019, at least 18 months ago, that Atlassian hasn't been able, or hasn't bothered to release a fix for this. There is not even a post here from Atlassian with the definitive answer if there is one.
Nothing worked, the "Push" button at the top never worked right, never showed any branches to push, until AFTER:
I used the right click on the branch and selected the push option I wanted, such as "Push to origin/master (tracked)" which then proceeded to pop a push Dialog with all the possible branches to select from were properly displayed!
Then using the "Push" button there worked except now the CredentialHelperSelector Dialog popped several times where I selected the "manager" option and then the push finally succeeded!
Then after that suddenly the "Push" button at the top started working right! That is it starting showing all the branches that can be pushed as expected instead of none of them. But the CredentialHelperSelector kept popping up until I finally checked the "[ ] Always use this from now on" option there.
This is certainly a Sourcetree bug, that is still in the product. The bug is that whereas Sourcetree knows the branches and they are listed on the panel on the left, the "Push" button at the top fails to discover and present them in its dialog for the push operation, this is probably a cache problem because once you use a right click Push command from the left panel the top "Push" button starts working again, for all the repo's!