ANS Documentation

Improve This Doc
  • Cloud
  • Domains and DNS management
  • Backup and High Availability
  • eCommerce Stacks
  • Security
  • Email
  • Monitoring and usage management
  • Networking
  • Operating systems
    • Linux
      • Basics
      • Apache
      • Control Panels
      • FTP
      • Magento
      • Miscellaneous
      • MySQL
      • NGINX
      • PHP
      • PHP-FPM
      • Setting up Websites
      • NFS
      • VPN
      • Percona
      • SSH
      • SSL
      • Git
      • Redis
      • Elasticsearch
      • MongoDB
      • Ncdu
    • VMware ESXi
    • Windows
  • Webcelerator
  • MyUKFast
  • Home >
  • Operating systems >
  • Linux >
  • Git >
  • Using Git

Using Git¶

Setup¶

Firstly, you will need to have installed git on your local machine.

Set your name and email address using the following commands, commits are associated by these credentials:

git config --global user.name "Support"
git config --global user.email [email protected]

Cloning a repo¶

To start using a public repository, you can clone a repo to your local machine using either HTTPS or SSH. To get the full path navigate to the repo in GitHub or GitLab.

git clone https://github.com/path/to/repo
git clone ssh://[email protected]/path/to/repo.git

Git add, commit and push¶

Once you have made a change to the source code in your repos directory, use the git add command

git add .           # adds all changed files
git add filename    # adds only specified file
git add *           # wildcard, used for *.txt

Commit changes as often as possible and provide useful commit messages for the community

git commit -m "Updated README.md"

When you are ready to publish your new code, push it to the remote repo specifying the remote branch:

 git push origin master

Check your changes¶

It’s very important to know what you are committing and make sure what you think you are pushing is what you will push to the remote branch :

Git status checks working tree status - that is which files can be committed

git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#       new file:   .gitignore
#       new file:   example2.txt
#

Git diff does a comparison of the files in your repo since the last commit, and shows the differences

git diff
diff --git a/example2.txt b/example2.txt
index e69de29..3b18e51 100644
--- a/example2.txt
+++ b/example2.txt
@@ -0,0 +1 @@
+hello world

Branches¶

Ideally you would never be pushing to the master branch directly and instead branching off from the master committing and pushing your changes then merging back to the master branch.

Check existing branches

git branch -a

Create a new branch and switch to it

git branch newbranch
git checkout newbranch

You can then push the new branch to the repo instead of to the master branch

git push origin newbranch

First switch back to the master branch

git checkout master

Use git diff to show us the changes:

git diff master newbranch

Once we’re happy we can merge the changes and push the changes

git merge newbranch
git push origin master

Pulling¶

Use git pull to fetch and incorporate changes from the remote repository into your current branch.

git pull

Although Git is very good at combining multiple changes, running a git pull can sometimes result in merge conflicts depending on how far behind your branch is:

Auto-merging example2.txt
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.

If you open the offending file in a text editor, you’ll find an indication of the bits that are different, something like this:

<<<<<<< HEAD
hello world
=======
Hello World!
>>>>>>> 031389f2cd2acde08e32f0beb084b2f7c3257fff

Edit the bits from <<<<<<< to >>>>>>>, to make the file just as you want it.

Then the usual add, commit, push:

git add -A (add all files/changes to files)
git commit -m "Fix merge conflicts"
git push

Forking¶

When you don’t have permission to push to a repository directly, you will likely want to Fork the repository and start a new pull request to apply your suggested changes. Typically this would need to be approved before being merged into the original branch.

First look at the currently configured remote repositories

git remote -v
origin  https://github.com/path/to/repo.git (fetch)
origin  https://github.com/path/to/repo.git (push)

Now we will specify a new remote repository, we will call it upstream

git remote add upstream https://github.com/path/to/origional/repo.git

Have a look at the now configured remote repositories

git remote -v
origin  https://github.com/path/to/repo.git (fetch)
origin  https://github.com/path/to/repo.git (push)
upstream  https://github.com/path/to/origional/repo.git (fetch)
upstream  https://github.com/path/to/origional/repo.git (push)

Now we will fetch respective commits from the upstream/master

git fetch upstream
> remote: Counting objects: 75, done.
> remote: Compressing objects: 100% (53/53), done.
> remote: Total 62 (delta 27), reused 44 (delta 9)
> Unpacking objects: 100% (62/62), done.
> From https://github.com/path/to/origional/repo.git
>  * [new branch]      master     -> upstream/master

On your local master branch

git checkout master

Merge the commits from the upstream/master, this will leave all local changes untouched.

git merge upstream/master
Merge made by the 'recursive' strategy.
 path/to/changed/file.md | 148 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 path/to/another/changed/file.md  |   1 +
 2 files changed, 149 insertions(+)
 create mode 100644 path/to/changed/file.md

Remember to push your changes to your remote origin

git push origin

Next Article > Installing Git

  • Useful Links
  • SMB
  • Enterprise
  • Channel
  • Public Sector
  • ANS Data Centres
  • About ANS
  • Careers
  • Blog
  • Get in touch
  •  
  • Sales 0800 458 4545
  • Support 0800 230 0032
  • Get in touch

© ANS Group Limited | Terms and Conditions | Corporate Guidance | Sitemap
ANS Group Limited, registered in England and Wales, company registration number 03176761, registered office 1 Archway, Birley Fields, Manchester M15 5QJ