Helpful git commands

Rmag Breaking News

A list of git commands to improve your source code management skills.

Interactive commit

git commit –patch –verbose

Allows you to interactively select hunks of patch between the index and the work tree and commit them. It provides a detailed output of the commit process.

Prompt to select hunks to commit

@@ -84,7 +95,7 @@ export const Routes: React.FC<RoutesProps> = ({

return (
<Suspense fallback={Fallback ? <Fallback /> : undefined}>
– <Layout {…rest}>
+ <Layout {…rest} error={error}>
<BaseRoutes location={routerLocation}>
{routeData?.redirect && <Navigate to={routeData.redirect} />}
{routes.map(({path, Component, Fallback, …routeProps}) => (
(3/3) Stage this hunk [y,n,q,a,d,K,g,/,e,?]?

Detailed output showing the changes being committed.

fix: pass error to layout

# Please enter the commit message for your changes. Lines starting
# with ‘#’ will be ignored, and an empty message aborts the commit.
#
# On branch master
# Your branch is behind ‘origin/master’ by 4 commits, and can be fast-forwarded.
# (use “git pull” to update your local branch)
#
# Changes to be committed:
# modified: src/components/routes.tsx
#
# Changes not staged for commit:
# modified: .size-limit.json
# modified: src/components/routes.tsx
#
# ———————— >8 ————————
# Do not modify or remove the line above.
# Everything below it will be ignored.
diff –git a/src/components/routes.tsx b/src/components/routes.tsx
index 2fea2b3..6b2d803 100644
— a/src/components/routes.tsx
+++ b/src/components/routes.tsx
@@ -84,7 +84,7 @@ export const Routes: React.FC<RoutesProps> = ({

return (
<Suspense fallback={Fallback ? <Fallback /> : undefined}>
– <Layout {…rest}>
+ <Layout {…rest} error={error}>
<BaseRoutes location={routerLocation}>
{routeData?.redirect && <Navigate to={routeData.redirect} />}
{routes.map(({path, Component, Fallback, …routeProps}) => (

Options explained

–patch – Interactively choose hunks of patch between the index and the work tree and commit them.

–verbose – Show unified diff of the changes being committed.

Branch info

git branch –verbose

Lists all local branches along with the last commit on each branch.

background-location ec6e18e feat: support background location for modals
eslint-config 34de471 chore: update eslint config and fix errors
* master bc8b8ab Merge pull request #19 from asyncink/error-to-layout
refactor-loading ebcebfb fix: simplify loading, fix isLoading lag

Pretty log

git log –graph –oneline –all –decorate –date-order

Displays the commit history in a graphical format, with each commit on a single line, showing all branches, decorated with references, and sorted by date.

* 4f51b56 (origin/gh-pages) Deploying to gh-pages from @ rambler-digital-solutions/react-toolkit@bc8b8abfb1db317b4c27a7634abb6ecce8d28384 🚀
| * bc8b8ab (HEAD -> master, tag: v2.8.0, origin/master) Merge pull request #19 from asyncink/error-to-layout
| |
| | * 601e01b fix: remove nullish coalescing
| | * b7ca3b9 chore: increase size limit
| | * b288524 feat: pass error to layout
| |/
* | 22e52ae Deploying to gh-pages from @ rambler-digital-solutions/react-toolkit@d25e4ef4f143c5a0d2b2debae742aab6b524bcda 🚀
| * d25e4ef (tag: v2.7.5) Merge pull request #18 from rambler-digital-solutions/refactor-loading
| |
| | * ebcebfb (origin/refactor-loading, refactor-loading) fix: simplify loading, fix isLoading lag
| |/
* | 187b824 Deploying to gh-pages from @ rambler-digital-solutions/react-toolkit@c6a8a60bc7dfa23bacdc043ea3558f4e61f344c2 🚀
| * c6a8a60 chore: update eslint config
| * c345f30 Merge pull request #17 from rambler-digital-solutions/eslint-config [skip ci]
| |
| | * 34de471 (origin/eslint-config, eslint-config) chore: update eslint config and fix errors
| |/
* | 3338070 Deploying to gh-pages from @ rambler-digital-solutions/react-toolkit@d1cb7c6a29e86fb949dd2b9c29a8fc1b7a08928c 🚀
| * d1cb7c6 chore: increase size limits

Options explained

–graph – Draw a text-based graphical representation of the commit history.

–oneline – Display each commit on a single line.

–all – Show all branches.

–decorate – Show names of branches or tags of the commits that are shown.

–date-order – Sort commits by date.

File history

git log –follow –patch <path>

Shows the commit history of a specific file, including the changes made in each commit.

commit 10ed8b6304b8384cfafb3fb839e295cf2a1ccf51
Author: Andrey Polischuk
Date: Wed Dec 13 10:49:38 2023 +0300

fix: preload server route before hydration

diff –git a/src/components/routes.tsx b/src/components/routes.tsx
index 6e79fcf..e4a0d45 100644
— a/src/components/routes.tsx
+++ b/src/components/routes.tsx
@@ -89,7 +89,7 @@ export const Routes: React.FC<RoutesProps> = ({
key={path}
path={path}
element={
– <Suspense fallback={Fallback ? <Fallback /> : null}>
+ <Suspense fallback={Fallback ? <Fallback /> : undefined}>
{isWaitingMode && routeData.isLoading && Fallback ? (
<Fallback />
) : (

Options explained

–follow – Continue listing the history of the file beyond renames.

–patch – Show the diff of each commit.

Short status

git status –short –branch

Displays the status of the working directory and the current branch in a short format.

## master…origin/master [behind 4]
M .size-limit.json
M src/components/routes.tsx

Options explained

–short – Show the output in a short-format style.

–branch – Show the name of the current branch.

Sorted tags

git tag –sort version:refname

Lists all tags in the repository, sorted by version number.

v2.0.0
v2.1.0
v2.2.0
v2.3.0
v2.4.0
v2.5.0
v2.5.1
v2.6.0
v2.7.0
v2.7.1
v2.7.2
v2.7.3
v2.8.0

Undo

git reset HEAD~1 –mixed

Resets the current HEAD to the previous commit. Changes in the working directory and index are preserved.

Unstaged changes after reset:
M .size-limit.json
M src/components/routes.tsx

Options explained

HEAD~1 – The commit before the current HEAD.

–mixed – Reset the index but not the working directory.

Grep across history

git rev-list –all | xargs git grep -F <search>

Searches for a specific term across all commits in the repository.

0c954d8e019c4b152e082e1fcf70f47392100c0e:README.md:### Pages meta data
0c954d8e019c4b152e082e1fcf70f47392100c0e:README.md:For adding custom styles, scripts, meta tags and
for more flexible customization of the entire document
0c954d8e019c4b152e082e1fcf70f47392100c0e:README.md: <meta httpEquiv=”X-UA-Compatible” content=”
IE=edge” />
0c954d8e019c4b152e082e1fcf70f47392100c0e:README.md: <meta charSet=”utf-8″ />
0c954d8e019c4b152e082e1fcf70f47392100c0e:README.md: <meta name=”viewport” content=”width=device
-width, initial-scale=1″ />
0c954d8e019c4b152e082e1fcf70f47392100c0e:src/client/index.ts:export {Meta} from ‘../components/meta’
0c954d8e019c4b152e082e1fcf70f47392100c0e:src/components/context.tsx: meta?: MetaData
0c954d8e019c4b152e082e1fcf70f47392100c0e:src/components/context.tsx: onChangeMetaData: (meta: MetaD
ata) => void
0c954d8e019c4b152e082e1fcf70f47392100c0e:src/components/context.tsx: const [meta, setMeta] = useSta
te<MetaData>(value.meta ?? {})
0c954d8e019c4b152e082e1fcf70f47392100c0e:src/components/context.tsx: meta,
0c954d8e019c4b152e082e1fcf70f47392100c0e:src/components/context.tsx: [value, meta]
0c954d8e019c4b152e082e1fcf70f47392100c0e:src/components/document.tsx:import {Meta} from ‘./meta’
0c954d8e019c4b152e082e1fcf70f47392100c0e:src/components/document.tsx: <meta httpEquiv=”X-UA-Com
patible” content=”IE=edge” />
0c954d8e019c4b152e082e1fcf70f47392100c0e:src/components/document.tsx: <meta charSet=”utf-8″ />
0c954d8e019c4b152e082e1fcf70f47392100c0e:src/components/document.tsx: <meta name=”viewport” con
tent=”width=device-width, initial-scale=1″ />

Cleanup branches

git branch –merged | sed “s/* master//g” | xargs -I % bash -c “git branch -d %; git push origin :%”

Deletes all local branches that have been merged into the master branch and removes them from the remote repository.

–merged – List branches that have been merged into the current branch.

sed “s/* master//g” – Remove master branch from the list.

xargs -I – Interactively merged branches.

Mass pull

find . -type d -depth 1 -exec git –git-dir={}/.git –work-tree=$PWD/{} pull origin master ;

Pulls changes from the master branch into all subdirectories that are Git repositories.

-type d – Search for directories.

-depth 1 – Only search the current directory.

-exec {} ; – Run a command for every find.

Leave a Reply

Your email address will not be published. Required fields are marked *