DEV Community

Nestor Solalinde
Nestor Solalinde

Posted on

4

GITHUB CHEAT SHEET

GITHUB CHEAT SHEET

STARTING A PROJECT

Forked projects or existing projects

cd ~/GITHUB/manolosolalinde
git clone <url>
git config credential.helper store
Enter fullscreen mode Exit fullscreen mode

Create remote repository

cd ~/GITHUB/manolosolalinde
mkdir <reponame>
# deprecated: curl -u 'manolosolalinde@gmail.com' -d '{"name":"'"${PWD##*/}"'"}' https://api.github.com/user/repos
# token from https://github.com/settings/tokens
curl -i -H "Authorization: token <GET FROM https://github.com/settings/tokens> " \
    -d '{
        "name": "'"${PWD##*/}"'", 
        "description": "This is your first repository",
        "homepage": "https://github.com",
        "private": true,
        "has_issues": true,
        "has_projects": true,
        "has_wiki": true
        }' \
    https://api.github.com/user/repos
echo "# TODO Readme" >> README.md
Enter fullscreen mode Exit fullscreen mode

Start Local Repository and push first commit

git init
git config credential.helper store
git add .
git commit -m "first commit"
git remote add origin https://github.com/manolosolalinde/${PWD##*/}.git
git push -u origin master
Enter fullscreen mode Exit fullscreen mode

Change local repository:

git remote show origin
git remote set-url origin https://github.com/manolosolalinde/${PWD##*/}.git
Enter fullscreen mode Exit fullscreen mode

DELETING ALL HISTORY

cd <localrepofolder>
rm -rf .git
Start Repository (as above)
git push -u --force origin master
Enter fullscreen mode Exit fullscreen mode

DELETING A FULL REMOTE REPO

cd <REPONAME>
curl -X DELETE -H 'Authorization: token replacewithtoken' https://api.github.com/repos/manolosolalinde/${PWD##*/}
Enter fullscreen mode Exit fullscreen mode

Get Delete Auth token
https://developer.github.com/v3/oauth_authorizations/#create-a-new-authorization

curl -v -u 'manolosolalinde@gmail.com' -X POST https://api.github.com/authorizations -d '{"scopes":["delete_repo"], "note":"token with delete repo scope"}' >> token.json
Enter fullscreen mode Exit fullscreen mode

INITIAL GLOBAL SETUP

git config --global user.name "Manuel Solalinde"
git config --global user.email "manolosolalinde@gmail.com"
Enter fullscreen mode Exit fullscreen mode

UNTRACK FILES already added to git repository based on .gitignore

git rm -r --cached .
git add .
git commit -m ".gitignore fix"
Enter fullscreen mode Exit fullscreen mode
rm is the remove command
-r will allow recursive removal
--cached will only remove files from the index. Your files will still be there.
The . indicates that all files will be untracked. 
You can untrack a specific file with git rm --cached foo.txt (thanks @amadeann).
Enter fullscreen mode Exit fullscreen mode

GENERAL PURPOSE

http://www.cheat-sheets.org/saved-copy/github-git-cheat-sheet.pdf

git config --global user.name "Manuel Solalinde"\
Sets the name you want atached to your commit transactions

git remote add origin git@github.com:manolosolalinde/newrepo.git\
Add origin for existing repository

git config --global user.email "manolosolalinde@gmail.com"\
Sets the email you want atached to your commit transaction

git init [project-name]\
Creates a new local repository with the specified name

git clone [url]\
Downloads a project and its entire version history

git status\
Lists all new or modified files to be commited

git add [file]\
Snapshots the file in preparation for versioning

git reset [file]\
Unstages the file, but preserve its contents

git diff\
Shows file differences not yet staged

git diff --staged\
Shows file differences between staging and the last file version

git commit -m "[descriptive message]"\
Records file snapshots permanently in version history

git branch\
Lists all local branches in the current repository

git branch [branch-name]\
Creates a new branch

git checkout [branch-name]\
Switches to the specified branch and updates the working directory

git merge [branch]\
Combines the specified branch’s history into the current branch

git branch -d [branch-name]\
Deletes the specified branch

Tags

more info on tags: https://git-scm.com/book/en/v2/Git-Basics-Tagging

git tag -a v1.4 -m "my version 1.4" \
Creates a tag

git tag
List all tags

git tag -l "v1.8.5*" \
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
Check all tags with that name

git show v1.4 \
Show Tag information

git log --graph --decorate --oneline
Show Branch History information

Working with multiple versions of a project

Interesting post: https://stackoverflow.com/questions/12153405/how-to-manage-multiple-versions-of-a-project

Example

In my case, I have two version of the same software that the basics are the same but each version has some different features.

So I create two worktree that means, create two relevant long-running branches beside the master.

    $git worktree add -b version-silver ..\version-silver master
    $git worktree add -b version-gold ..\version-gold master
Enter fullscreen mode Exit fullscreen mode

Then I have:

    $git branch
    master  # base stuff here
    version-silver # some normal features
    version-gold # some better features
Enter fullscreen mode Exit fullscreen mode

There is one repository, but I have 3 separate folders beside each other for each branch above. And make the common changes in master. then merge it with both other versions.

    cd master
    vim basic.cpp
    git add .
    git commit -m "my common edit on basic.cpp"
    cd ..\version-silver
    vim silver.cpp
    git add .
    git commit -m "my specific edit on silver.cpp"
    git merge master # here i get the basic.cpp latest changes for silver project
    cd ..\version-gold
    git merge master # here i get the basic.cpp latest changes for gold project
Enter fullscreen mode Exit fullscreen mode

Copy changes of only last commit from branch A to branch B

Stackoverflow - Commit to multiple branches at the same time

git checkout A
git commit -m "Fixed the bug x"
git checkout B
git cherry-pick A
Enter fullscreen mode Exit fullscreen mode

Problems

Problems with vscode and credentials

https://stackoverflow.com/questions/34400272/visual-studio-code-always-asking-for-git-credentials

You should be able to set your credentials like this:

git remote set-url origin https://<USERNAME>:<PASSWORD>@bitbucket.org/path/to/repo.git
Enter fullscreen mode Exit fullscreen mode

You can get the remote url like this:

git config --get remote.origin.url
Enter fullscreen mode Exit fullscreen mode

My problem was solved with:

cd "C:\Program Files\Git\mingw64\libexec\git-core"
git-credential-manager.exe uninstall
Enter fullscreen mode Exit fullscreen mode

Heroku

Simplify your DevOps and maximize your time.

Since 2007, Heroku has been the go-to platform for developers as it monitors uptime, performance, and infrastructure concerns, allowing you to focus on writing code.

Learn More

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay