GIT - Assignment

·

7 min read

1] Create a github account.


2] Create a public and private repo Github.


3] Clone both the repos from github to local. Try cloning private repo without any errors in your local machines.


4] Git pull vs git fetch vs git clone

git clone :

when you want to create a local copy of a remote repository for the first time. This is typically done when you start working on a project.

It brings entire repository to the local

git pull :

It is used to get only new changes from central repository (Incremental changes)

git fetch :

git fetch means, only bringing changes from central repo to remote repo. These changes will not be integrated with the local repo


5] git merge vs git rebase

Both are used to integrated changes from one branch to another branch

Merge

  • It creats a new commit

  • Maintains the history of each branch but commits will be scattered

Rebase

  • Maintains linear commit history

  • Rewrites commit history


6] git checkout vs git swtich

git switch focuses only on switching the branch whereas git checkout can be used to checkout to another branch and also to a specific commit

git switch

  1. Branch Switching:

    • Primarily designed for switching between branches.

      COPY

          git switch <branch_name>
      
  2. Branch Creation:

    • Can be used to create a new branch and switch to it in one step.

      COPY

          git switch -c <new_branch_name>
      

git checkout

  1. Branch Switching:

    • Used for switching between branches.

      COPY

          git checkout <branch_name>
      
  2. File Discarding:

    • Used for discarding changes in the working directory.

      COPY

          git checkout -- <filename>
      
  3. Commit Checking Out:

Can also be used to check out a specific commit (in detached HEAD state).

COPY

git checkout <commit_hash>

7] git diff command for file and branch comparision

compare changes between files or branches in a Git repository

1. File Comparison:

a. Compare the Working Directory with the Last Commit:

COPY

git diff <filename>

This command shows the differences between the changes in the specified file in the working directory and the last committed version.

b. Compare Between Two Commits:

COPY

git diff <commit1> <commit2> -- <filename>

2. Branch Comparison:

a. Compare the Working Directory with Another Branch:

COPY

git diff <branch_name> -- <filename>

This command shows the differences between the changes in the specified file in the working directory and the version in another branch.

b. Compare Between Two Branches:

COPY

git diff <branch1> <branch2> -- <filename>

This command compares the specified file between two different branches. Replace <branch1> and <branch2> with the actual branch names.

c. Compare All Changes Between Two Branches:

COPY

git diff <branch1>..<branch2> -- <filename>

This command compares all changes between two branches for the specified file. The .. syntax is used to indicate the range between two branches


8] Merge-conflicts: why and what is the solution.

It is a event which takes place when git is unable to resolve the difference between 2 commits automatically. Git can automatically merge the changes only if the commits are on different lines or branches

Merge conflict can be resolved by mutual communication with the developers


9] git tag

In Git, a tag is a reference to a specific commit in the Git history. It's like a snapshot of a specific version of your code at a particular point in time. Tags are often used to mark significant points, such as release points or version numbers.

Here are some common tasks related to Git tags:

1. Creating a Tag:

  • To create a lightweight tag (just a name pointing to a specific commit), use:

    COPY

        git tag <tag_name>
    
  • To create an annotated tag (includes a message and additional information), use:

    COPY

        git tag -a <tag_name> -m "Tag message"
    

2. Listing Tags:

  • To list all tags in your repository, use:

    COPY

        git tag
    

3. Displaying Tag Information:

  • To display information about a specific tag, use:

    COPY

        git show <tag_name>
    

4. Pushing Tags to a Remote Repository:

  • Tags are not automatically pushed to remote repositories when you push changes. To push tags, use:

    COPY

        git push origin <tag_name>
    

    or to push all tags:

    COPY

        git push --tags
    

5. Deleting a Tag:

  • To delete a local tag, use:

    COPY

        git tag -d <tag_name>
    
  • To delete a remote tag, use:

    COPY

        git push --delete origin <tag_name>
    

6. Checking Out a Specific Tag:

  • To check out the code at a specific tag, use:

    COPY

        git checkout <tag_name>
    

7. Tagging a Specific Commit:

To tag a specific commit (using the commit hash), use:

COPY

git tag -a <tag_name> <commit_hash>

10] git revert vs git reset vs git restore

git restore

git restore is used to restore the working directory or individual files to a specific state.

git revert

git revert is used to create a new commit that undoes the changes made by a previous commit.

It does not modify existing commits but instead creates a new commit that undoes the changes introduced by a specific commit.

git reset

Depending on the options provided with git reset, it can be used to unstage changes, move the branch pointer, or even discard commits. Here are some common use cases:

1. Soft Reset:

  • A soft reset moves the branch pointer to a specific commit, but it leaves the changes in the working directory and the index (staging area).

    COPY

        git reset --soft <commit>
    

2. Mixed Reset (Default):

  • A mixed reset (default) also moves the branch pointer to a specific commit and resets the index (staging area) to match that commit. This effectively unstages changes but keeps them in the working directory.

    COPY

        git reset <commit>
    

3. Hard Reset:

  • A hard reset moves the branch pointer to a specific commit, resets the index to match that commit, and discards changes in the working directory. Be cautious when using a hard reset as it permanently discards changes.

    COPY

        git reset --hard <commit>
    

4. Unstage Changes:

  • To unstage changes without modifying the working directory, you can use a mixed reset (default) with the HEAD reference.

    COPY

        git reset HEAD
    

5. Discard Uncommitted Changes:

  • To discard uncommitted changes in both the index and the working directory, you can use a hard reset with the HEAD reference.

    COPY

        git reset --hard HEAD
    

6. Interactive Reset:

An interactive reset allows you to interactively choose which changes to reset. It opens an editor where you can select or edit the changes you want to keep.

COPY

git reset -i <commit>

11] Create a Pull request, Add collaborators and get atleast 2 reviews.


12] understand what is Github actions.

GitHub Actions is a platform provided by GitHub that allows you to automate various workflows, including building, testing, and deploying your code directly from your GitHub repository. With GitHub Actions, you can define custom workflows using YAML files, and these workflows are triggered by events like pushes, pull requests, or issue comments.

Here are some key concepts and features of GitHub Actions:

  1. Workflow:

    • A workflow is a set of customizable automation processes. Workflows are defined in YAML files within the .github/workflows directory of your repository.
  2. Events:

    • Workflows can be triggered by different events, such as pushes to specific branches, pull requests, releases, or scheduled intervals.
  3. Jobs and Steps:

    • A workflow consists of one or more jobs, and each job runs on a virtual machine or container. Jobs are made up of individual steps, and each step represents a single task.
  4. Actions:

    • Actions are reusable units of code that perform a specific task. You can use pre-built actions from the GitHub Marketplace or create your own custom actions.
  5. Runners:

    • Runners are the environments where jobs and steps run. GitHub provides hosted runners with various operating systems (Linux, Windows, macOS), or you can use self-hosted runners on your own infrastructure.
  6. Workflow Syntax:

    • Workflow configuration is written in YAML. It allows you to define the structure of your workflow, including jobs, steps, and their dependencies.

Benefits of GitHub Actions:

  • Integration with GitHub: Actions are tightly integrated with GitHub repositories, making it easy to set up and manage workflows.

  • Diverse Ecosystem: A vast ecosystem of pre-built actions is available on the GitHub Marketplace, covering a wide range of use cases.

  • Customizable: You can define complex workflows with multiple jobs, steps, and conditions to suit your specific development and deployment needs.

  • Free Tier: GitHub Actions offers a generous free tier for public repositories and a certain number of free minutes for private repositories.