Phpstorm Stash



Set passwords for Git remotes

PhpStorm (and other IDEs based on the IntelliJ Platform) provides integration with several Version Control Systems, including Git, Subversion, Mercurial and others. Integration includes both support for features specific for each VCS as well as a unified interface and management for common VCS tasks. Shelve (stash) and unshelve (unstash.

Every time you interact with a remote Git repository (for example, during a pull, update, or push operation), it requires authorization. You can configure PhpStorm to remember your passwords so that you do not have to specify your credentials each time authorization is required.

The answer to this issue is the git stash command. Stashing takes the dirty state of your working directory — that is, your modified tracked files and staged changes — and saves it on a stack of unfinished changes that you can reapply at any time (even on a different branch). Mar 08, 2021 You can launch an SSH Session right from PhpStorm. By running commands in a dedicated SSH terminal, you can access data on a remote Web server or a Vagrant instance (virtual machine) via an SSH tunnel, mainly upload and download files. Prepare to work in the SSH Terminal. Learn how to use Git Stash in PhpStorm. Git Stash is a basic git feature but it is very powerful. It something we use almost every day. In this PhpStorm tuto. PhpStorm is being used by a handful of developers in our organization. We needed a product for the development of various PHP projects and PhpStorm is the best IDE for PHP/web development on the market in my opinion. Because of the plethora of great features Phpstorm offers, it really is an all in one solution for development.

Configure a password policy

  1. In the Settings/Preferences dialog Ctrl+Alt+S, select Appearance and Behavior | System Settings | Passwords on the left.

  2. Select how you want PhpStorm to process passwords for Git remote repositories:

    • In native Keychain: select this option to use native Keychain to store your passwords. This setting is only available for MacOS and Linux.

    • In KeePass: select this option to use the KeePass password manager to store your passwords. When you use the KeePass password manager, a master password will be used to access the file that stores individual passwords. Once PhpStorm remembers your passwords, it will not ask for them unless you need to access the passwords database. Enter the password that will be used to access the c.kdbx file in the MasterPassword field.

      You can change the default location of the c.kdbx file in the Database field.

      To import a c.kdbx file, click and select Import from the drop-down menu, or click and specify the path to a local file containing your passwords.

      If you want to remove the existing passwords from the database, select Clear.

    • Do not save, forget passwords after restart: select this option if you want your passwords to be reset after you close PhpStorm.

In Git, there are several ways to integrate changes from one branch into another:

Merge branches

Suppose you have created a feature branch to work on a specific task, and want to integrate the results of your work into the main code base after you have completed and tested your feature:

Merging your branch into master is the most common way to do this.

It is very common that while you are working in your feature branch, your teammates continue to commit their work to master:

When you run merge, the changes from your feature branch are integrated into the HEAD of the target branch:

Git creates a new commit (M) that is referred to as a merge commit that results from combining the changes from your feature branch and master from the point where the two branches diverged.

Merge branches

  1. In the Branches popup or in the Branches pane of the Git tool window, select the target branch that you want to integrate the changes to, and choose Checkout from the context menu to switch to that branch.

  2. Do one of the following:

    • If you do not need to specify options for the merge, select the branch that you want to merge into the current branch and choose Merge into Current from the submenu.

    • If you need to specify merge options, from the main menu choose VCS Git | Merge Changes to open the Merge dialog:

      Select the branch that you want to merge into the current branch, click Modify Options and choose from the following:

      • --no-ff: a merge commit will be created in all cases, even if the merge could be resolved as a fast-forward.

      • --ff-only: the merge will be resolved only if it is possible to fast-forward.

      • --squash: a single commit with all pulled changes will be created on top of the current branch.

      • -m: you will be able to edit the message for the merge commit.

      • --no-commit: a merge will be performed, but a merge commit will not be created so that you can inspect the result of the merge before committing.

    Click Merge.

If your working tree is clean (which means you have no uncommitted changes), and no conflicts occur between your feature branch and the target branch, Git will merge the two branches, and the merge commit will appear in the Log tab of the Git tool window Alt+9:

If conflicts occur between your branch and the target branch, you will be prompted to resolve them (see Resolve conflicts ). If there are unresolved conflicts left after a merge, the Merge Conflicts node will appear in the corresponding changelist in the Local Changes view with a link to resolve them.

Phpstorm Stash Box

If you have local changes that will be overwritten by merge, PhpStorm will suggest performing Smart merge. If you select this option, PhpStorm will stash uncommitted changes, perform merge, and then unstash the changes.

You can cancel an unfinished merge operation by selecting the Abort action from the Git Branches popup.

Rebase branches (git-rebase)

When you rebase a branch onto another branch, you apply the commits from the first branch on top of the HEAD commit in the second branch.

Suppose you have created a feature branch to work on a specific task and make several commits to that branch:

While you develop in your branch, your teammates continue to commit their work to master:

When you perform the rebase operation you integrate changes you have done in your feature branch to the master branch by applying your commits on top of the current HEAD commit in master:

Phpstorm Stash Changes

Rebase a branch on top of another branch

  1. From the main menu select Git | Rebase:

  2. From the list, select the target branch onto which you want to rebase the current branch:

  3. If you need to rebase the source branch starting from a particular commit instead of rebasing the entire branch, click Modify options and choose --onto. In the source branch field, enter the hash of the commit starting from which you want to apply the current branch to the new base:

    To copy a commit hash, select it in the Log, right-click it and choose Copy Revision Number.

  4. If the branch you want to rebase is not currently checked out, click Modify options, click Select another branch to rebase, and choose a branch from the list that appears:

    PhpStorm will check out this branch before starting the rebase operation.

  5. If you want to rebase all commits reachable in the branch, click Modify options and choose --root (for more information on this option, see git-rebase ).

  6. If you need to keep empty commits, which are commits that do not change anything from their parent, click Modify options and choose --keep-empty (for more information on this option, see git-rebase ).

  7. If you want to preserve merge commits during the rebase for the sake of keeping them in the branch history, click Modify options and choose --preserve-merges (this option is unavailable for interactive rebase).

  8. Click Rebase.

You can cancel an unfinished rebase operation or resume an interrupted rebase by selecting the Abort or Continue actions respectively from the top of the Git Branches popup.

Phpstorm Stash Activation

If you do not need to specify options for the rebase, you can initiate a rebase without invoking the rebase dialog. In the Branches popup or in the Branches pane of the Git tool window select a branch and choose one of the following actions:

  • Pull into Current Using Rebase (for remote branches) to fetch changes from the selected branch and rebase the current branch on top of these changes.

  • Checkout and Rebase onto Current (for local branches) to check out the selected branch and rebase it on top of the branch that is currently checked out.

Phpstorm

For details on how to skip or squash commit during a rebase, refer to Edit project history by performing interactive rebase.

Watch this video to see how a merge or a rebase operation are reflected in the Log tab of the Git tool window Alt+9:


Phpstorm Stash Server

Cherry-pick separate commits

Sometimes you only need to apply a single commit to a different branch instead of rebasing or merging an entire branch. This may be useful, for example, if you are working in a feature branch and want to integrate a hotfix from master that was committed after the two branches have diverged. Or you may want to backport a fix to a previous release branch. You can do so by using the Cherry-pick action.

The status of a cherry pick operation is displayed in the status bar. You can always abort an ongoing cherry-pick by selecting Abort Cherry-Pick in the Git Branches popup.

Apply a commit to another branch

Phpstorm Git Stash Changes

  1. In the Branches popup select the target branch that you want to integrate the changes to and choose Checkout from the popup menu to switch to that branch.

  2. Open the Git tool window Alt+9 and switch to the Log tab.

  3. Locate the commit containing the changes you want to cherry pick.

    You can filter commits by branch, user or date. You can also click on the toolbar and select Highlight | Non-Picked Commits button to grey out the commits that have already been applied to the current branch. If you know the commit hash, or are looking for a tagged commit, you can also use the Go to Hash / Branch / Tag action (press Ctrl+F in the Log tab of the Git tool window Alt+9, or click on the toolbar).

  4. Select the required commit. Use the information in the Commit Details area to make sure these are the changes you want to transfer to another branch.

  5. Click Cherry-pick on the toolbar. PhpStorm will display the Commit Changes dialog with the automatically generated commit message. If you want to review the changes or even modify the code before committing it to the target branch, you can do so in the difference viewer available from this dialog.

  6. When done, click Commit to cherry-pick the selected changes.

    Note that if you click Cancel, a separate changelist will be created with the selected changes that you can see in the Local Changes view. You can review these changes and commit them later if necessary.

  7. Push the changes to the target branch.

Apply separate changes

Imagine you've made some changes to a file that you want to apply to a different branch, but these changes were committed together with other modified files. PhpStorm lets you apply separate changes instead of cherry-picking an entire commit.

  1. In the Branches popup select the target branch that you want to integrate the changes to and choose Checkout from the popup menu to switch to that branch.

  2. Open the Git tool window Alt+9 and switch to the Log tab.

  3. Locate the commit that contains the changes that you want to apply.

    You can filter commits by branch, user or date. You can also click on the toolbar and select Highlight | Non-Picked Commits button to grey out the commits that have already been applied to the current branch. If you know the commit hash, or are looking for a tagged commit, you can also use the Go to Hash / Branch / Tag action (press Ctrl+F in the Log tab of the Git tool window Alt+9, or click on the toolbar).

  4. In the Commit Details pane on the right, select the files containing the changes you want to apply to the target branch and select Cherry-Pick Selected Changes from the context menu.

  5. In the dialog that opens, select an existing changelist or enter the name for a new changelist and click OK.

  6. Commit the changes and then push them to the target branch.

Apply separate files

In addition to applying separate changes to a single file, you can copy an entire file's contents to a different branch. This may be useful, for example, if the file you want to apply doesn't exist in the target branch, or if changes to it were made within several commits.

Phpstorm Stash Free

  1. Switch to the branch to which the changes will be applied.

  2. In the Branches popup or in the Branches pane of the Git tool window, select the branch that contains the file you want to apply and choose Show Diff with Working Tree from the context menu.

    The dialog that opens shows a list of all files that are different in the selected branch compared with the branch that is currently checked out:

    • Files that exist in the selected branch and are missing in the current branch are marked with grey.

    • Files that exist in the current branch but are missing in the selected branch are marked with green.

    • Files that contain differences between the selected and the current branch are marked with blue.

    You can click the Swap Branches link to change which branch is considered as a base against which you are comparing the other branch.

  3. Select the file that you want to apply to the current branch, and choose Get from Branch from the context menu or click on the toolbar .

  4. Commit and push the changes. PhpStorm will copy the entire contents of the file to the current branch.

Phpstorm Git Stash

You can also apply a file to another branch from the Project view: select the folder containing the file you want to copy, and choose Git | Compare with Branch | <branch_name> from the context menu, then click the Get icon on the toolbar.

Last modified: 06 April 2021