ചരിത്രത്തിലെ ഒരു മാറ്റം വിപരീതമാക്കൽ Git Push-ൽ യഥാർത്ഥ കമ്മിറ്റ് ചരിത്രം പുനഃസ്ഥാപിക്കുന്നു

Git

നിങ്ങളുടെ Git കമ്മിറ്റ് ചരിത്രം വീണ്ടെടുക്കുന്നു: ഒരു ഘട്ടം ഘട്ടമായുള്ള ഗൈഡ്

എൻ്റെ user.name ഉം user.email ഉം തെറ്റായി സജ്ജീകരിച്ചിട്ടുണ്ട്, ഒരു വ്യക്തിഗത പ്രോജക്റ്റിൽ ഒരു മാസത്തെ കഠിനാധ്വാനത്തിന് ശേഷം ഞാൻ കണ്ടെത്തി. ഈ തിരുത്തലുകൾ വരുത്തിയതിനു ശേഷവും, എൻ്റെ മുൻ കമ്മിറ്റുകളിൽ തെറ്റായ രചയിതാവിൻ്റെ പേര് ഇപ്പോഴും ഉണ്ടെന്ന് ഞാൻ വളരെക്കാലം കഴിഞ്ഞ് കണ്ടെത്തി. ഈ കമ്മിറ്റുകൾ മാറ്റിക്കൊണ്ട് എൻ്റെ സംഭാവന ഗ്രാഫ് അപ്‌ഡേറ്റ് ചെയ്യാനുള്ള ശ്രമത്തിൽ ഞാൻ ഒരു ജിറ്റ് റീബേസ് പരീക്ഷിച്ചു.

എന്നാൽ അങ്ങനെ ചെയ്യുന്നതിലൂടെ, കമ്മിറ്റ് തീയതികൾ അറിയാതെ മാറ്റി, എല്ലാ കമ്മിറ്റുകളും ഒരേസമയം ചെയ്തു എന്ന പ്രതീതി. ഇത്തരമൊരു മനഃപൂർവമല്ലാത്ത പരിഷ്‌ക്കരണത്തിന് ശേഷം, നിങ്ങളുടെ യഥാർത്ഥ പ്രതിബദ്ധത ചരിത്രം വീണ്ടെടുക്കുന്നതിന് നിങ്ങളെ സഹായിക്കാൻ ഈ ട്യൂട്ടോറിയൽ ശ്രമിക്കുന്നു, അതുവഴി നിങ്ങളുടെ സംഭാവനകൾ ഉചിതമായി പ്രതിഫലിക്കും.

