git

View Git Stash Contents Without Applying to Codebase

Snippet

Use git stash list to view all stashes

Use git stash show with options to view a stash without applying it to the codebase.

# see a "git diff" of what's in the first stash 
git stash show -p stash@{0}

And, a shell script to view these. Save this into a file, chmod +x the file, and run in the terminal.

#!/bin/bash
 
readonly STASH="$1"
 
if [[ "xx${STASH}" != "xx" ]]; then
    git stash show -p stash@{${STASH}}
else
    git stash list
fi

Hide .git repo with Apache

Snippet

Solution 2.

Don't allow apache to serve anything from the .git repo that might be in the DocumentRoot . This is great because it hides that there even IS a git repo on the webserver.

Add this to the .htaccess in the DocumentRoot after the RewriteEngine On line.

RedirectMatch 404 /\.git

Git remove from repo, keeping on file system

Snippet

git rm will remove a file from the file system and the repository. If you want to keep the file locally (say, because you're adding it to the .gitignore file), remove it from the repository cache:

# for a file
git rm --cached filename
 
# for a directory
git rm --cached -r directoryname

Unstage a file in git

Snippet

Add a file / directory to staging

git add filePath

Now, if you want to remove it from stage, but want to keep the changes you've made locally.

# unstage the file, remove it from the index, don't remove it from the working directory
# a commit will remove it from the repo
$ git rm --cached filePath
 
# unstage a file, keep the local changes
# YOU NORMALLY WANT THIS ONE
$ git reset filePath

Remove deleted files from a git repository

Snippet

When updating a drupal site with drush pm-update, files can be removed. In order to remove them from the git repository, they need to be deleted with git rm. Doing them individually is painful, so do it on the command line with little effort.

Yes, those are backticks.

$ git rm `git st  | grep deleted | cut -f2 -d:`

List git remotes

Snippet

When talking remote repositories, origin is the most well known. We can have other remote repositories. Adding and listing them below.

$ git remote add remotename https://git.repository/path/to/my-repo.git
$ git remote -v
remote1 kitt@some.example.com:sg/my-repo.git (fetch)
remote1 kitt@some.example.com:sg/my-repo.git (push)
remotename https://git.repository/path/to/my-repo.git (fetch)
remotename https://git.repository/path/to/my-repo.git (push)

Pages