<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Muhammad Umar Khan</title>
    <description>The latest articles on DEV Community by Muhammad Umar Khan (@mumarkhan999).</description>
    <link>https://dev.to/mumarkhan999</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F353433%2F831c4a18-818f-4f05-8126-bdea7acfe1bd.jpeg</url>
      <title>DEV Community: Muhammad Umar Khan</title>
      <link>https://dev.to/mumarkhan999</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mumarkhan999"/>
    <language>en</language>
    <item>
      <title>Power of - (hyphen) and git</title>
      <dc:creator>Muhammad Umar Khan</dc:creator>
      <pubDate>Thu, 27 Jul 2023 09:35:57 +0000</pubDate>
      <link>https://dev.to/mumarkhan999/power-of-hyphen-and-git-2ilg</link>
      <guid>https://dev.to/mumarkhan999/power-of-hyphen-and-git-2ilg</guid>
      <description>&lt;p&gt;The use of &lt;code&gt;-&lt;/code&gt; with some git commands can really make our life easy. I am listing down some of the commands with which you can use &lt;code&gt;-&lt;/code&gt; and make your life a lot easy.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Fetch something from another branch of git
&lt;/h3&gt;

&lt;p&gt;Let's say you have two different git branches in your working directory.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;master&lt;/li&gt;
&lt;li&gt;develop&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You have a file/folder named &lt;code&gt;extras&lt;/code&gt; in &lt;strong&gt;master&lt;/strong&gt; branch. Now, you want to have that same file/folder in develop branch as well. There are two different trivial solutions of doing it. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You can merge master into develop&lt;/li&gt;
&lt;li&gt;Or you can copy paste that file/folder&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;But we are very lazy we don't want to merge or copy-paste either.&lt;br&gt;
We have a very useful command for that &lt;br&gt;
Before run this command you should be on the destination branch&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout master &lt;span class="nt"&gt;--&lt;/span&gt; extras
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Checkout to the previous branch
&lt;/h3&gt;

&lt;p&gt;Let's say your have two branches named:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;abc/add-feature1-to-add-accessibility&lt;/li&gt;
&lt;li&gt;abc/add-feature2-to-add-scalibility&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's say, currently, you're on &lt;code&gt;feature1&lt;/code&gt; branch. Then you switch to &lt;code&gt;feature2&lt;/code&gt; branch using &lt;code&gt;git checkout &amp;lt;BRANCH_NAME&amp;gt;&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;Now you want to go back to &lt;code&gt;feature1&lt;/code&gt; branch. Well what you will do is use the same &lt;code&gt;checkout&lt;/code&gt; command we used earlier with the &lt;code&gt;feature1&lt;/code&gt; branch name.&lt;/p&gt;

&lt;p&gt;But WAIT!!!&lt;/p&gt;

&lt;p&gt;There's another way of doing it. Just type the &lt;code&gt;checkout&lt;/code&gt; command with &lt;code&gt;-&lt;/code&gt; instead of &lt;code&gt;branch name&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git checkout -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And here we go we will simply checkout to the previous branch where we were before checking out to the current branch.&lt;/p&gt;

</description>
      <category>git</category>
      <category>bash</category>
      <category>github</category>
    </item>
    <item>
      <title>Git bloom</title>
      <dc:creator>Muhammad Umar Khan</dc:creator>
      <pubDate>Thu, 12 Aug 2021 10:35:38 +0000</pubDate>
      <link>https://dev.to/mumarkhan999/git-bloom-395h</link>
      <guid>https://dev.to/mumarkhan999/git-bloom-395h</guid>
      <description>&lt;p&gt;This post contains the collection of examples of major git cli commands that we normally use in our daily office work. I have grouped them and organised in such a way that it will be easy to remember them and utilise them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pictorial representation
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnpd8kfovuseixz3jdhjd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnpd8kfovuseixz3jdhjd.png" alt="image"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsr9t25dir4yv2nniu68m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsr9t25dir4yv2nniu68m.png" alt="image"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpfo4wb64u0vik65viipr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpfo4wb64u0vik65viipr.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Startup
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;To turn any &lt;code&gt;directory&lt;/code&gt; into &lt;code&gt;git repo&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;init&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;After that add &lt;code&gt;remote&lt;/code&gt; of any &lt;code&gt;github&lt;/code&gt; repo to link your repo to remote&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;or&lt;/code&gt; You can just &lt;code&gt;clone&lt;/code&gt; a repo if you have any
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;clone&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;your&lt;/span&gt; &lt;span class="kd"&gt;github&lt;/span&gt; &lt;span class="kd"&gt;repo&lt;/span&gt; &lt;span class="kd"&gt;url&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  To view &lt;code&gt;logs&lt;/code&gt;
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;log&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  To check &lt;code&gt;status&lt;/code&gt; of tracked / untracked files
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;status&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Remotes
&lt;/h2&gt;
&lt;h3&gt;
  
  
  List down all the remotes information
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;remote&lt;/span&gt; &lt;span class="na"&gt;-vv
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Adding a &lt;code&gt;new remote&lt;/code&gt;
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;remote&lt;/span&gt; &lt;span class="kd"&gt;add&lt;/span&gt; &lt;span class="kd"&gt;origin&lt;/span&gt; &lt;span class="kd"&gt;git&lt;/span&gt;@github.com:mumarkhan999/css&lt;span class="na"&gt;-tricks&lt;/span&gt;.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Edit an &lt;code&gt;already added remote&lt;/code&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Here &lt;code&gt;origin&lt;/code&gt; is the name of the &lt;code&gt;remote&lt;/code&gt; that you wanna edit
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;remote&lt;/span&gt; &lt;span class="kd"&gt;set&lt;/span&gt;&lt;span class="na"&gt;-url &lt;/span&gt;&lt;span class="kd"&gt;origin&lt;/span&gt; &lt;span class="kd"&gt;git&lt;/span&gt;@github.com:mumarkhan999/elephant&lt;span class="na"&gt;-fight-in-flex-layout&lt;/span&gt;.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;Remove&lt;/code&gt; already added origin
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You will replace &lt;code&gt;origin&lt;/code&gt; with your remote name
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;remote&lt;/span&gt; &lt;span class="kd"&gt;remove&lt;/span&gt; &lt;span class="kd"&gt;origin&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;Fetch&lt;/code&gt; data from &lt;code&gt;remote&lt;/code&gt;
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;fetch&lt;/span&gt; &lt;span class="kd"&gt;origin&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;it will bring branch names, meta data e.t.c.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Branching
&lt;/h2&gt;
&lt;h3&gt;
  
  
  List down &lt;code&gt;local branches&lt;/code&gt;
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;branch&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  List down all branches
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;branch&lt;/span&gt; &lt;span class="na"&gt;-a
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Creating a branch
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;branch&lt;/span&gt; &lt;span class="kd"&gt;my_new_branch&lt;/span&gt;
&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;checkout&lt;/span&gt; &lt;span class="kd"&gt;my_new_branch&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Creating and checking out branch in &lt;code&gt;1 step&lt;/code&gt;
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;checkout&lt;/span&gt; &lt;span class="na"&gt;-b &lt;/span&gt;&lt;span class="kd"&gt;my_new_branch&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Creating a branch from &lt;code&gt;another branch&lt;/code&gt; not from the current one
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;checkout&lt;/span&gt; &lt;span class="na"&gt;-b &lt;/span&gt;&lt;span class="kd"&gt;my_new_branch&lt;/span&gt; &lt;span class="kd"&gt;not_current_branch_name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Checkout to the last branch which you were on &lt;code&gt;without  name&lt;/code&gt;
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;checkout&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Print &lt;code&gt;current branch&lt;/code&gt; name
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;rev&lt;/span&gt;&lt;span class="na"&gt;-parse --abbrev-ref &lt;/span&gt;&lt;span class="kd"&gt;HEAD&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Pushing a local branch to a remote branch having different name
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;checkout&lt;/span&gt; &lt;span class="na"&gt;-b &lt;/span&gt;&lt;span class="kd"&gt;my_local_master&lt;/span&gt; &lt;span class="kd"&gt;origin&lt;/span&gt;&lt;span class="na"&gt;/master
&lt;/span&gt;...
&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;push&lt;/span&gt; &lt;span class="kd"&gt;origin&lt;/span&gt; &lt;span class="kd"&gt;my_local_master&lt;/span&gt;&lt;span class="nl"&gt;:master&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You can even push different branch to a different branch on remote&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;push&lt;/span&gt; &lt;span class="kd"&gt;origin&lt;/span&gt; &lt;span class="kd"&gt;develop&lt;/span&gt;&lt;span class="nl"&gt;:master&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will make the master on remote to the exact replica of develop from local&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;Force&lt;/code&gt; push
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;push&lt;/span&gt; &lt;span class="kd"&gt;origin&lt;/span&gt; &lt;span class="kd"&gt;branch_name&lt;/span&gt; &lt;span class="na"&gt;-f
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;Fetch&lt;/code&gt; and &lt;code&gt;Pull&lt;/code&gt; of branch
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;fetch&lt;/code&gt; will just bring your branch from remote
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;fetch&lt;/span&gt; &lt;span class="kd"&gt;origin&lt;/span&gt; &lt;span class="kd"&gt;develop&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;pull&lt;/code&gt; will &lt;code&gt;fetch&lt;/code&gt; as well as &lt;code&gt;merge&lt;/code&gt; the incoming data into &lt;code&gt;current branch&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;pull&lt;/span&gt; &lt;span class="kd"&gt;origin&lt;/span&gt; &lt;span class="kd"&gt;develop&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;code&gt;pull&lt;/code&gt; with default which is &lt;code&gt;--merge&lt;/code&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;If you pull remote changes with the flag --merge, which is also the default, then your local changes are merged with the remote changes. This results in a merge commit that points to the latest local commit and the latest remote commit.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;pull&lt;/span&gt; &lt;span class="na"&gt;--merge
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;code&gt;pull&lt;/code&gt; with &lt;code&gt;--rebase&lt;/code&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;If you pull remote changes with the flag --rebase, then your local changes are reapplied on top of the remote changes.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;pull&lt;/span&gt; &lt;span class="na"&gt;--rebase
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Deleting multiple git branches using regular expression
&lt;/h3&gt;

&lt;p&gt;You can use the git command as mentioned below to delete multiple git branches at once using regular expression&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;branch&lt;/span&gt; &lt;span class="na"&gt;-D &lt;/span&gt;&lt;span class="sb"&gt;`git branch | grep -i "your regular expression"`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  List down all the branches information
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;branch&lt;/span&gt; &lt;span class="na"&gt;-vv
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;Rename&lt;/code&gt; current branch
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;branch&lt;/span&gt; &lt;span class="na"&gt;-m &lt;/span&gt;&lt;span class="kd"&gt;new&lt;/span&gt;&lt;span class="na"&gt;-name
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;Rename&lt;/code&gt; if you are on &lt;code&gt;other branch&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;branch&lt;/span&gt; &lt;span class="na"&gt;-m &lt;/span&gt;&lt;span class="kd"&gt;old&lt;/span&gt;&lt;span class="na"&gt;-name &lt;/span&gt;&lt;span class="kd"&gt;new&lt;/span&gt;&lt;span class="na"&gt;-name
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Delete the old-name remote branch and push the new-name local branch
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;push&lt;/span&gt; &lt;span class="kd"&gt;origin&lt;/span&gt; &lt;span class="nl"&gt;:old&lt;/span&gt;&lt;span class="na"&gt;-name &lt;/span&gt;&lt;span class="kd"&gt;new&lt;/span&gt;&lt;span class="na"&gt;-name
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Reset the upstream branch for the new-name local branch
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Switch to the branch and then
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;push&lt;/span&gt; &lt;span class="kd"&gt;origin&lt;/span&gt; &lt;span class="na"&gt;-u &lt;/span&gt;&lt;span class="kd"&gt;new&lt;/span&gt;&lt;span class="na"&gt;-name
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;Deleting&lt;/code&gt; a branch
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;branch&lt;/span&gt; &lt;span class="na"&gt;-D &lt;/span&gt;&lt;span class="kd"&gt;branch_name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;-D&lt;/code&gt; is for forcefully&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;Deleting&lt;/code&gt; unnecessary branches of a &lt;code&gt;remote&lt;/code&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;This will list down the branches which are available to be &lt;code&gt;deleted&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;remote&lt;/span&gt; &lt;span class="kd"&gt;prune&lt;/span&gt; &lt;span class="kd"&gt;origin&lt;/span&gt; &lt;span class="na"&gt;--dry-run
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;This will delete them, it's better that you run both of these commands
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;remote&lt;/span&gt; &lt;span class="kd"&gt;prune&lt;/span&gt; &lt;span class="kd"&gt;origin&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Bring specific file from &lt;code&gt;another branch&lt;/code&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Let's say you are on &lt;code&gt;master&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;You wanna bring specific file from &lt;code&gt;develop&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;checkout&lt;/span&gt; &lt;span class="kd"&gt;develop&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt; &lt;span class="kd"&gt;lms&lt;/span&gt;&lt;span class="na"&gt;/djangoapps/courseware/admin&lt;/span&gt;.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Adding
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Adding &lt;code&gt;all&lt;/code&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;All the &lt;code&gt;newly&lt;/code&gt; created files are &lt;code&gt;untracked&lt;/code&gt; one&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git&lt;/code&gt; doesn't &lt;code&gt;track&lt;/code&gt; them&lt;/li&gt;
&lt;li&gt;To make them trackable you &lt;code&gt;add&lt;/code&gt; them individually
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;add&lt;/span&gt; &lt;span class="kd"&gt;new1&lt;/span&gt;.txt &lt;span class="kd"&gt;new2&lt;/span&gt;.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;or&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;add&lt;/span&gt; &lt;span class="na"&gt;-A
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;or&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;add&lt;/span&gt; &lt;span class="kd"&gt;directory&lt;/span&gt;/&lt;span class="o"&gt;*&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Adding only &lt;code&gt;tracked files&lt;/code&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Now let's say there are two types of files in your &lt;code&gt;working directory&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;tracked / untracked&lt;/li&gt;
&lt;li&gt;You only want to &lt;code&gt;commit&lt;/code&gt; tracked one so
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;add&lt;/span&gt; &lt;span class="na"&gt;-u
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;will do the job&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Committing
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Amend last commit message
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;commit&lt;/span&gt; &lt;span class="na"&gt;--amend -m &lt;/span&gt;&lt;span class="s2"&gt;"New commit message."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Amend last commit without editing its message
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;commit&lt;/span&gt; &lt;span class="na"&gt;--amend --no-edit
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Tagging
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Moving git tag to the latest commit
&lt;/h3&gt;