കമാൻഡ് വിവരണം
git reflog റഫറൻസ് ലോഗിൽ റീബേസുകളും റീസെറ്റുകളും ഉൾപ്പെടെ എല്ലാ റിപ്പോസിറ്ററി പരിഷ്ക്കരണങ്ങളുടെയും ചരിത്രം കാണിക്കുന്നു.
git reset --hard വർക്കിംഗ് ഡയറക്‌ടറിയിലും സ്റ്റേജിംഗ് ഏരിയയിലും വരുത്തിയ എല്ലാ പരിഷ്‌ക്കരണങ്ങളും ഇല്ലാതാക്കുകയും നിലവിലെ ബ്രാഞ്ച് തിരഞ്ഞെടുത്ത കമ്മിറ്റിലേക്ക് പുനഃസജ്ജമാക്കുകയും ചെയ്യുന്നു.
git push --force പ്രാദേശിക മാറ്റങ്ങൾ റിമോട്ട് റിപ്പോസിറ്ററിയിലേക്ക് തള്ളാൻ പ്രേരിപ്പിക്കുന്നു, മുമ്പത്തെ വൈരുദ്ധ്യങ്ങൾ ഇല്ലാതാക്കുന്നു.
git filter-branch --env-filter എല്ലാ പ്രതിബദ്ധതകൾക്കും ഒരു ഫിൽട്ടർ പ്രയോഗിക്കുന്നു, Git ചരിത്രം തിരുത്തിയെഴുതുന്നു, രചയിതാവ്, കമ്മിറ്റർ ഡാറ്റ പോലുള്ള പരിസ്ഥിതി വേരിയബിളുകളിൽ മാറ്റങ്ങൾ പ്രാപ്തമാക്കുന്നു.
WRONG_EMAIL="wrong@example.com" മുമ്പത്തെ കമ്മിറ്റുകൾക്ക് ഉപയോഗിച്ച തെറ്റായ ഇമെയിൽ വിലാസം ട്രാക്കുചെയ്യുന്നതിന് ഒരു വേരിയബിൾ സൃഷ്ടിക്കുന്നു.
CORRECT_NAME="Correct Name" പുതുക്കിയ ചരിത്രത്തിൽ ഏത് പേര് മാറ്റണമെന്ന് സൂചിപ്പിക്കാൻ ഒരു വേരിയബിൾ സ്ഥാപിക്കുന്നു.
CORRECT_EMAIL="correct@example.com" പുതുക്കിയ ചരിത്രത്തിൽ പഴയതിന് പകരം ഏത് ഇമെയിൽ വിലാസമാണ് ഉപയോഗിക്കേണ്ടതെന്ന് സൂചിപ്പിക്കാൻ ഒരു വേരിയബിൾ സജ്ജമാക്കുന്നു.
export GIT_COMMITTER_NAME മാറ്റിയെഴുതിയ കമ്മിറ്റുകൾക്ക് നൽകിയിരിക്കുന്ന മൂല്യത്തിലേക്ക് കമ്മിറ്റർ നാമം സജ്ജമാക്കുന്നു.
export GIT_COMMITTER_EMAIL മാറ്റിയെഴുതിയ കമ്മിറ്റുകൾക്ക് നൽകിയിരിക്കുന്ന മൂല്യത്തിലേക്ക് കമ്മിറ്റർ ഇമെയിൽ സജ്ജമാക്കുന്നു.
export GIT_AUTHOR_NAME മാറ്റിയെഴുതിയ കമ്മിറ്റുകൾക്കായി തിരഞ്ഞെടുത്ത മൂല്യത്തിലേക്ക് രചയിതാവിൻ്റെ പേര് പരിഷ്കരിക്കുന്നു.
export GIT_AUTHOR_EMAIL രചയിതാവിൻ്റെ ഇമെയിൽ തിരുത്തിയെഴുതിയ കമ്മിറ്റുകൾക്കായി നിയുക്ത മൂല്യത്തിലേക്ക് പരിഷ്ക്കരിക്കുന്നു.
--tag-name-filter cat തന്നിരിക്കുന്ന ഫിൽട്ടറും ഉപയോഗിച്ച് ടാഗുകൾ മാറ്റിയെഴുതിയതായി ഉറപ്പാക്കുന്നു.

ജിറ്റ് ചരിത്രത്തിൻ്റെ പുനഃസ്ഥാപനം മനസ്സിലാക്കൽ

The scripts offered are meant to rectify and restore Git's commit history, especially in cases where an inadvertent rebase has changed commit dates. In the first script, the commit hash is found before the rebase process by utilizing . റീസെറ്റുകളും റീബേസുകളും ഉൾപ്പെടെ എല്ലാ റിപ്പോസിറ്ററി പരിഷ്ക്കരണങ്ങളുടെയും ചരിത്രം ഈ കമാൻഡ് കാണിക്കുന്നു. പ്രസക്തമായ കമ്മിറ്റ് ഹാഷ് കണ്ടെത്തുമ്പോൾ, ബ്രാഞ്ച് ആ കമ്മിറ്റിലേക്ക് റീസെറ്റ് ചെയ്യുന്നു കമാൻഡ്, അതുവഴി തുടർന്നുള്ള എല്ലാ പരിഷ്ക്കരണങ്ങളും മായ്ച്ചുകളയുന്നു. തെറ്റായ റീബേസിന് മുമ്പായി ശേഖരം അതിൻ്റെ മുൻ നിലയിലേക്ക് പുനഃസ്ഥാപിക്കുന്നതിനാൽ ഇത് ഒരു പ്രധാന ഘട്ടമാണ്. പ്രാദേശിക പരിഷ്ക്കരണങ്ങൾ പിന്നീട് റിമോട്ട് റിപ്പോസിറ്ററിയിലേക്ക് തള്ളുന്നു കമാൻഡ്, റീസെറ്റ് ബ്രാഞ്ച് ഉപയോഗിച്ച് മുമ്പത്തെ ചരിത്രം തിരുത്തിയെഴുതുന്നു.

