Ramy's Blog

Ramy's Blog

Get to know Git

Get to know Git

Subscribe to my newsletter and never miss my upcoming articles

Building, Developing, and Evolving a product is something really fulfilling, how you work on your next big thing and seeing it grow day by day and you find people want to test your stuff and play with it and pay for it, is my definition of success, but I alone, won't be able to do so without giants who came before me and laid the pass to me and others like me

If I've seen further than others, it's by standing upon the shoulders of giants

Isaac Newton

Daily life of Software Engineers

During a normal day at work at any software project

You start to write code, this code gets iterated on, changed, deleted, or added to

These actions usually need some stuff to happen...

  1. Versioning
  2. Cloud Storage
  3. Secured Access
  4. Collaboration

Teams thrive on top of these 4 pillars, and losing 1 pillar, might kill the project

So, Why are they especially important?

1. Versioning

Having versions of your work can save you, your team and your company lots of hardships

For example, If i have a project like this

Screen_Shot_2021-06-18_at_2.46.05_PM.png

and I wanted to give my friends a copy of it with some special features like easter eggs for them to find

And then I wanted to share it with my colleagues but without any "hidden" features since it can be too personal or too casual for work

For such case, I'd make a copy of my project, and call it "-Colleagues Version" and rename my original project to "-Friends Version"

Screen_Shot_2021-06-18_at_2.52.17_PM.png

That would give me an easy way of identifying which version should I send as well as making projects isolated from each other, so instead of not having any versions or labels, and risking some discomfort 🤣

You can just organize your project more by labeling and versioning them

So, now that I made my Great Project with versions for family and colleagues and friends and maybe my cat 🐱

In a twist of events

My hard drive got fried... Bummer 🤷‍♂️

I lost my work, If only I had a backup!

The backup would've been great in such case, what's even better is a backup that you can access anywhere, and a backup that can not get fried on a hot summer day 🥵

That's where Cloud Storage comes to play

2. Cloud Storage

Screen_Shot_2021-06-18_at_3.21.52_PM.png

Now that I have my project versioned and every version is safe and sound on Google's Drive, What else can go wrong?

Then, My Project got its first supporter, My Cat!

3. Security

Screen_Shot_2021-06-18_at_3.35.22_PM.png

And not only does he want to support it by blocking me from working on it, but he also wants to work with me on it 🙂

And knowing "Mr. Peanut", nothing good come out of it... (Trust me, I know 👇)

Screen_Shot_2021-06-18_at_3.41.09_PM.png

So in order to make sure that my project is safe from Mr. Peanut's "little hands"

I need to make sure of the project security by ensuring that...

Mr. Peanuts won't invite his friends to my project so I make sure the damage done is not multiplied by how many cats Mr. Peanut can fit into the project (and I am afraid that is not too little) (2 little hands is always better than more)

So, I can share a password only I know, and Mr. Peanut can't, and also Mr. Peanut can only use it when he is accessing the project only

So, how do I do that?

LastPass is a really great solution for this case because, with LastPass, I can control who do I share my password with, and if they see it, or if they can copy it, see it or revoking it without them having no longer access to it

Screen_Shot_2021-06-18_at_3.55.38_PM.png

4. Collaboration

So, a couple of weeks in the future with Mr. Peanut as my partner-in-crime, it's time to merge our work, we got our local drives, and we are ready to sync our work together, I spent 2 days trying to selectively which changes he introduced and mine (I hate to say but, he did come with great stuff in the project)

Surely there is a way to do this in a better way, ryt?

Yes

What if I tell you that you can do all of the above with 1 simple system...?

Well... maybe not simple at first... but it gets simpler as you go, I promise

Enters Git

GitHub

Git can do everything above, literally, EVERYTHING above, and more...

Where to go from here?

Git is a really useful tool to learn, but it's not an easy task to master it, and the more you learn about it, the better and more valuable you become

Beginner:

  1. Learn Git Branching
  2. Git to Know Branching
  3. Git cheat sheet

Intermediate

  1. Git it done!
  2. A successful Git branching model (Git-Flow)

Advanced

  1. Continuous Glory
#git#github#version-control#software-engineering#dailydev
 
Share this
Proudly part of