-->

  • Full tutorial of Git and Github

     

    Full tutorial of Git and Github

     

     

    Git and Github

     

    Hello guys how's it going today I'm going to be telling you guys about git and github and give a fully practical tutorial all right so what is git now if you read the Wikipedia page you probably find that it says something like distributed version control and/or distributed version management system something along those lines now what does that mean if you're not in software development just getting started that Prabhas mean very much to you so let's start from the beginning what our source codes source codes are very simply just files in folders now like the way you have Word documents you also have your code is stored in files and folders just like Excel files or any other Word documents for that matter why do we need version control for your source code well in programming a lot of people work together on a lot of files.


    For example if you're building a web application or an iOS application or an Android application for that matter there's going to be a bunch of files and a bunch of folders now I know that's a very like generalized simplified way of looking at it but that's all it really is at the end of the day so if we have files and folders why can't we just work on files and folders and not worried about version control well here's the thing have your work on a Word document and when you share that with your friend and you share it using Dropbox and you both open the file at the same time what happens!! when you work on it together you override each other's changes now that's where version control comes in having version control allows you to track what you've worked on what your friends are working on so you don't clash the changes and you don't override each other changes and even if you do work on the same files the version control system will tell you that oh dude you're going to override your friends changes don't do that or if you want to you want to take a look at like you want to control how it merges together you can do that.



    So you can't do any of that stuff without version control that is the very reason why we use version control is to allow us to work together and collaborate in a more efficient manner now let's talk about the distributed part we have version control which is git which is installed in our local machine and then we have a you know your friend has version control that's gate that's installed on his machine how do you get them to sync up now they can actually talk together if you if you your friends computer and your computer are in the local network you guys can actually send each other you know git commits and it'll sync up just fine if provided you set it up right that's the beautiful thing about being distributed now the better way to work would be to have a central source something like github where you can just push your changes to there and then your friends can just pull those changes down from the cloud and then you guys work together in this centralized server or service it can be bitbucket or could be github or you can even host your own.

     

     

    git init - The git init command is used to initialise a blank repository. It creates a .git folder in the current working directory


    git add . - The git add command is used to add changes in the staging area. when the git add is used with the full stop, it's add all the files in the repository to the staging area.



    git commit - The git commit command is used to save the changes to the local repository. The command helps you keep record of all the changes made.


    git commit -m "Adding repo structure for trojan."
    git commit -m "Adding repo structure for status."


    git status - The git status command is used to display the state of the current repository and the staging area.



    git merge - The git merge command is used to integrate different branches into a single branch.

    The process of merging can be defined as a way of the putting a forth history back together.



    git push - The git push command is used to upload the content from the local repository to the remote repository. Full tutorial of Git and Github



     

     

    Practical Time

    So, lets move on first to check version of git ottherwise if git is not installed in your system, type this command and install it..

    For linux - sudo apt-get install git

    For windows - mac - other linux distroCLICK HERE

     

     

    First we check git version: $ git --version

     

     

    hackerboy@KumarAtulJaiswal ~/Desktop> git --version
    git version 2.30.2
    hackerboy@KumarAtulJaiswal ~/Desktop> 
    
    

     

     

    then we configuration our name and email becuase if any changes done by you so others will know that this line, features, branch etc you have added.




     

     

    hackerboy@KumarAtulJaiswal ~/Desktop> sudo git config --global user.name "Kumar Atul Jaiswal"
    hackerboy@KumarAtulJaiswal ~/Desktop> sudo git config --global user.email "kumaratuljaiswal222@gmail.com"
    
    
    

     

     

    if you want to check name and email are successfully set or not and even you want to edit so let's try this:




     

     

    hackerboy@KumarAtulJaiswal ~/Desktop> sudo git config --global user.name
    Kumar Atul Jaiswal
    hackerboy@KumarAtulJaiswal ~/Desktop> sudo git config --global user.email
    kumaratuljaiswal222@gmail.com
    hackerboy@KumarAtulJaiswal ~/Desktop> 
    hackerboy@KumarAtulJaiswal ~/Desktop> sudo git config --global --edit
    hackerboy@KumarAtulJaiswal ~/Desktop> 
    
    

     

     

    Now, we are creating project with this name and email: so, first of all we made a new directory and then if you want to that's dir convert into repository




     

     

    hackerboy@KumarAtulJaiswal ~/Desktop> 
    hackerboy@KumarAtulJaiswal ~/Desktop> mkdir learn-git
    hackerboy@KumarAtulJaiswal ~/Desktop> cd learn-git
    hackerboy@KumarAtulJaiswal ~/D/learn-git> 
    hackerboy@KumarAtulJaiswal ~/D/learn-git> sudo git init
    hint: Using 'master' as the name for the initial branch. This default branch name
    hint: is subject to change. To configure the initial branch name to use in all
    hint: of your new repositories, which will suppress this warning, call:
    hint: 
    hint:   git config --global init.defaultBranch <name>
    hint: 
    hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
    hint: 'development'. The just-created branch can be renamed via this command:
    hint: 
    hint:   git branch -m <name>
    Initialized empty Git repository in /home/hackerboy/Desktop/learn-git/.git/
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    

     

     

     

    with this (.git) you get to know which other directories, files, are in this repo because git is tracking them all




     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> ls -la
    total 20
    drwxr-xr-x  3 hackerboy hackerboy  4096 Jun  4 06:29 ./
    drwxr-xr-x 94 hackerboy hackerboy 12288 Jun  4 06:27 ../
    drwxr-xr-x  7 root      root       4096 Jun  4 06:29 .git/
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    
    

     

     

     

    Now, we are a new file(project file) and check status with git status for what changes(modified, delete, add) in this repo.




     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> git status
    On branch master
    
    No commits yet
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            add.py
    
    nothing added to commit but untracked files present (use "git add" to track)
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    
    
    

     

     

     

    see the above untracked file let's add the file.




     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> sudo git add add.py
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> git status
    On branch master
    
    No commits yet
    
    Changes to be committed:
      (use "git rm --cached <file>..." to unstage)
            new file:   add.py
    
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    
    
    

     

     

    Now, we are in the staging area. Staging area thats mean the place where we hold the own changes before commited.





     

     

     

     

     

    For commit after adding in staging area and if we ignore ( -m ) option, So any editor can open here like nano, vim, mousepad etc..so that's why we're using it and besically (-m) for message..




     

     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> sudo git commit -m "initial commit"
    [master (root-commit) e910f6b] initial commit
     1 file changed, 6 insertions(+)
     create mode 100644 add.py
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    
    

     

     

     

    Now, with this command "git log" we can check to how many commit in the previous time.. As if this author had committed this time and a hashcode is also generated here.




     

     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> git log
    commit e910f6b5f1208c697329ed4207d8cd57e598ee77 (HEAD -> master)
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 06:38:00 2021 +0530
    
        initial commit
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    
    

     

     

    So now we make some small changes inside the file and then with the help of "git status" command we see what it shows.




     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> git status
    On branch master
    Changes not staged for commit:
      (use "git add <file> .." to update what will be committed)
      (use "git restore <file>..." to discard changes in working directory)
            modified:   add.py
    
    no changes added to commit (use "git add" and/or "git commit -a")
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    
    
    

     

     

    Now we create a another new file OK! and then check once again


    modified file is add.py and
    untracked file is atul.py


    here, we some changes in add.py


     

     

     


     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> git status
    On branch master
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git restore <file>..." to discard changes in working directory)
            modified:   add.py
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            atul.py
    
    no changes added to commit (use "git add" and/or "git commit -a")
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    
    

     

     

    let's add this atul.py file


    If you want to add only one file now and not the other then you can do this.
    now atul.py file is added in staging are let's commit this.




     

     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> sudo git add atul.py
    [sudo] password for hackerboy: 
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> git status
    On branch master
    Changes to be committed:
      (use "git restore --staged <file>..." to unstage)
            new file:   atul.py
    
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git restore <file>..." to discard changes in working directory)
            modified:   add.py
    
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    
    
    

     

     

    sudo git commit -m "adding atul.py".




     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> sudo git commit -m "adding atul.py"
    [master 62ca770] adding atul.py
     1 file changed, 2 insertions(+)
     create mode 100644 atul.py
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    
    
    
    

     

     

    Now git status only one file (add.py) remaining here(this is modification file - add.py) .




     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> git status
    On branch master
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git restore <file>..." to discard changes in working directory)
            modified:   add.py
    
    no changes added to commit (use "git add" and/or "git commit -a")
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    
    

     

     

    So, if we check log file with git log command, as you can see here are two files commited.
    first one is atul.py and second one is starting commit..
    (HEAD is a pointer so it keeps on moving from commit to commit.
    .




     

     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> git log
    commit 62ca770ab7c38abccb8f456900a47a55b05c3bf5 (HEAD -> master)
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 07:06:28 2021 +0530
    
        adding atul.py
    
    commit e910f6b5f1208c697329ed4207d8cd57e598ee77
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 06:38:00 2021 +0530
    
        initial commit
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    
    
    

     

     

    so what happend next? You can also (git add . ) this will ensure that all the files will be added to the staging area. .




     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> sudo git add .
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> sudo git commit -m "added message in add.py"
    [master 744a177] added message in add.py
     1 file changed, 4 insertions(+), 4 deletions(-)
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    

     

     

    let's check git log command and here are 3 commited file...




     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> git log
    commit 744a177504dd38541098ea79a5bb8feb982442f4 (HEAD -> master)
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 07:15:00 2021 +0530
    
        added message in add.py
    
    commit 62ca770ab7c38abccb8f456900a47a55b05c3bf5
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 07:06:28 2021 +0530
    
        adding atul.py
    
    commit e910f6b5f1208c697329ed4207d8cd57e598ee77
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 06:38:00 2021 +0530
    
        initial commit
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    
    
    
    

     

     

    Now let's going back to past...Because some discard or change in the file. .




     

     

    commit e910f6b5f1208c697329ed4207d8cd57e598ee77
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 06:38:00 2021 +0530
    
        initial commit
    
    
    
    

     

     

    first you need to any hex code that you want to copy, so we copy the hash code of initial commit. .




     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> sudo git checkout e910f6b5f1208c697329ed4207d8cd57e598ee77
    Note: switching to 'e910f6b5f1208c697329ed4207d8cd57e598ee77'.
    
    You are in 'detached HEAD' state. You can look around, make experimental
    changes and commit them, and you can discard any commits you make in this
    state without impacting any branches by switching back to a branch.
    
    If you want to create a new branch to retain commits you create, you may
    do so (now or later) by using -c with the switch command. Example:
    
      git switch -c <new-branch-name>
    
    Or undo this operation with:
    
      git switch -
    
    Turn off this advice by setting config variable advice.detachedHead to false
    
    HEAD is now at e910f6b initial commit
    hackerboy@KumarAtulJaiswal ~/D/learn-git ((e910f6b5…))>
    
    

     

     

    After this as you can see this file has been deleted. .

     





     

     

     

    and if you want to back again in master..
    so type this command and as you can see (add.py and atul.py) file revert back and Switched to branch 'master'. .




     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git ((e910f6b5…))> sudo git checkout master
    Previous HEAD position was e910f6b initial commit
    Switched to branch 'master'
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    

     

     

    again deleted. .


     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> sudo git checkout e910f6b5f1208c697329ed4207d8cd57e598ee77
    Note: switching to 'e910f6b5f1208c697329ed4207d8cd57e598ee77'.
    
    You are in 'detached HEAD' state. You can look around, make experimental
    changes and commit them, and you can discard any commits you make in this
    state without impacting any branches by switching back to a branch.
    
    If you want to create a new branch to retain commits you create, you may
    do so (now or later) by using -c with the switch command. Example:
    
      git switch -c 
    
    Or undo this operation with:
    
      git switch -
    
    Turn off this advice by setting config variable advice.detachedHead to false
    
    HEAD is now at e910f6b initial commit
    hackerboy@KumarAtulJaiswal ~/D/learn-git ((e910f6b5…))>
    
    
    

     

     


     

     

     

     

    Now we slowly slowly come in the concept of branch and the head is inside this branch (HEAD detached at e910f6b) .




     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git ((e910f6b5…))> sudo git branch
    * (HEAD detached at e910f6b)
      master
    hackerboy@KumarAtulJaiswal ~/D/learn-git ((e910f6b5…))> 
    
    

     

     

    now we check git log and as you can see here are only commit file becuase we are in this branch (HEAD detached at e910f6b) and in this branch only 1 file is available. .




     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git ((e910f6b5…))> git log
    commit e910f6b5f1208c697329ed4207d8cd57e598ee77 (HEAD)
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 06:38:00 2021 +0530
    
        initial commit
    hackerboy@KumarAtulJaiswal ~/D/learn-git ((e910f6b5…))> 
    
    

     

     

    and if you want to check previous all commit So you have to come inside this branch(master) .




     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git ((e910f6b5…))> 
    hackerboy@KumarAtulJaiswal ~/D/learn-git ((e910f6b5…))> sudo git checkout master
    Previous HEAD position was e910f6b initial commit
    Switched to branch 'master'
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    

     

     

    All changes are here .



     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> git log
    commit e584eac2994d004ddfc1ce89f4d235bb25b9682c (HEAD -> master)
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 07:38:29 2021 +0530
    
        added message in add.py
    
    commit 744a177504dd38541098ea79a5bb8feb982442f4
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 07:15:00 2021 +0530
    
        added message in add.py
    
    commit 62ca770ab7c38abccb8f456900a47a55b05c3bf5
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 07:06:28 2021 +0530
    
        adding atul.py
    
    commit e910f6b5f1208c697329ed4207d8cd57e598ee77
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 06:38:00 2021 +0530
    
        initial commit
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    
    

     

     

    So, now we see the branch concept

    Each repository can have one or more branches. The main branch — the one where all changes eventually get merged back into, and is called master. This is the official working version of your project.
    This means that you want that there are many features in one branch and updating some things in one feature and does not have any side effect on other features, so that is why we can create or create many branches inside one branch..like tree concept .



    lets create another branch

    git branch <branch name>

     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> sudo git branch developer
    [sudo] password for hackerboy: 
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> git branch
      developer
    * master
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    
    
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> sudo git checkout developer
    Switched to branch 'developer'
    hackerboy@KumarAtulJaiswal ~/D/learn-git (developer)> 
    
    

     

     

    So, now we see the branch conceptgit checkout -b kumar/multiply
    okay here, why we are using -b, basically with -b command we are directly checkout (enter) into multiply branch and by this name(kumar) it is known that who is updating in what way in this project. .




     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (developer)> sudo git checkout -b kumar/multiply
    Switched to a new branch 'kumar/multiply'
    hackerboy@KumarAtulJaiswal ~/D/learn-git (kumar/multiply)> 
    
    

     

     


     

     

     


     

     

     

    git status



     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (kumar/multiply)> git status
    On branch kumar/multiply
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            multi.py
    
    nothing added to commit but untracked files present (use "git add" to track)
    hackerboy@KumarAtulJaiswal ~/D/learn-git (kumar/multiply)> 
    
    
    

     

     

    add and commit .




     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (kumar/multiply)> sudo git add multi.py
    hackerboy@KumarAtulJaiswal ~/D/learn-git (kumar/multiply)> sudo git commit -m "added multi.py"
    [kumar/multiply fe6515e] added multi.py
     1 file changed, 6 insertions(+)
     create mode 100644 multi.py
    hackerboy@KumarAtulJaiswal ~/D/learn-git (kumar/multiply)> 
    
    

     

     

    when we come back to developer branch as you can see multi.py file has been removed .




     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (kumar/multiply)> sudo git checkout developer
    Switched to branch 'developer'
    hackerboy@KumarAtulJaiswal ~/D/learn-git (developer)> 
    
    
    

     

     

     


     

     

     

     

    But now we want to bring the multi.py file inside the developer branch because now we think that our features are ready. sudo git merge kumar/multiply .




     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (developer)> sudo git merge kumar/multiply
    Updating e584eac..fe6515e
    Fast-forward
     multi.py | 6 ++++++
     1 file changed, 6 insertions(+)
     create mode 100644 multi.py
    hackerboy@KumarAtulJaiswal ~/D/learn-git (developer)> sudo git log
    commit fe6515e67a1b9015626fc3003dd27707ceae0ce7 (HEAD -> developer, kumar/multiply)
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 20:33:17 2021 +0530
    
        added multi.py
    
    hackerboy@KumarAtulJaiswal ~/D/learn-git (developer)> 
    
    

     

     

    And if we come to the master branch then you can see here that there is no multi.py file in the master branch because the master branch and other branch does not know what the developer branch is doing.
    There is no multi.py file. .




     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (developer)> sudo git checkout master
    Switched to branch 'master'
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> sudo git log
    commit e584eac2994d004ddfc1ce89f4d235bb25b9682c (HEAD -> master)
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 07:38:29 2021 +0530
    
        added message in add.py
    
    commit 744a177504dd38541098ea79a5bb8feb982442f4
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 07:15:00 2021 +0530
    
        added message in add.py
    
    commit 62ca770ab7c38abccb8f456900a47a55b05c3bf5
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 07:06:28 2021 +0530
    
        adding atul.py
    
    commit e910f6b5f1208c697329ed4207d8cd57e598ee77
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 06:38:00 2021 +0530
    
        initial commit
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    

     

     



    Now we merging all branch and file in one master branch.

    There is no multi.py file.

     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> sudo git merge developer
    Updating e584eac..fe6515e
    Fast-forward
     multi.py | 6 ++++++
     1 file changed, 6 insertions(+)
     create mode 100644 multi.py
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> git log
    commit fe6515e67a1b9015626fc3003dd27707ceae0ce7 (HEAD -> master, kumar/multiply, developer)
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 20:33:17 2021 +0530
    
        added multi.py
    
    commit e584eac2994d004ddfc1ce89f4d235bb25b9682c
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 07:38:29 2021 +0530
    
        added message in add.py
    
    commit 744a177504dd38541098ea79a5bb8feb982442f4
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 07:15:00 2021 +0530
    
        added message in add.py
    
    commit 62ca770ab7c38abccb8f456900a47a55b05c3bf5
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 07:06:28 2021 +0530
    
        adding atul.py
    
    commit e910f6b5f1208c697329ed4207d8cd57e598ee77
    Author: Kumar Atul Jaiswal <kumaratuljaiswal222@gmail.com>
    Date:   Sat Jun 5 06:38:00 2021 +0530
    
        initial commit
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    

     

     

    Now we want that there should be some such file which git is not able to track, it should not go to 'git echo system' So for this we can keep the file inside gitignore.

    This is a secret hash-key and I want that it should not be exposed or uploaded on GitHub because someone can misuse it, it is only for us developers to use in our project.

    .




    by command

    touch .gitignore

     

     


     

     

     

     

         hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> git status
    On branch master
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            .gitignore
            key.py
    
    nothing added to commit but untracked files present (use "git add" to track)
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
         
         

     

     

    I want that it should not be exposed or uploaded on GitHub so type file name (key.py) inside .gitignore file .





    and as you can see the file is hidden and git is not able to track.



     

     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> git status
    On branch master
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            .gitignore
    
    nothing added to commit but untracked files present (use "git add" to track)
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    

     

     

    and if you want hidden .gitignore file also and even git is not able to track.





     

    Now we talk about github 

     

     


     

    first of all we will create a new repo in github

     


     

     


    And as soon as the repository is created it will ask you to setup what you want to do, do you already have a repo or do you want to create.
     

     


     

     

    we have already a repo so that's why we using this setup...

     

     

     

     

     

    """
    …or push an existing repository from the command line
    
    git remote add origin https://github.com/whoiskumaratul/learn-git.git
    git branch -M main
    git push -u origin main
    
    """
    

     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> git remote -v
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> sudo git remote add origin https://github.com/whoiskumaratul/learn-git.git
    [sudo] password for hackerboy: 
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> git remote -v
    origin  https://github.com/whoiskumaratul/learn-git.git (fetch)
    origin  https://github.com/whoiskumaratul/learn-git.git (push)
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    

     

     

    if some type of error are coming, dont worry!!!



     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> sudo git branch -M master
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> git push -u origin main
    error: src refspec main does not match any
    error: failed to push some refs to 'https://github.com/whoiskumaratul/learn-git.git'
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master) [1]> 
    
    

     

     

    so don't worry type this command and give a username and password of github account.




     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> sudo git push -u origin master
    Username for 'https://github.com': whoiskumaratul
    Password for 'https://whoiskumaratul@github.com': 
    Enumerating objects: 15, done.
    Counting objects: 100% (15/15), done.
    Delta compression using up to 4 threads
    Compressing objects: 100% (13/13), done.
    Writing objects: 100% (15/15), 1.42 KiB | 242.00 KiB/s, done.
    Total 15 (delta 1), reused 0 (delta 0), pack-reused 0
    remote: Resolving deltas: 100% (1/1), done.
    To https://github.com/whoiskumaratul/learn-git.git
     * [new branch]      master -> master
    Branch 'master' set up to track remote branch 'master' from 'origin'.
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    

     

     

    after refreshing the page as you can see all files are uploaded.

     





     


     

    But if you want to add new file via command line as we have been doing so far

    let's create new file called as color.py 


     


     

     

     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> sudo git add color.py
    [sudo] password for hackerboy: 
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> sudo git commit -m "added color.py"
    [master f3dc945] added color.py
     1 file changed, 10 insertions(+)
     create mode 100644 color.py
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)                                                                                              hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> sudo git push -u origin master 
    Enumerating objects: 4, done.
    Counting objects: 100% (4/4), done.
    Delta compression using up to 4 threads
    Compressing objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 565 bytes | 282.00 KiB/s, done.
    Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
    To https://github.com/whoiskumaratul/learn-git.git
       fe6515e..f3dc945  master -> master
    Branch 'master' set up to track remote branch 'master' from 'origin'.
    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> 
    
    

     

     


     

     


    Now, we adding a developer branch

    sudo git checkout developer
    sudo git push -u origin developer

     

     

    hackerboy@KumarAtulJaiswal ~/D/learn-git (master)> sudo git checkout developer
    Switched to branch 'developer'
    hackerboy@KumarAtulJaiswal ~/D/learn-git (developer)> 
    hackerboy@KumarAtulJaiswal ~/D/learn-git (developer)> 
    hackerboy@KumarAtulJaiswal ~/D/learn-git (developer)> sudo git push -u origin developer
    Username for 'https://github.com': whoiskumaratul
    Password for 'https://whoiskumaratul@github.com': 
    Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
    remote: 
    remote: Create a pull request for 'developer' on GitHub by visiting:
    remote:      https://github.com/whoiskumaratul/learn-git/pull/new/developer
    remote: 
    To https://github.com/whoiskumaratul/learn-git.git
     * [new branch]      developer -> developer
    Branch 'developer' set up to track remote branch 'developer' from 'origin'.
    hackerboy@KumarAtulJaiswal ~/D/learn-git (developer)> 
    
    
    

     

     

     




     

     


    How to collaborate with multilple users ?


    if you want multiple users and developers to work on one project so you need to use open source.
     

    First you make the project open source and then people fork on that project and after that make some changes in it and send pull request.

    and second one is you need to add other person that who some changes and modified in project with collaborate.




    go to setting --> manage access --> add your collaborater --> and wait for the invitation to be accepted.
     

     



     

     invitation accepted Vola!!!!

     

     


     

     

     

     
     
     
     
     



     

     

     

    now I am going to my own account ( whoiskumaratul ) repo with 2nd account ( hackingtruthin )
     

     



     

    now i want to add some contribution as a hackingtruthin account. so first i need to fork of whoiskumaratul repo

     

     




    successfully forked




     

     

     

    then i am going to in terminal and edit my own name and email as a hackingtruthin account...


    type-

    sudo git config --global --edit 

    and change name and email and then one directory backed and checkout master branch with sudo git checkout master.

    so if any error are coming when you change master branch, do dont' worry go ahead and type next command 

    ls

    nano README.md (file that i want to some changes it)

    cat README.md

    sudo git status  

    as you can see this, modified file available here,so let's add and commit

    sudo git add README.md

    sudo git commit -m "readme.md updated"

    sudo git push

     

     

     

    hackerboy@KumarAtulJaiswal ~/Desktop (master)> 
    hackerboy@KumarAtulJaiswal ~/Desktop (master)> 
    hackerboy@KumarAtulJaiswal ~/Desktop (master)> sudo git config --global --edit
    hackerboy@KumarAtulJaiswal ~/Desktop (master)> 
    hackerboy@KumarAtulJaiswal ~/Desktop (master)> cd Lets-Contribution
    hackerboy@KumarAtulJaiswal ~/D/Lets-Contribution (main)> sudo git checkout master
    error: pathspec 'master' did not match any file(s) known to git
    hackerboy@KumarAtulJaiswal ~/D/Lets-Contribution (main) [1]> 
    
    
    hackerboy@KumarAtulJaiswal ~/D/Lets-Contribution (main) [1]> ls
    README.md
    hackerboy@KumarAtulJaiswal ~/D/Lets-Contribution (main)> nano README.md 
    hackerboy@KumarAtulJaiswal ~/D/Lets-Contribution (main)> cat README.md 
    # Lets-Contribution
    This is my first contribution and wait
    file will be updated...
    hackerboy@KumarAtulJaiswal ~/D/Lets-Contribution (main)> 
    hackerboy@KumarAtulJaiswal ~/D/Lets-Contribution (main)> sudo git status
    On branch main
    Your branch is up to date with 'origin/main'.
    
    Changes not staged for commit:
      (use "git add <file>>..." to update what will be committed)
      (use "git restore <file>..." to discard changes in working directory)
            modified:   README.md
    
    no changes added to commit (use "git add" and/or "git commit -a")
    hackerboy@KumarAtulJaiswal ~/D/Lets-Contribution (main)> sudo git add README.md
    hackerboy@KumarAtulJaiswal ~/D/Lets-Contribution (main)> sudo git commit -m "readme.md updated"
    [main 1831fb8] readme.md updated
     1 file changed, 1 insertion(+), 1 deletion(-)
    hackerboy@KumarAtulJaiswal ~/D/Lets-Contribution (main)> sudo git push
    Username for 'https://github.com': hackingtruthin
    Password for 'https://hackingtruthin@github.com': 
    Enumerating objects: 5, done.
    Counting objects: 100% (5/5), done.
    Delta compression using up to 4 threads
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (3/3), 271 bytes | 271.00 KiB/s, done.
    Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
    remote: Resolving deltas: 100% (1/1), completed with 1 local object.
    To https://github.com/hackingtruthin/Lets-Contribution.git
       6b5ddf9..1831fb8  main -> main
    hackerboy@KumarAtulJaiswal ~/D/Lets-Contribution (main)> 
    hackerboy@KumarAtulJaiswal ~/D/Lets-Contribution (main)> 
    hackerboy@KumarAtulJaiswal ~/D/Lets-Contribution (main)> ls
    README.md
    hackerboy@KumarAtulJaiswal ~/D/Lets-Contribution (main)> 
    

     

     

     

    in actual repo...he doesn't know about this...



     

     
     
     
    readme.md file has been updated and here you can see 3 commits showing

     
     






    The change can be added to the file of the Open by the Open Pull request.




     
     
     
     

    create pull request,

     

     


     

     

     

     

     


     

    Here you can give your message that you have changed the file

     

     

     


     

     

    and finally pull request submitted. After this, the owner will now check that the change made by you should be added to it in your project or not

     

     

     


     

     

     

    now what i see, i have to come a new pull request

    so let's check it. open request option and as you can see here are 1 pull requests

     





     

     

     

     


     

     

     

    then i check to what changes by them..

    go to file changes option

     

     

     

     


     

     


    then review and approve.


     

     

     


     

     

     

    and then i submitted with appreciation message.

     

     

     


     

     

     

     

     
    then merge pull request and confirm it


     

     





    and go back to our account whoiskumaratul
    and check readme.md file






      

     

     


    then if we going to commit section, here you can see what changes made by someone or ownself.
     

     




     

     

    So in the same way you can modify, delete, add new file, features someone's project added by these steps
    same repeate


    fork
    clone
    changes
    push
    pull request



     

     



    Disclaimer

     

    This was written for educational purpose and pentest only.
    The author will not be responsible for any damage ..!
    The author of this tool is not responsible for any misuse of the information.
    You will not misuse the information to gain unauthorized access.
    This information shall only be used to expand knowledge and not for causing  malicious or damaging attacks. Performing any hacks without written permission is illegal ..!


    All video’s and tutorials are for informational and educational purposes only. We believe that ethical hacking, information security and cyber security should be familiar subjects to anyone using digital information and computers. We believe that it is impossible to defend yourself from hackers without knowing how hacking is done. The tutorials and videos provided on www.hackingtruth.in is only for those who are interested to learn about Ethical Hacking, Security, Penetration Testing and malware analysis. Hacking tutorials is against misuse of the information and we strongly suggest against it. Please regard the word hacking as ethical hacking or penetration testing every time this word is used.


    All tutorials and videos have been made using our own routers, servers, websites and other resources, they do not contain any illegal activity. We do not promote, encourage, support or excite any illegal activity or hacking without written permission in general. We want to raise security awareness and inform our readers on how to prevent themselves from being a victim of hackers. If you plan to use the information for illegal purposes, please leave this website now. We cannot be held responsible for any misuse of the given information.



    - Hacking Truth by Kumar Atul Jaiswal



    I hope you liked this post, then you should not forget to share this post at all.
    Thank you so much :-)

     

     


  • 0 comments:

    Post a Comment

    For Any Tech Updates, Hacking News, Internet, Computer, Technology and related to IT Field Articles Follow Our Blog.