diff --git a/_data/site.js b/_data/site.js index 33e63cb..24857a0 100644 --- a/_data/site.js +++ b/_data/site.js @@ -148,6 +148,11 @@ module.exports = { code: "fi", arialabel: "Valitse kieli", }, + { + label: "മലയാളം", + code: "ml", + arialabel: "മറ്റ് ഭാഷകളിൽ കാണുക", + }, ], collaborators: [ { @@ -290,6 +295,11 @@ module.exports = { link: "https://github.com/sjarva", lang: "fi", }, + { + name: "arshad", + link: "https://github.com/arshadakl", + lang: "ml", + }, ], otherhelpers: [ { diff --git a/_redirects b/_redirects index fa7cd49..a065866 100644 --- a/_redirects +++ b/_redirects @@ -229,3 +229,11 @@ https://ohshitgit.com/ https://ohshitgit.com/fa 302 Language=fa # persian no swears https://dangitgit.com/fa https://dangitgit.com/fa/noswears/index.html 200! https://dangitgit.com/ https://dangitgit.com/fa 302 Language=fa + +# malayalam swears +https://ohshitgit.com/ml https://ohshitgit.com/ml/swears/index.html 200! +https://ohshitgit.com/ https://ohshitgit.com/ml 302 Language=ml + +# malayalam no swears +https://dangitgit.com/ml https://dangitgit.com/ml/noswears/index.html 200! +https://dangitgit.com/ https://dangitgit.com/ml 302 Language=ml diff --git a/ml/noswears/index.html b/ml/noswears/index.html new file mode 100644 index 0000000..0ad6733 --- /dev/null +++ b/ml/noswears/index.html @@ -0,0 +1,6 @@ +--- +layout: layouts/page.njk +locale: ml +contentType: noswears +title: ഡാംഗിറ്റ്, ഗിറ്റ്!?! +--- diff --git a/ml/noswears/partials/footer.njk b/ml/noswears/partials/footer.njk new file mode 100644 index 0000000..c7bf2d2 --- /dev/null +++ b/ml/noswears/partials/footer.njk @@ -0,0 +1,5 @@ + diff --git a/ml/noswears/partials/intro.njk b/ml/noswears/partials/intro.njk new file mode 100644 index 0000000..d461fe5 --- /dev/null +++ b/ml/noswears/partials/intro.njk @@ -0,0 +1,3 @@ +

Git കഠിനമാണ്: കുളമാക്കുക എളുപ്പമാണ്, പക്ഷേ നിങ്ങളുടെ തെറ്റുകൾ എങ്ങനെ ശരിയാക്കാം എന്ന് കണ്ടെത്തുക അസാധ്യമാണ്. Git ഡോക്യുമെന്റേഷനിൽ ഒരു കോഴിയും മുട്ടയും പ്രശ്നമുണ്ട്: പ്രശ്നത്തിൽ നിന്ന് എങ്ങനെ പുറത്തു കടക്കാം എന്ന് തിരയണമെങ്കിൽ, ആ പ്രശ്നം പരിഹരിക്കാൻ അറിയേണ്ട കാര്യത്തിന്റെ പേര് ആദ്യം അറിഞ്ഞിരിക്കണം.

+ +

അതുകൊണ്ട്, ഞാൻ സ്വയം ചെന്ന് ചാടിയ ചില മോശം സ്ഥിതിഗതികളും, ആ കുഴപ്പങ്ങളിൽ നിന്ന് ഒടുവിൽ ഞാൻ എങ്ങനെ രക്ഷപ്പെട്ടു എന്നതും ലളിതമായ ഭാഷയിൽ ഇവിടെ ഉണ്ട്.

diff --git a/ml/noswears/partials/outro.njk b/ml/noswears/partials/outro.njk new file mode 100644 index 0000000..0aa5120 --- /dev/null +++ b/ml/noswears/partials/outro.njk @@ -0,0 +1 @@ +

*നിരാകരണം: ഈ സൈറ്റ് ഒരു സമ്പൂർണ്ണ റഫറൻസ് ആകാൻ ഉദ്ദേശിക്കുന്നില്ല. ഇതേ കാര്യങ്ങൾ ചെയ്യാൻ കൂടുതൽ സൈദ്ധാന്തിക ശുദ്ധിയോടെ വേറെ വഴികളുമുണ്ട്, പക്ഷേ ഞാൻ ഈ ഘട്ടങ്ങളിൽ എത്തിയത് ശ്രമവും തെറ്റും ഒരുപാട് ആക്രോശങ്ങളും മേശ മറിക്കലുമൊക്കെ കഴിഞ്ഞ്, ഈ ഭ്രാന്തൻ ആശയം ഒരു നല്ല ഡോസ് ലേവ്ടിയോടെ പങ്കുവെക്കണം എന്ന് തോന്നി. ഇഷ്ടമാണോ ഇല്ലയോ, നിങ്ങളുടെ ഇഷ്ടം!

diff --git a/ml/noswears/partials/thanks.njk b/ml/noswears/partials/thanks.njk new file mode 100644 index 0000000..32859c2 --- /dev/null +++ b/ml/noswears/partials/thanks.njk @@ -0,0 +1,4 @@ +

Many thanks to everyone who has volunteered to translate the site into new languages, you rock! +{% include "partials/collaborator-list.njk" %}. With additional help from {% include "partials/otherhelper-list.njk" %}

+ +

If you'd like to help add a translation into your language, submit a PR on {% github_link %}

diff --git a/ml/noswears/tips/01-magic-time-machine.md b/ml/noswears/tips/01-magic-time-machine.md new file mode 100644 index 0000000..b48e995 --- /dev/null +++ b/ml/noswears/tips/01-magic-time-machine.md @@ -0,0 +1,18 @@ +--- +tags: tip +title: ഡാംഗിറ്റ്, ഞാൻ ഭയങ്കര തെറ്റ് ചെയ്തു, ദയവായി git-ന് ഒരു മാജിക് ടൈം മഷീൻ ഉണ്ടെന്ന് പറഞ്ഞുതരൂ!?! +id: magic-time-machine +order: 1 +--- + +```git +git reflog +# നിങ്ങൾ git-ൽ ചെയ്ത എല്ലാ കാര്യങ്ങളുടെയും +# ലിസ്റ്റ് കാണാം, എല്ലാ ബ്രാഞ്ചുകളിലും! +# ഓരോന്നിനും HEAD@{index} ഉണ്ട് +# എല്ലാം കുളമായതിന് മുൻപുള്ളത് കണ്ടെത്തുക +git reset HEAD@{index} +# മാജിക് ടൈം മഷീൻ +``` + +തെറ്റിൽ ഇല്ലാതാക്കിയ ഫയലുകൾ തിരിച്ചെടുക്കാനോ, repo കുളമാക്കിയ ചില കാര്യങ്ങൾ നീക്കം ചെയ്യാനോ, മോശം merge-ന് ശേഷം recover ചെയ്യാനോ, അല്ലെങ്കിൽ കാര്യങ്ങൾ ശരിക്കും പ്രവർത്തിച്ചിരുന്ന ഒരു കാലത്തേക്ക് തിരിച്ചുപോകാനോ ഇത് ഉപയോഗിക്കാം. ഞാൻ `reflog` ഒരുപാടായി ഉപയോഗിക്കുന്നു. ഇത് ചേർക്കാൻ നിർദ്ദേശിച്ച ഒരുപാടുപേർക്ക് ഹൃദ്യമായ ആദരം! diff --git a/ml/noswears/tips/02-change-last-commit.md b/ml/noswears/tips/02-change-last-commit.md new file mode 100644 index 0000000..40437d1 --- /dev/null +++ b/ml/noswears/tips/02-change-last-commit.md @@ -0,0 +1,18 @@ +--- +tags: tip +title: ഡാംഗിറ്റ്, ഞാൻ commit ചെയ്തു, ഉടനെ ഒരു ചെറിയ മാറ്റം കൂടി വേണമെന്ന് മനസ്സിലായി! +id: change-last-commit +order: 2 +--- + +```git +# നിങ്ങളുടെ മാറ്റം ചെയ്യുക +git add . # അല്ലെങ്കിൽ ഫയലുകൾ ഓരോന്നായി add ചെയ്യുക +git commit --amend --no-edit +# ഇനി നിങ്ങളുടെ അവസാന commit-ൽ ആ മാറ്റം ഉണ്ട്! +# മുന്നറിയിപ്പ്: public commits ഒരിക്കലും amend ചെയ്യരുത് +``` + +ഇത് സാധാരണ എനിക്ക് സംഭവിക്കാറുള്ളത്: commit ചെയ്ത ശേഷം tests/linters run ചെയ്യും... ഒരു equals sign-ന് ശേഷം space ഇട്ടില്ല! Commit ആക്കി പിന്നെ `rebase -i` ഉപയോഗിച്ച് squash ചെയ്യാമെങ്കിലും, ഇത് ദശലക്ഷം മടങ്ങ് വേഗതയേറിയതാണ്. + +*മുന്നറിയിപ്പ്: public/shared branch-ൽ push ചെയ്ത commits ഒരിക്കലും amend ചെയ്യരുത്! local copy-ൽ മാത്രം ഉള്ള commits-ൽ amend ചെയ്യുക, അല്ലെങ്കിൽ പ്രശ്നത്തിൽ ചെന്ന് വീഴും.* diff --git a/ml/noswears/tips/03-change-last-commit-message.md b/ml/noswears/tips/03-change-last-commit-message.md new file mode 100644 index 0000000..9f3c926 --- /dev/null +++ b/ml/noswears/tips/03-change-last-commit-message.md @@ -0,0 +1,12 @@ +--- +tags: tip +title: ഡാംഗിറ്റ്, അവസാന commit-ന്റെ message മാറ്റണം! +id: change-last-commit-message +order: 3 +--- +```git +git commit --amend +# commit message മാറ്റാൻ prompt follow ചെയ്യുക +``` + +ബോറൻ commit message formatting ആവശ്യകതകൾ. diff --git a/ml/noswears/tips/04-accidental-commit-master.md b/ml/noswears/tips/04-accidental-commit-master.md new file mode 100644 index 0000000..8e3ba72 --- /dev/null +++ b/ml/noswears/tips/04-accidental-commit-master.md @@ -0,0 +1,17 @@ +--- +tags: tip +title: ഡാംഗിറ്റ്, master-ൽ commit ചെയ്തു, പക്ഷേ അത് ഒരു പുതിയ branch-ൽ ആകേണ്ടതായിരുന്നു! +id: accidental-commit-master +order: 4 +--- + +```git +# master-ന്റെ നിലവിലെ state-ൽ നിന്ന് ഒരു പുതിയ branch ഉണ്ടാക്കുക +git branch some-new-branch-name +# master branch-ൽ നിന്ന് അവസാന commit നീക്കം ചെയ്യുക +git reset HEAD~ --hard +git checkout some-new-branch-name +# നിങ്ങളുടെ commit ഇനി ഈ branch-ൽ ഉണ്ട് :) +``` + +ശ്രദ്ധിക്കുക: commit ഒരു public/shared branch-ൽ push ചെയ്തിട്ടുണ്ടെങ്കിൽ ഇത് പ്രവർത്തിക്കില്ല. മറ്റ് കാര്യങ്ങൾ ആദ്യം ശ്രമിച്ചിട്ടുണ്ടെങ്കിൽ, `HEAD~` പകരം `git reset HEAD@{number-of-commits-back}` ഉപയോഗിക്കേണ്ടി വരും. ഒരുപാടുപേർ ഇത് ചെറുതാക്കാൻ ഒരു മനോഹര വഴി നിർദ്ദേശിച്ചു, ഞാൻ തന്നെ അത് അറിഞ്ഞിരുന്നില്ല. നിങ്ങൾക്കെല്ലാം നന്ദി! diff --git a/ml/noswears/tips/05-accidental-commit-wrong-branch.md b/ml/noswears/tips/05-accidental-commit-wrong-branch.md new file mode 100644 index 0000000..ccbfe37 --- /dev/null +++ b/ml/noswears/tips/05-accidental-commit-wrong-branch.md @@ -0,0 +1,29 @@ +--- +tags: tip +title: ഡാംഗിറ്റ്, തെറ്റായ branch-ൽ commit ചെയ്തുപോയി! +id: accidental-commit-wrong-branch +order: 5 +--- + +```git +# അവസാന commit undo ചെയ്യുക, പക്ഷേ changes keep ചെയ്യുക +git reset HEAD~ --soft +git stash +# ശരിയായ branch-ലേക്ക് പോകുക +git checkout name-of-the-correct-branch +git stash pop +git add . # അല്ലെങ്കിൽ ഫയലുകൾ ഓരോന്നായി add ചെയ്യുക +git commit -m "your message here"; +# ഇനി നിങ്ങളുടെ changes ശരിയായ branch-ൽ ഉണ്ട് +``` + +ഒരുപാടുപേർ ഈ സാഹചര്യത്തിൽ `cherry-pick` ഉപയോഗിക്കാൻ നിർദ്ദേശിച്ചിട്ടുണ്ട്, നിങ്ങൾക്ക് ഇഷ്ടമായത് ഉപയോഗിക്കൂ! + +```git +git checkout name-of-the-correct-branch +# master-ൽ നിന്ന് അവസാന commit എടുക്കുക +git cherry-pick master +# master-ൽ നിന്ന് അത് ഇല്ലാതാക്കുക +git checkout master +git reset HEAD~ --hard +``` diff --git a/ml/noswears/tips/06-dude-wheres-my-diff.md b/ml/noswears/tips/06-dude-wheres-my-diff.md new file mode 100644 index 0000000..8910784 --- /dev/null +++ b/ml/noswears/tips/06-dude-wheres-my-diff.md @@ -0,0 +1,14 @@ +--- +tags: tip +title: ഡാംഗിറ്റ്, diff run ചെയ്തു, പക്ഷേ ഒന്നും കാണുന്നില്ല?! +id: dude-wheres-my-diff +order: 6 +--- + +ഫയലുകൾ മാറ്റി എന്ന് അറിയാം, പക്ഷേ `diff` ഒഴിഞ്ഞതാണ് കാണുന്നത്, ഒരുപക്ഷേ `add` ചെയ്ത് staging-ൽ ഇട്ടതായിരിക്കും, ഒരു special flag ഉപയോഗിക്കണം. + +```git +git diff --staged +``` + +¯\\\_(ツ)\_/¯ (ഇത് ഒരു bug അല്ല, feature ആണ് എന്ന് അറിയാം, പക്ഷേ ആദ്യം നടക്കുമ്പോൾ ഇത് ആരേയും ഞെട്ടിക്കും!) diff --git a/ml/noswears/tips/07-undo-a-commit.md b/ml/noswears/tips/07-undo-a-commit.md new file mode 100644 index 0000000..200886f --- /dev/null +++ b/ml/noswears/tips/07-undo-a-commit.md @@ -0,0 +1,21 @@ +--- +tags: tip +title: ഡാംഗിറ്റ്, 5 commits മുൻപ് ഒരു commit undo ചെയ്യണം! +id: undo-a-commit +order: 7 +--- + +```git +# undo ചെയ്യേണ്ട commit കണ്ടെത്തുക +git log +# history-ൽ scroll ചെയ്യാൻ arrow keys ഉപയോഗിക്കുക +# commit കണ്ടെത്തിയ ശേഷം hash save ചെയ്യുക +git revert [saved hash] +# git ആ commit undo ചെയ്യുന്ന ഒരു പുതിയ commit ഉണ്ടാക്കും +# commit message edit ചെയ്യാൻ prompts follow ചെയ്യുക +# അല്ലെങ്കിൽ save ചെയ്ത് commit ചെയ്യുക +``` + +changes undo ചെയ്യാൻ പഴയ ഫയൽ ഉള്ളടക്കം copy-paste ചെയ്ത് നിലവിലുള്ള ഫയലിൽ ഇടേണ്ടതില്ല! ഒരു bug commit ചെയ്തിട്ടുണ്ടെങ്കിൽ, `revert` ഉപയോഗിച്ച് ഒറ്റടിക്ക് undo ചെയ്യാം. + +ഒരു full commit-ന് പകരം ഒറ്റ file-ൽ revert ചെയ്യുകയും ചെയ്യാം! പക്ഷേ, git-ന്റെ ശൈലിയിൽ, അതിന് സർവ്വഥ വ്യത്യസ്തമായ commands ആണ്... diff --git a/ml/noswears/tips/08-undo-a-file.md b/ml/noswears/tips/08-undo-a-file.md new file mode 100644 index 0000000..ac12a95 --- /dev/null +++ b/ml/noswears/tips/08-undo-a-file.md @@ -0,0 +1,18 @@ +--- +tags: tip +title: ഡാംഗിറ്റ്, ഒരു ഫയലിൽ ചെയ്ത changes undo ചെയ്യണം! +id: undo-a-file +order: 8 +--- + +```git +# ഫയൽ മാറ്റുന്നതിന് മുൻപുള്ള ഒരു commit-ന്റെ hash കണ്ടെത്തുക +git log +# history-ൽ scroll ചെയ്യാൻ arrow keys ഉപയോഗിക്കുക +# commit കണ്ടെത്തിയ ശേഷം hash save ചെയ്യുക +git checkout [saved hash] -- path/to/file +# ഫയലിന്റെ പഴയ version നിങ്ങളുടെ index-ൽ ഉണ്ടാകും +git commit -m "അതെ, copy-paste ഇല്ലാതെ undo ചെയ്യാം" +``` + +ഇത് ഒടുവിൽ മനസ്സിലായപ്പോൾ ഭീമൻ ആശ്വാസം ആയിരുന്നു. ഭീമൻ. B-H-E-E-M-A-N. പക്ഷേ ഗൗരവമായി, ഒരു ഫയൽ undo ചെയ്യാൻ `checkout --` ആണ് ഏറ്റവും നല്ല വഴി എന്ന് ആരാണ് തീരുമാനിച്ചത്? diff --git a/ml/noswears/tips/20-fuck-this-noise.md b/ml/noswears/tips/20-fuck-this-noise.md new file mode 100644 index 0000000..89db67c --- /dev/null +++ b/ml/noswears/tips/20-fuck-this-noise.md @@ -0,0 +1,29 @@ +--- +tags: tip +title: ഇതൊക്കെ മതി, ഞാൻ ഉപേക്ഷിക്കുന്നു. +id: forget-this-noise +note: this should always be the last one in the list, so setting order to 20 so I don't have to re-name/re-order it +order: 20 +--- + +```git +cd .. +sudo rm -r stupid-git-repo-dir +git clone https://some.github.url/stupid-git-repo-dir.git +cd stupid-git-repo-dir +``` + +ഇതിന് Eric V.-ന് നന്ദി. `sudo` ഉപയോഗിച്ചതിൽ ആർക്കെങ്കിലും പരാതിയുണ്ടെങ്കിൽ അദ്ദേഹത്തോട് പറഞ്ഞോളൂ. + + +ഗൗരവമായി, നിങ്ങളുടെ branch ഇത്ര കുളമായെങ്കിൽ repo-ഇ remote-ന്റെ state-ലേക്ക് "git-approved" വഴിയിൽ reset ചെയ്യണമെങ്കിൽ, ഇത് ശ്രമിക്കൂ, പക്ഷേ ഇവ destructive, unrecoverable actions ആണ്! + +```git +# origin-ന്റെ ഏറ്റവും പുതിയ state എടുക്കുക +git fetch origin +git checkout master +git reset --hard origin/master +# untracked files, directories ഇല്ലാതാക്കുക +git clean -d --force +# കുളമായ ഓരോ branch-നും checkout/reset/clean ആവർത്തിക്കുക +``` diff --git a/ml/noswears/tips/tips.json b/ml/noswears/tips/tips.json new file mode 100644 index 0000000..d0b2aa6 --- /dev/null +++ b/ml/noswears/tips/tips.json @@ -0,0 +1 @@ +{ "permalink": false } diff --git a/ml/swears/index.html b/ml/swears/index.html new file mode 100644 index 0000000..97dbd67 --- /dev/null +++ b/ml/swears/index.html @@ -0,0 +1,6 @@ +--- +layout: layouts/page.njk +locale: ml +contentType: swears +title: ഓ ഷിറ്റ്, ഗിറ്റ്!?! +--- diff --git a/ml/swears/partials/banner.njk b/ml/swears/partials/banner.njk new file mode 100644 index 0000000..f10ee6e --- /dev/null +++ b/ml/swears/partials/banner.njk @@ -0,0 +1 @@ + diff --git a/ml/swears/partials/footer.njk b/ml/swears/partials/footer.njk new file mode 100644 index 0000000..e2be312 --- /dev/null +++ b/ml/swears/partials/footer.njk @@ -0,0 +1,5 @@ + diff --git a/ml/swears/partials/intro.njk b/ml/swears/partials/intro.njk new file mode 100644 index 0000000..fd0181b --- /dev/null +++ b/ml/swears/partials/intro.njk @@ -0,0 +1,3 @@ +

Git കഠിനമാണ്: കുളമാക്കുക എളുപ്പമാണ്, പക്ഷേ നിങ്ങളുടെ തെറ്റുകൾ എങ്ങനെ ശരിയാക്കാം എന്ന് കണ്ടെത്തുക നരക്ക് ഇടുന്ന ബുദ്ധിമുട്ടാണ്. Git ഡോക്യുമെന്റേഷനിൽ ഒരു കോഴിയും മുട്ടയും പ്രശ്നമുണ്ട്: പ്രശ്നത്തിൽ നിന്ന് എങ്ങനെ പുറത്തു കടക്കാം എന്ന് തിരയണമെങ്കിൽ, ആ പ്രശ്നം പരിഹരിക്കാൻ അറിയേണ്ട കാര്യത്തിന്റെ പേര് ആദ്യം അറിഞ്ഞിരിക്കണം.

+ +

അതുകൊണ്ട്, ഞാൻ സ്വയം ചെന്ന് ചാടിയ ചില മോശം സ്ഥിതിഗതികളും, ആ കുഴപ്പങ്ങളിൽ നിന്ന് ഒടുവിൽ ഞാൻ എങ്ങനെ രക്ഷപ്പെട്ടു എന്നതും ലളിതമായ ഭാഷയിൽ ഇവിടെ ഉണ്ട്.

diff --git a/ml/swears/partials/outro.njk b/ml/swears/partials/outro.njk new file mode 100644 index 0000000..d4f1f63 --- /dev/null +++ b/ml/swears/partials/outro.njk @@ -0,0 +1 @@ +

*നിരാകരണം: ഈ സൈറ്റ് ഒരു സമ്പൂർണ്ണ റഫറൻസ് ആകാൻ ഉദ്ദേശിക്കുന്നില്ല. ഇതേ കാര്യങ്ങൾ ചെയ്യാൻ കൂടുതൽ സൈദ്ധാന്തിക ശുദ്ധിയോടെ വേറെ വഴികളുമുണ്ട്, പക്ഷേ ഞാൻ ഈ ഘട്ടങ്ങളിൽ എത്തിയത് ശ്രമവും തെറ്റും ഒരുപാട് ആക്രോശങ്ങളും മേശ മറിക്കലുമൊക്കെ കഴിഞ്ഞ്, ഈ ഭ്രാന്തൻ ആശയം ഒരു നല്ല ഡോസ് ലേവ്ടിയും profanity-യും ചേർത്ത് പങ്കുവെക്കണം എന്ന് തോന്നി. ഇഷ്ടമാണോ ഇല്ലയോ, നിങ്ങളുടെ ഇഷ്ടം!

diff --git a/ml/swears/partials/thanks.njk b/ml/swears/partials/thanks.njk new file mode 100644 index 0000000..32859c2 --- /dev/null +++ b/ml/swears/partials/thanks.njk @@ -0,0 +1,4 @@ +

Many thanks to everyone who has volunteered to translate the site into new languages, you rock! +{% include "partials/collaborator-list.njk" %}. With additional help from {% include "partials/otherhelper-list.njk" %}

+ +

If you'd like to help add a translation into your language, submit a PR on {% github_link %}

diff --git a/ml/swears/tips/01-magic-time-machine.md b/ml/swears/tips/01-magic-time-machine.md new file mode 100644 index 0000000..914e60a --- /dev/null +++ b/ml/swears/tips/01-magic-time-machine.md @@ -0,0 +1,18 @@ +--- +tags: tip +title: ഓ ഷിറ്റ്, ഞാൻ ഭയങ്കര തെറ്റ് ചെയ്തു, ദയവായി git-ന് ഒരു മാജിക് ടൈം മഷീൻ ഉണ്ടെന്ന് പറഞ്ഞുതരൂ!?! +id: magic-time-machine +order: 1 +--- + +```git +git reflog +# നിങ്ങൾ git-ൽ ചെയ്ത എല്ലാ കാര്യങ്ങളുടെയും +# ലിസ്റ്റ് കാണാം, എല്ലാ ബ്രാഞ്ചുകളിലും! +# ഓരോന്നിനും HEAD@{index} ഉണ്ട് +# എല്ലാം കുളമായതിന് മുൻപുള്ളത് കണ്ടെത്തുക +git reset HEAD@{index} +# മാജിക് ടൈം മഷീൻ +``` + +തെറ്റിൽ ഇല്ലാതാക്കിയ ഫയലുകൾ തിരിച്ചെടുക്കാനോ, repo കുളമാക്കിയ ചില കാര്യങ്ങൾ നീക്കം ചെയ്യാനോ, മോശം merge-ന് ശേഷം recover ചെയ്യാനോ, അല്ലെങ്കിൽ കാര്യങ്ങൾ ശരിക്കും പ്രവർത്തിച്ചിരുന്ന ഒരു കാലത്തേക്ക് തിരിച്ചുപോകാനോ ഇത് ഉപയോഗിക്കാം. ഞാൻ `reflog` ഒരുപാടായി ഉപയോഗിക്കുന്നു. ഇത് ചേർക്കാൻ നിർദ്ദേശിച്ച ഒരുപാടുപേർക്ക് ഹൃദ്യമായ ആദരം! diff --git a/ml/swears/tips/02-change-last-commit.md b/ml/swears/tips/02-change-last-commit.md new file mode 100644 index 0000000..d781675 --- /dev/null +++ b/ml/swears/tips/02-change-last-commit.md @@ -0,0 +1,18 @@ +--- +tags: tip +title: ഓ ഷിറ്റ്, ഞാൻ commit ചെയ്തു, ഉടനെ ഒരു ചെറിയ മാറ്റം കൂടി വേണമെന്ന് മനസ്സിലായി! +id: change-last-commit +order: 2 +--- + +```git +# നിങ്ങളുടെ മാറ്റം ചെയ്യുക +git add . # അല്ലെങ്കിൽ ഫയലുകൾ ഓരോന്നായി add ചെയ്യുക +git commit --amend --no-edit +# ഇനി നിങ്ങളുടെ അവസാന commit-ൽ ആ മാറ്റം ഉണ്ട്! +# മുന്നറിയിപ്പ്: public commits ഒരിക്കലും amend ചെയ്യരുത് +``` + +ഇത് സാധാരണ എനിക്ക് സംഭവിക്കാറുള്ളത്: commit ചെയ്ത ശേഷം tests/linters run ചെയ്യും... ശ്ശേ, ഒരു equals sign-ന് ശേഷം space ഇട്ടില്ല! Commit ആക്കി പിന്നെ `rebase -i` ഉപയോഗിച്ച് squash ചെയ്യാമെങ്കിലും, ഇത് ദശലക്ഷം മടങ്ങ് വേഗതയേറിയതാണ്. + +*മുന്നറിയിപ്പ്: public/shared branch-ൽ push ചെയ്ത commits ഒരിക്കലും amend ചെയ്യരുത്! local copy-ൽ മാത്രം ഉള്ള commits-ൽ amend ചെയ്യുക, അല്ലെങ്കിൽ പ്രശ്നത്തിൽ ചെന്ന് വീഴും.* diff --git a/ml/swears/tips/03-change-last-commit-message.md b/ml/swears/tips/03-change-last-commit-message.md new file mode 100644 index 0000000..cba6399 --- /dev/null +++ b/ml/swears/tips/03-change-last-commit-message.md @@ -0,0 +1,12 @@ +--- +tags: tip +title: ഓ ഷിറ്റ്, അവസാന commit-ന്റെ message മാറ്റണം! +id: change-last-commit-message +order: 3 +--- +```git +git commit --amend +# commit message മാറ്റാൻ prompt follow ചെയ്യുക +``` + +ബോറൻ commit message formatting ആവശ്യകതകൾ. diff --git a/ml/swears/tips/04-accidental-commit-master.md b/ml/swears/tips/04-accidental-commit-master.md new file mode 100644 index 0000000..8f3745c --- /dev/null +++ b/ml/swears/tips/04-accidental-commit-master.md @@ -0,0 +1,17 @@ +--- +tags: tip +title: ഓ ഷിറ്റ്, master-ൽ commit ചെയ്തു, പക്ഷേ അത് ഒരു പുതിയ branch-ൽ ആകേണ്ടതായിരുന്നു! +id: accidental-commit-master +order: 4 +--- + +```git +# master-ന്റെ നിലവിലെ state-ൽ നിന്ന് ഒരു പുതിയ branch ഉണ്ടാക്കുക +git branch some-new-branch-name +# master branch-ൽ നിന്ന് അവസാന commit നീക്കം ചെയ്യുക +git reset HEAD~ --hard +git checkout some-new-branch-name +# നിങ്ങളുടെ commit ഇനി ഈ branch-ൽ ഉണ്ട് :) +``` + +ശ്രദ്ധിക്കുക: commit ഒരു public/shared branch-ൽ push ചെയ്തിട്ടുണ്ടെങ്കിൽ ഇത് പ്രവർത്തിക്കില്ല. മറ്റ് കാര്യങ്ങൾ ആദ്യം ശ്രമിച്ചിട്ടുണ്ടെങ്കിൽ, `HEAD~` പകരം `git reset HEAD@{number-of-commits-back}` ഉപയോഗിക്കേണ്ടി വരും. ഒരുപാടുപേർ ഇത് ചെറുതാക്കാൻ ഒരു മനോഹര വഴി നിർദ്ദേശിച്ചു, ഞാൻ തന്നെ അത് അറിഞ്ഞിരുന്നില്ല. നിങ്ങൾക്കെല്ലാം നന്ദി! diff --git a/ml/swears/tips/05-accidental-commit-wrong-branch.md b/ml/swears/tips/05-accidental-commit-wrong-branch.md new file mode 100644 index 0000000..0064384 --- /dev/null +++ b/ml/swears/tips/05-accidental-commit-wrong-branch.md @@ -0,0 +1,29 @@ +--- +tags: tip +title: ഓ ഷിറ്റ്, തെറ്റായ branch-ൽ commit ചെയ്തുപോയി! +id: accidental-commit-wrong-branch +order: 5 +--- + +```git +# അവസാന commit undo ചെയ്യുക, പക്ഷേ changes keep ചെയ്യുക +git reset HEAD~ --soft +git stash +# ശരിയായ branch-ലേക്ക് പോകുക +git checkout name-of-the-correct-branch +git stash pop +git add . # അല്ലെങ്കിൽ ഫയലുകൾ ഓരോന്നായി add ചെയ്യുക +git commit -m "your message here"; +# ഇനി നിങ്ങളുടെ changes ശരിയായ branch-ൽ ഉണ്ട് +``` + +ഒരുപാടുപേർ ഈ സാഹചര്യത്തിൽ `cherry-pick` ഉപയോഗിക്കാൻ നിർദ്ദേശിച്ചിട്ടുണ്ട്, നിങ്ങൾക്ക് ഇഷ്ടമായത് ഉപയോഗിക്കൂ! + +```git +git checkout name-of-the-correct-branch +# master-ൽ നിന്ന് അവസാന commit എടുക്കുക +git cherry-pick master +# master-ൽ നിന്ന് അത് ഇല്ലാതാക്കുക +git checkout master +git reset HEAD~ --hard +``` diff --git a/ml/swears/tips/06-dude-wheres-my-diff.md b/ml/swears/tips/06-dude-wheres-my-diff.md new file mode 100644 index 0000000..ab32974 --- /dev/null +++ b/ml/swears/tips/06-dude-wheres-my-diff.md @@ -0,0 +1,14 @@ +--- +tags: tip +title: ഓ ഷിറ്റ്, diff run ചെയ്തു, പക്ഷേ ഒന്നും കാണുന്നില്ല?! +id: dude-wheres-my-diff +order: 6 +--- + +ഫയലുകൾ മാറ്റി എന്ന് അറിയാം, പക്ഷേ `diff` ഒഴിഞ്ഞതാണ് കാണുന്നത്, ഒരുപക്ഷേ `add` ചെയ്ത് staging-ൽ ഇട്ടതായിരിക്കും, ഒരു special flag ഉപയോഗിക്കണം. + +```git +git diff --staged +``` + +¯\\\_(ツ)\_/¯ (ഇത് ഒരു bug അല്ല, feature ആണ് എന്ന് അറിയാം, പക്ഷേ ആദ്യം നടക്കുമ്പോൾ ഇത് ആരേയും ഞെട്ടിക്കും!) diff --git a/ml/swears/tips/07-undo-a-commit.md b/ml/swears/tips/07-undo-a-commit.md new file mode 100644 index 0000000..a75af3c --- /dev/null +++ b/ml/swears/tips/07-undo-a-commit.md @@ -0,0 +1,21 @@ +--- +tags: tip +title: ഓ ഷിറ്റ്, 5 commits മുൻപ് ഒരു commit undo ചെയ്യണം! +id: undo-a-commit +order: 7 +--- + +```git +# undo ചെയ്യേണ്ട commit കണ്ടെത്തുക +git log +# history-ൽ scroll ചെയ്യാൻ arrow keys ഉപയോഗിക്കുക +# commit കണ്ടെത്തിയ ശേഷം hash save ചെയ്യുക +git revert [saved hash] +# git ആ commit undo ചെയ്യുന്ന ഒരു പുതിയ commit ഉണ്ടാക്കും +# commit message edit ചെയ്യാൻ prompts follow ചെയ്യുക +# അല്ലെങ്കിൽ save ചെയ്ത് commit ചെയ്യുക +``` + +changes undo ചെയ്യാൻ പഴയ ഫയൽ ഉള്ളടക്കം copy-paste ചെയ്ത് നിലവിലുള്ള ഫയലിൽ ഇടേണ്ടതില്ല! ഒരു bug commit ചെയ്തിട്ടുണ്ടെങ്കിൽ, `revert` ഉപയോഗിച്ച് ഒറ്റടിക്ക് undo ചെയ്യാം. + +ഒരു full commit-ന് പകരം ഒറ്റ file-ൽ revert ചെയ്യുകയും ചെയ്യാം! പക്ഷേ, git-ന്റെ യഥാർത്ഥ ശൈലിയിൽ, അതിന് സർവ്വഥ വ്യത്യസ്തമായ commands ആണ്... diff --git a/ml/swears/tips/08-undo-a-file.md b/ml/swears/tips/08-undo-a-file.md new file mode 100644 index 0000000..a1ae7f5 --- /dev/null +++ b/ml/swears/tips/08-undo-a-file.md @@ -0,0 +1,18 @@ +--- +tags: tip +title: ഓ ഷിറ്റ്, ഒരു ഫയലിൽ ചെയ്ത changes undo ചെയ്യണം! +id: undo-a-file +order: 8 +--- + +```git +# ഫയൽ മാറ്റുന്നതിന് മുൻപുള്ള ഒരു commit-ന്റെ hash കണ്ടെത്തുക +git log +# history-ൽ scroll ചെയ്യാൻ arrow keys ഉപയോഗിക്കുക +# commit കണ്ടെത്തിയ ശേഷം hash save ചെയ്യുക +git checkout [saved hash] -- path/to/file +# ഫയലിന്റെ പഴയ version നിങ്ങളുടെ index-ൽ ഉണ്ടാകും +git commit -m "അതെ, copy-paste ഇല്ലാതെ undo ചെയ്യാം" +``` + +ഇത് ഒടുവിൽ മനസ്സിലായപ്പോൾ ഭീമൻ ആശ്വാസം ആയിരുന്നു. ഭീമൻ. B-H-E-E-M-A-N. പക്ഷേ ഗൗരവമായി, ഏതൊക്കെ ലോകത്ത് ആണ് ഒരു ഫയൽ undo ചെയ്യാൻ `checkout --` ആണ് ഏറ്റവും നല്ല വഴി? :linus-torvalds-ക്ക്-മുഷ്ടി-ആഞ്ഞടിക്കുന്നു: diff --git a/ml/swears/tips/20-fuck-this-noise.md b/ml/swears/tips/20-fuck-this-noise.md new file mode 100644 index 0000000..b27ed16 --- /dev/null +++ b/ml/swears/tips/20-fuck-this-noise.md @@ -0,0 +1,29 @@ +--- +tags: tip +title: ഇതൊക്കെ മതി, ഞാൻ quit ചെയ്യുന്നു. +id: fuck-this-noise +note: this should always be the last one in the list, so setting order to 20 so I don't have to re-name/re-order it +order: 20 +--- + +```git +cd .. +sudo rm -r fucking-git-repo-dir +git clone https://some.github.url/fucking-git-repo-dir.git +cd fucking-git-repo-dir +``` + +ഇതിന് Eric V.-ന് നന്ദി. `sudo` ഉപയോഗിച്ചതിൽ ആർക്കെങ്കിലും പരാതിയുണ്ടെങ്കിൽ അദ്ദേഹത്തോട് പറഞ്ഞോളൂ. + + +ഗൗരവമായി, നിങ്ങളുടെ branch ഇത്ര കുളമായെങ്കിൽ repo-ഇ remote-ന്റെ state-ലേക്ക് "git-approved" വഴിയിൽ reset ചെയ്യണമെങ്കിൽ, ഇത് ശ്രമിക്കൂ, പക്ഷേ ഇവ destructive, unrecoverable actions ആണ്! + +```git +# origin-ന്റെ ഏറ്റവും പുതിയ state എടുക്കുക +git fetch origin +git checkout master +git reset --hard origin/master +# untracked files, directories ഇല്ലാതാക്കുക +git clean -d --force +# കുളമായ ഓരോ branch-നും checkout/reset/clean ആവർത്തിക്കുക +``` diff --git a/ml/swears/tips/tips.json b/ml/swears/tips/tips.json new file mode 100644 index 0000000..d0b2aa6 --- /dev/null +++ b/ml/swears/tips/tips.json @@ -0,0 +1 @@ +{ "permalink": false }