രണ്ടാമത്തെ സ്‌ക്രിപ്റ്റിൻ്റെ ഉദ്ദേശ്യം, കമ്മിറ്റ് തീയതികൾ മാറ്റാതെ തന്നെ കമ്മിറ്റ് രചയിതാവിൻ്റെ വിശദാംശങ്ങൾ അപ്‌ഡേറ്റ് ചെയ്യുക എന്നതാണ്. ഉപയോഗം കൊണ്ട് കമാൻഡ്, രചയിതാവ്, കമ്മിറ്റർ വിശദാംശങ്ങൾ തുടങ്ങിയ പരിസ്ഥിതി വേരിയബിളുകൾ എല്ലാ കമ്മിറ്റുകളിലും മാറ്റാൻ കഴിയും. കൃത്യമല്ലാത്ത വിശദാംശങ്ങൾ കണ്ടെത്തുന്നതിനും പുതിയതും ശരിയായതുമായവ, പോലുള്ള വേരിയബിളുകൾ വിവരിക്കുന്നതിന് , , ഒപ്പം CORRECT_EMAIL നിർവചിക്കപ്പെടുന്നു. അടുത്തതായി, സ്ക്രിപ്റ്റ് ഉപയോഗിച്ച് കമ്മിറ്റർ വിശദാംശങ്ങൾ അപ്ഡേറ്റ് ചെയ്യുന്നു ഒപ്പം ; അതുപോലെ, ഇത് ഉപയോഗിച്ച് രചയിതാവിൻ്റെ വിശദാംശങ്ങൾ അപ്ഡേറ്റ് ചെയ്യുന്നു ഒപ്പം export GIT_AUTHOR_EMAIL. ഓപ്ഷൻ തന്നിരിക്കുന്ന ഫിൽട്ടറുകൾ ഉപയോഗിച്ച് ടാഗുകൾ മാറ്റിയെഴുതുമെന്ന് ഉറപ്പ് നൽകുന്നു. യഥാർത്ഥ കമ്മിറ്റ് തീയതികളെ ബാധിക്കാതെ ശരിയായ രചയിതാവിൻ്റെ വിവരങ്ങൾ ഉപയോഗിച്ച് കമ്മിറ്റ് ചരിത്രം തിരുത്തിയെഴുതാൻ ഈ സ്ക്രിപ്റ്റ് ഉപയോഗിക്കാം.

Git-ൻ്റെ യഥാർത്ഥ കമ്മിറ്റ് ചരിത്രം തിരികെ കൊണ്ടുവരുന്നു

Git കമാൻഡുകൾ ഉപയോഗിക്കുന്നു

# Step 1: Identify the commit hash before the rebase
git reflog
# Look for the commit hash before the rebase operation
# Step 2: Reset the branch to the commit before the rebase
git reset --hard <commit_hash>
# Step 3: Verify the reset
git log
# Ensure the commit history is back to its original state
# Step 4: Force push the reset history to the remote repository
git push --force

തീയതികൾ അതേപടി നിലനിർത്തിക്കൊണ്ട് കമ്മിറ്റ് രചയിതാവിൻ്റെ വിശദാംശങ്ങൾ വീണ്ടും എഴുതുന്നു

Git ഫിൽട്ടർ-ബ്രാഞ്ച് ഉപയോഗിക്കുന്നു