&lt;p&gt;Let's say that you have a branch having three commits. On first commit you have a tag, but you wanna move it to the latest one.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;tag&lt;/span&gt; &lt;span class="na"&gt;-af &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;tag_name_on_first_commit&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;push&lt;/span&gt; &lt;span class="kd"&gt;origin&lt;/span&gt; &lt;span class="na"&gt;--tags -f
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After this you may need to update the tag/release description on github.&lt;/p&gt;

&lt;p&gt;In the above scenerio we moved the tag to the latest commit means the third one, but it is also possible to move it from first to second commit. You just need to specify the commit hash&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;tag&lt;/span&gt; &lt;span class="na"&gt;-af &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;tag_name_on_first_commit&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;commit_hash_of_second_commit&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;push&lt;/span&gt; &lt;span class="kd"&gt;origin&lt;/span&gt; &lt;span class="na"&gt;--tags -f
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;Fetching&lt;/code&gt; tags from &lt;code&gt;remote&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;fetch&lt;/span&gt; &lt;span class="na"&gt;--tags --all
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Rebasing
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Rebasing with &lt;code&gt;other branch&lt;/code&gt; e.g. &lt;code&gt;master&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;rebase&lt;/span&gt; &lt;span class="kd"&gt;master&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Rebasing (with only specific range of commits)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;rebase&lt;/span&gt; &lt;span class="na"&gt;--onto &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;base_branch&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;start_commit_hash&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;end_commit_hash&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It will create a commit for you (in deattached state) from which you can create a new branch or whatever you want&lt;br&gt;
you can now rebase your  with this commit&lt;/p&gt;

&lt;h3&gt;
  
  
  Squashing your commits
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;# &lt;span class="kd"&gt;Here&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt; &lt;span class="kd"&gt;is&lt;/span&gt; &lt;span class="kd"&gt;the&lt;/span&gt; &lt;span class="kd"&gt;number&lt;/span&gt; &lt;span class="kd"&gt;of&lt;/span&gt; &lt;span class="kd"&gt;commits&lt;/span&gt; &lt;span class="kd"&gt;that&lt;/span&gt; &lt;span class="kd"&gt;you&lt;/span&gt; &lt;span class="kd"&gt;wanna&lt;/span&gt; &lt;span class="kd"&gt;squash&lt;/span&gt;
&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;rebase&lt;/span&gt; &lt;span class="na"&gt;-i &lt;/span&gt;&lt;span class="kd"&gt;HEAD&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A file will be opened most probably in vim&lt;br&gt;
Now, leave the first commit with &lt;code&gt;p&lt;/code&gt; --&amp;gt; &lt;code&gt;pick&lt;/code&gt; option&lt;br&gt;
and change the rest of commits option to &lt;code&gt;s&lt;/code&gt; --&amp;gt; &lt;code&gt;squash&lt;/code&gt;&lt;br&gt;
Save the file, A new file will open having commit messages&lt;br&gt;
Do what ever you want with the commit messages and save it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Diff
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;Ignoring&lt;/code&gt; files while running git diff command
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;diff&lt;/span&gt; &lt;span class="kd"&gt;my_branch_name&lt;/span&gt; &lt;span class="s1"&gt;':&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="s1"&gt;*.min.js'&lt;/span&gt; &lt;span class="s1"&gt;':&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="s1"&gt;*.js'&lt;/span&gt; &lt;span class="s1"&gt;':&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="s1"&gt;*.po'&lt;/span&gt; &lt;span class="s1"&gt;':&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="s1"&gt;*.underscore'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Taking diff of &lt;code&gt;two branches&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;diff&lt;/span&gt; &lt;span class="kd"&gt;feature1&lt;/span&gt; &lt;span class="kd"&gt;feature2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Taking diff of &lt;code&gt;current branch with another branch&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;diff&lt;/span&gt; &lt;span class="kd"&gt;other_branch_name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Taking diff with &lt;code&gt;stash&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;diff&lt;/span&gt; &lt;span class="kd"&gt;stash&lt;/span&gt;@&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt; 
# &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="kd"&gt;is&lt;/span&gt; &lt;span class="kd"&gt;the&lt;/span&gt; &lt;span class="kd"&gt;number&lt;/span&gt; &lt;span class="kd"&gt;of&lt;/span&gt; &lt;span class="kd"&gt;stashed&lt;/span&gt; &lt;span class="kd"&gt;changes&lt;/span&gt; &lt;span class="na"&gt;on&lt;/span&gt; &lt;span class="kd"&gt;the&lt;/span&gt; &lt;span class="kd"&gt;stack&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Taking diff with &lt;code&gt;last commit&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;diff&lt;/span&gt; &lt;span class="kd"&gt;HEAD&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Taking diff of a &lt;code&gt;specific file/folder of two different branches&lt;/code&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You need to use &lt;code&gt;relatvie&lt;/code&gt; path of the file/folder you wanna compare
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;diff&lt;/span&gt; &lt;span class="kd"&gt;first_branch&lt;/span&gt; &lt;span class="kd"&gt;second_branch&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt; &lt;span class="kd"&gt;myfile&lt;/span&gt;.cs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Reset
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Undo the changes of single file from staging and un-staging
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;checkout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;your_file_name&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Wanna move your file from staged to working directory
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="nb"&gt;reset&lt;/span&gt; &lt;span class="kd"&gt;file_name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;or to move all
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="nb"&gt;reset&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Wanna keep your last committed files (~1) in the working directory but not as committed or staged
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="nb"&gt;reset&lt;/span&gt; &lt;span class="kd"&gt;HEAD&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Totally undo all the changes which are in staged or un-staged
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="nb"&gt;reset&lt;/span&gt; &lt;span class="na"&gt;--hard
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Totally &lt;code&gt;sync&lt;/code&gt; current branch with other branch
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Let's say you are on &lt;code&gt;local_develop&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;You have done some changes and multiple / single comit&lt;/li&gt;
&lt;li&gt;To make &lt;code&gt;local_develop&lt;/code&gt; just like &lt;code&gt;origin/develop&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;checkout&lt;/span&gt; &lt;span class="kd"&gt;local_develop&lt;/span&gt;
&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="nb"&gt;reset&lt;/span&gt; &lt;span class="na"&gt;--hard &lt;/span&gt;&lt;span class="kd"&gt;origin&lt;/span&gt;&lt;span class="na"&gt;/develop
&lt;/span&gt;# &lt;span class="kd"&gt;origin&lt;/span&gt; &lt;span class="kd"&gt;is&lt;/span&gt; &lt;span class="kd"&gt;the&lt;/span&gt; &lt;span class="kd"&gt;name&lt;/span&gt; &lt;span class="kd"&gt;of&lt;/span&gt; &lt;span class="kd"&gt;your&lt;/span&gt; &lt;span class="kd"&gt;remote&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Stashing
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Don't want to commit but &lt;code&gt;wanna save the changes&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;stash&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  To take back your &lt;code&gt;saved changes&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;stash&lt;/span&gt; &lt;span class="kd"&gt;pop&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  To list down your &lt;code&gt;saved changes&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;stash&lt;/span&gt; &lt;span class="kd"&gt;list&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  cherry-picking
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Cherry-pick the commits. Don't cherry-pick the merge.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flw4eobe75vhsta226tyi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flw4eobe75vhsta226tyi.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In its most basic form, you only need to provide the SHA identifier of the commit you want to integrate into your current HEAD branch&lt;/li&gt;
&lt;li&gt;This way, the specified revision will directly be committed to your currently checked-out branch
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;cherry&lt;/span&gt;&lt;span class="na"&gt;-pick &lt;/span&gt;&lt;span class="kd"&gt;af02e0b&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;BUT If you would like to make some further modifications, you can also instruct Git to only add the commit's changes to your Working Copy - without directly committing them
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="kd"&gt;git&lt;/span&gt; &lt;span class="kd"&gt;cherry&lt;/span&gt;&lt;span class="na"&gt;-pick &lt;/span&gt;&lt;span class="kd"&gt;af02e0b&lt;/span&gt; &lt;span class="na"&gt;--no-commit
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>github</category>
      <category>git</category>
    </item>
  </channel>
</rss>