# Step 1: Rewrite author information without altering commit dates
git filter-branch --env-filter '
WRONG_EMAIL="wrong@example.com"
CORRECT_NAME="Correct Name"
CORRECT_EMAIL="correct@example.com"
if [ "$GIT_COMMITTER_EMAIL" = "$WRONG_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$WRONG_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi'
--tag-name-filter cat -- --branches --tags

ഡാറ്റ നഷ്‌ടപ്പെടാതെ Git ഉപയോഗിച്ച് ചരിത്രം പുനഃസ്ഥാപിക്കുന്നു

The use of Git ചരിത്രം പുനഃസ്ഥാപിക്കുമ്പോൾ കണക്കിലെടുക്കേണ്ട മറ്റൊരു ഘടകമാണ്. ഈ കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങൾക്ക് നിലവിലെ ബ്രാഞ്ചിൽ മുൻ കമ്മിറ്റുകൾ വരുത്തിയ മാറ്റങ്ങൾ പ്രയോഗിക്കാൻ കഴിയും. അവിചാരിതമായി മാറ്റിയ ഒരു ചരിത്രം നിങ്ങൾക്ക് സ്വമേധയാ പുനർനിർമ്മിക്കേണ്ടിവരുമ്പോൾ, അത് വളരെ സഹായകരമാകും. ഉദാഹരണത്തിന്, ഒരു റീബേസ് അല്ലെങ്കിൽ റീസെറ്റ് തകരാറിലാകുകയും വ്യക്തിഗത മാറ്റങ്ങൾ തിരികെ ചേർക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, നിങ്ങൾക്ക് ഉപയോഗിക്കാനാകും അങ്ങനെ ചെയ്യാൻ. യഥാർത്ഥ പ്രതിബദ്ധതയുള്ള തീയതികളും സന്ദേശങ്ങളും സംരക്ഷിച്ചുകൊണ്ട് ഈ സാങ്കേതികത നിങ്ങളുടെ പ്രോജക്റ്റിൻ്റെ ചരിത്രം കേടുകൂടാതെ സൂക്ഷിക്കുന്നു.

ഒരു അധിക സഹായക കമാൻഡ് ആണ്. ശാഖകളുടെ നുറുങ്ങുകളിലും മറ്റ് റിപ്പോസിറ്ററി റഫറൻസുകളിലും വരുത്തിയ എല്ലാ പരിഷ്കാരങ്ങളുടെയും ചരിത്രം ഇത് പ്രദർശിപ്പിക്കുന്നു, പലപ്പോഴും കാഴ്ചയിൽ നിന്ന് മറഞ്ഞിരിക്കുന്നവ പോലും. . പ്രതികൂലമായ റീസെറ്റുകളിലോ റീബേസുകളിലോ തിരുത്തിയെഴുതപ്പെട്ടതോ നഷ്ടപ്പെട്ടതോ ആയ കമ്മിറ്റ് ഹാഷുകൾ കണ്ടെത്താൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു. എന്നിവയുടെ സംയോജനം ഉപയോഗിക്കുന്നു ഒപ്പം git reset --hard, you can revert modifications by restoring your branch to a former state. Furthermore, it's crucial to occasionally take snapshots of the status of your repository using . ഗുരുതരമായ പ്രശ്‌നങ്ങൾ ഉണ്ടായാൽ പഴയപടിയാക്കാവുന്ന പ്രത്യേക ചരിത്ര നിമിഷങ്ങൾ വ്യാഖ്യാനിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നതിനാൽ ടാഗുകൾ ഉപയോഗപ്രദമാണ്.

  1. എന്താണ് ഉദ്ദേശം ?
  2. നിലവിലെ ശാഖയിൽ മുൻ കമ്മിറ്റുകൾ വരുത്തിയ പരിഷ്കാരങ്ങൾ പ്രയോഗിച്ചുകൊണ്ട് ചരിത്രത്തിൻ്റെ സ്വമേധയാ പുനർനിർമ്മിക്കുന്നതിന് ഇത് സഹായിക്കുന്നു.
  3. What role does ഭൂതകാലത്തിൻ്റെ സംരക്ഷണത്തിൽ കളിക്കണോ?
  4. ബ്രാഞ്ച് നുറുങ്ങുകളിലും റഫറൻസുകളിലും വരുത്തിയ എല്ലാ പരിഷ്കാരങ്ങളുടെയും ചരിത്രം പ്രദർശിപ്പിക്കുന്നതിലൂടെ നഷ്ടപ്പെട്ട കമ്മിറ്റുകളുടെ വീണ്ടെടുക്കൽ ഇത് സുഗമമാക്കുന്നു.
  5. എന്താണ് ചെയ്യുന്നത് അർത്ഥമാക്കുന്നത്?
  6. ഇത് വർക്കിംഗ് ഡയറക്‌ടറിയിലും സ്റ്റേജിംഗ് ഏരിയയിലും വരുത്തിയ എല്ലാ പരിഷ്‌ക്കരണങ്ങളും മായ്‌ക്കുകയും നിലവിലെ ബ്രാഞ്ച് ഒരു നിശ്ചിത പ്രതിബദ്ധതയിലേക്ക് പുനഃസജ്ജമാക്കുകയും ചെയ്യുന്നു.
  7. Git-ലെ ടാഗുകളുടെ ഉപയോഗം എന്താണ്?
  8. ടാഗുകൾ റിപ്പോസിറ്ററിയുടെ അവസ്ഥയുടെ സ്നാപ്പ്ഷോട്ടുകൾ എടുക്കുന്നു, ഗുരുതരമായ പ്രശ്നങ്ങൾ ഉണ്ടാകുമ്പോൾ അത് പുനഃസ്ഥാപിക്കാനാകും.
  9. : എന്തിനാണ് ഇത് ഉപയോഗിക്കുന്നത്?
  10. ചരിത്രം തിരുത്തിയെഴുതുന്നതിനായി, ഭൂതകാലത്തിലേക്ക് ഫിൽട്ടറുകൾ പ്രയോഗിക്കുന്നതിന്, എല്ലാ കമ്മിറ്റുകളിലും രചയിതാവിൻ്റെയും കമ്മിറ്ററുടെയും വിശദാംശങ്ങൾ മാറ്റുക.
  11. എന്താണ് വേർതിരിക്കുന്നത് a ഒരു സാധാരണ തള്ളലിൽ നിന്ന്?
  12. പൊരുത്തക്കേടുകൾ പരിഗണിക്കാതെ തന്നെ, റിമോട്ട് റിപ്പോസിറ്ററി മാറ്റിസ്ഥാപിക്കാൻ ഇത് പ്രാദേശിക മാറ്റങ്ങളെ നിർബന്ധിക്കുന്നു.
  13. എപ്പോൾ ഉപയോഗിക്കുന്നത് ശരിയാണ് ?
  14. നിങ്ങൾക്ക് ഒരു നിശ്ചിത പ്രതിബദ്ധതയിലേക്ക് ബ്രാഞ്ച് പുനഃസജ്ജമാക്കുകയും പ്രതിബദ്ധതയില്ലാത്ത മാറ്റങ്ങൾ നീക്കം ചെയ്യുകയും ചെയ്യേണ്ടിവരുമ്പോൾ, നിങ്ങൾ ഉപയോഗിക്കുന്ന രീതി ഇതായിരിക്കണം.
  15. ഉപയോഗിക്കുമ്പോൾ എന്തൊക്കെ സുരക്ഷാ മുൻകരുതലുകൾ പാലിക്കണം ?
  16. ഈ കമാൻഡ് ചരിത്രം തിരുത്തിയെഴുതുകയും ശരിയായി ഉപയോഗിച്ചില്ലെങ്കിൽ ഡാറ്റ നഷ്‌ടപ്പെടുത്തുകയും ചെയ്യുന്നതിനാൽ, നിങ്ങൾ റിപ്പോസിറ്ററി ബാക്കപ്പ് ചെയ്യുന്നുവെന്ന് ഉറപ്പാക്കുക.
  17. How can a faulty rebase be undone with the aid of ?
  18. എല്ലാ റഫറൻസ് മാറ്റങ്ങളും പ്രദർശിപ്പിക്കുന്നതിലൂടെ, നിങ്ങൾക്ക് റീബേസിന് മുമ്പുള്ള കമ്മിറ്റ് ഹാഷ് കണ്ടെത്താനും ബ്രാഞ്ച് ഉചിതമായി ക്രമീകരിക്കാനും കഴിയും.

പ്രതിജ്ഞാബദ്ധമായ തീയതികളിൽ മാറ്റം വരുത്താതെ നിങ്ങളുടെ Git ചരിത്രത്തിലെ രചയിതാവിൻ്റെ വിവരങ്ങൾ അപ്‌ഡേറ്റ് ചെയ്യുന്നത് ബുദ്ധിമുട്ടാണ്, എന്നാൽ ശരിയായ കമാൻഡുകൾ ഉപയോഗിച്ച് ഇത് നേടാനാകും. പഴയ അവസ്ഥകൾ കാണുന്നതിന് ജിറ്റ് റിലോഗും രചയിതാവിൻ്റെ വിശദാംശങ്ങൾ മാറ്റാൻ ജിറ്റ് ഫിൽട്ടർ ബ്രാഞ്ചും ഉപയോഗിക്കുമ്പോൾ നിങ്ങളുടെ പ്രതിബദ്ധതയുള്ള ചരിത്രം സുരക്ഷിതമാണ്. ഡാറ്റ നഷ്‌ടപ്പെടാതിരിക്കാൻ, അത്തരം ടാസ്‌ക്കുകൾ നിർവഹിക്കുന്നതിന് മുമ്പ് എല്ലായ്പ്പോഴും നിങ്ങളുടെ ശേഖരം ബാക്കപ്പ് ചെയ്യുന്നത് ഉറപ്പാക്കുക. ഈ പ്രവർത്തനങ്ങൾ വിശ്വസനീയവും കൃത്യവുമായ പ്രോജക്റ്റ് ഡോക്യുമെൻ്റേഷൻ്റെ പരിപാലനത്തെ പിന്തുണയ്ക്കും.