ਗਿੱਟ ਵਿੱਚ ਉੱਨਤ ਧਾਰਨਾਵਾਂ: ਸ਼ਕਤੀਸ਼ਾਲੀ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਅਤੇ ਤਕਨੀਕਾਂ ਦੀ ਪੜਚੋਲ ਕਰਨਾ

Rebasing

ਰੀਬੇਸਿੰਗ ਤੁਹਾਨੂੰ ਪ੍ਰਤੀਬੱਧ ਇਤਿਹਾਸ ਨੂੰ ਸੋਧ ਕੇ ਇੱਕ ਸ਼ਾਖਾ ਤੋਂ ਦੂਜੀ ਸ਼ਾਖਾ ਵਿੱਚ ਤਬਦੀਲੀਆਂ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ। ਇਹ ਸਰੋਤ ਸ਼ਾਖਾ ਤੋਂ ਟਾਰਗੇਟ ਸ਼ਾਖਾ 'ਤੇ ਕਮਿਟਾਂ ਨੂੰ ਦੁਬਾਰਾ ਚਲਾਉਂਦਾ ਹੈ। ਇਸ ਦੇ ਨਤੀਜੇ ਵਜੋਂ ਇੱਕ ਸਾਫ਼ ਅਤੇ ਵਧੇਰੇ ਰੇਖਿਕ ਪ੍ਰਤੀਬੱਧ ਇਤਿਹਾਸ ਹੁੰਦਾ ਹੈ।

ਉਦਾਹਰਨ: ਮੰਨ ਲਓ ਕਿ ਤੁਹਾਡੇ ਕੋਲ ਇੱਕ ਵਿਸ਼ੇਸ਼ਤਾ ਸ਼ਾਖਾ ਹੈ ਅਤੇ ਤੁਸੀਂ ਸ਼ਾਖਾ feature-branch ਤੋਂ ਨਵੀਨਤਮ ਤਬਦੀਲੀਆਂ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ । main ਤੁਸੀਂ ਹੇਠ ਦਿੱਤੀ ਕਮਾਂਡ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ:

git checkout feature-branch  
git rebase main  

ਇਹ ਬ੍ਰਾਂਚ ਤੋਂ ਕਮਿਟਸ main 'ਤੇ ਲਾਗੂ ਕਰੇਗਾ feature-branch । ਰੀਬੇਸ ਪ੍ਰਕਿਰਿਆ ਦੌਰਾਨ ਕਿਸੇ ਵੀ ਵਿਵਾਦ ਨੂੰ ਹੱਲ ਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇਗੀ।

 

Stashing

ਸਟੈਸ਼ਿੰਗ ਤੁਹਾਨੂੰ ਤੁਹਾਡੀਆਂ ਮੌਜੂਦਾ ਤਬਦੀਲੀਆਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੀ ਹੈ, ਜੋ ਕਿ ਪ੍ਰਤੀਬੱਧ ਹੋਣ ਲਈ ਤਿਆਰ ਨਹੀਂ ਹਨ, ਅਤੇ ਅਸਥਾਈ ਤੌਰ 'ਤੇ ਇੱਕ ਸਾਫ਼ ਕਾਰਜਸ਼ੀਲ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਵਾਪਸ ਪਰਤ ਸਕਦੇ ਹਨ। ਇਹ ਉਦੋਂ ਲਾਭਦਾਇਕ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਤੁਹਾਨੂੰ ਕਿਸੇ ਵੱਖਰੀ ਸ਼ਾਖਾ ਵਿੱਚ ਜਾਣ ਜਾਂ ਕਿਸੇ ਵੱਖਰੀ ਵਿਸ਼ੇਸ਼ਤਾ 'ਤੇ ਕੰਮ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਜੋ ਤੁਸੀਂ ਵਰਤਮਾਨ ਵਿੱਚ ਕੰਮ ਕਰ ਰਹੇ ਹੋ।

ਉਦਾਹਰਨ: ਮੰਨ ਲਓ ਕਿ ਤੁਸੀਂ ਇੱਕ ਵਿਸ਼ੇਸ਼ਤਾ ਸ਼ਾਖਾ 'ਤੇ ਕੰਮ ਕਰ ਰਹੇ ਹੋ ਅਤੇ ਤੁਸੀਂ ਕੁਝ ਬਦਲਾਅ ਕੀਤੇ ਹਨ, ਪਰ ਤੁਹਾਨੂੰ ਕਿਸੇ ਹੋਰ ਸ਼ਾਖਾ ਵਿੱਚ ਜਾਣ ਦੀ ਲੋੜ ਹੈ। ਤੁਸੀਂ ਆਪਣੀਆਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਲੁਕਾਉਣ ਲਈ ਹੇਠ ਲਿਖੀਆਂ ਕਮਾਂਡਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ:

git stash

ਨਵੀਂ ਬ੍ਰਾਂਚ 'ਤੇ ਜਾਣ ਤੋਂ ਬਾਅਦ, ਤੁਸੀਂ ਫਿਰ ਇਸ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਸਟੈਸ਼ ਕੀਤੀਆਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਲਾਗੂ ਕਰ ਸਕਦੇ ਹੋ:

git stash apply

 

Git Hooks

Git Hooks ਉਹ ਸਕ੍ਰਿਪਟਾਂ ਹਨ ਜੋ ਖਾਸ ਗਿੱਟ ਇਵੈਂਟਸ ਦੁਆਰਾ ਸ਼ੁਰੂ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ, ਜਿਵੇਂ ਕਿ ਪ੍ਰੀ-ਕਮਿਟ, ਪੋਸਟ-ਕਮਿਟ, ਪ੍ਰੀ-ਪੁਸ਼, ਆਦਿ। ਉਹ ਤੁਹਾਨੂੰ ਕੁਝ ਕਿਰਿਆਵਾਂ ਨੂੰ ਸਵੈਚਲਿਤ ਕਰਨ ਜਾਂ ਤੁਹਾਡੇ ਵਰਕਫਲੋ ਵਿੱਚ ਖਾਸ ਨਿਯਮਾਂ ਨੂੰ ਲਾਗੂ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੇ ਹਨ।

ਉਦਾਹਰਨ: ਮੰਨ ਲਓ ਕਿ ਤੁਸੀਂ ਕਮਿਟ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਆਪਣੇ ਕੋਡ 'ਤੇ ਇੱਕ ਲਿੰਟਰ ਚਲਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ। ਤੁਸੀਂ ਇੱਕ ਪ੍ਰੀ-ਕਮਿਟ ਹੁੱਕ ਸਕ੍ਰਿਪਟ ਬਣਾ ਸਕਦੇ ਹੋ ਜੋ ਲਿੰਟਰ ਨੂੰ ਚਾਲੂ ਕਰਦੀ ਹੈ ਅਤੇ ਜੇਕਰ ਕੋਈ ਲਿੰਟਿੰਗ ਗਲਤੀ ਹੁੰਦੀ ਹੈ ਤਾਂ ਕਮਿਟ ਨੂੰ ਰੋਕਦੀ ਹੈ।

 

Git Submodule

Git Submodule ਤੁਹਾਨੂੰ ਆਪਣੀ ਮੁੱਖ ਰਿਪੋਜ਼ਟਰੀ ਦੇ ਅੰਦਰ ਇੱਕ ਸਬ-ਡਾਇਰੈਕਟਰੀ ਵਜੋਂ ਇੱਕ ਹੋਰ Git ਰਿਪੋਜ਼ਟਰੀ ਸ਼ਾਮਲ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ। ਇਹ ਉਦੋਂ ਲਾਭਦਾਇਕ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਤੁਹਾਡੇ ਕੋਲ ਇੱਕ ਪ੍ਰੋਜੈਕਟ ਹੈ ਜੋ ਬਾਹਰੀ ਲਾਇਬ੍ਰੇਰੀਆਂ ਜਾਂ ਭਾਗਾਂ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ।

ਉਦਾਹਰਨ: ਤੁਹਾਡੇ ਕੋਲ ਇੱਕ ਪ੍ਰੋਜੈਕਟ ਹੈ ਜਿਸ ਲਈ ਇੱਕ ਖਾਸ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਲੋੜ ਹੈ। ਆਪਣੀ ਰਿਪੋਜ਼ਟਰੀ ਵਿੱਚ ਲਾਇਬ੍ਰੇਰੀ ਦੇ ਕੋਡ ਨੂੰ ਡੁਪਲੀਕੇਟ ਕਰਨ ਦੀ ਬਜਾਏ, ਤੁਸੀਂ ਇਸਨੂੰ ਸਬਮੋਡਿਊਲ ਵਜੋਂ ਜੋੜ ਸਕਦੇ ਹੋ। ਇਸ ਤਰ੍ਹਾਂ, ਤੁਸੀਂ ਲਾਇਬ੍ਰੇਰੀ ਕੋਡ ਨੂੰ ਵੱਖਰਾ ਰੱਖ ਸਕਦੇ ਹੋ ਅਤੇ ਲੋੜ ਪੈਣ 'ਤੇ ਇਸਨੂੰ ਆਸਾਨੀ ਨਾਲ ਅਪਡੇਟ ਕਰ ਸਕਦੇ ਹੋ।

 

Git Revert and Git Reset

Git Revert ਇੱਕ ਨਵੀਂ ਪ੍ਰਤੀਬੱਧਤਾ ਬਣਾ ਕੇ ਪਿਛਲੀ ਪ੍ਰਤੀਬੱਧਤਾ ਨੂੰ ਅਣਡੂ ਕਰਦਾ ਹੈ ਜੋ ਅਸਲ ਵਚਨਬੱਧਤਾ ਵਿੱਚ ਕੀਤੀਆਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਅਨਡੂ ਕਰਦਾ ਹੈ। Git Reset, ਦੂਜੇ ਪਾਸੇ, ਤੁਹਾਨੂੰ ਬ੍ਰਾਂਚ ਪੁਆਇੰਟਰ ਨੂੰ ਇੱਕ ਵੱਖਰੀ ਪ੍ਰਤੀਬੱਧਤਾ ਵਿੱਚ ਲਿਜਾਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ, ਪ੍ਰਤੀਬੱਧ ਇਤਿਹਾਸ ਤੋਂ ਕਮਿਟ ਨੂੰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਰੱਦ ਕਰਦੇ ਹੋਏ।

ਉਦਾਹਰਨ: ਜੇਕਰ ਤੁਸੀਂ ਆਖਰੀ ਵਚਨਬੱਧਤਾ ਨੂੰ ਅਨਡੂ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ git revert HEAD ਇੱਕ ਨਵੀਂ ਪ੍ਰਤੀਬੱਧਤਾ ਬਣਾਉਣ ਲਈ ਵਰਤ ਸਕਦੇ ਹੋ ਜੋ ਆਖਰੀ ਵਚਨਬੱਧਤਾ ਵਿੱਚ ਕੀਤੀਆਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਅਣਡੂ ਕਰਦਾ ਹੈ। ਜੇ ਤੁਸੀਂ ਆਖਰੀ ਕਮਿਟ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਰੱਦ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ git reset HEAD~1 ਬ੍ਰਾਂਚ ਪੁਆਇੰਟਰ ਨੂੰ ਇੱਕ ਕਮਿਟ ਦੁਆਰਾ ਵਾਪਸ ਲਿਜਾਣ ਲਈ ਵਰਤ ਸਕਦੇ ਹੋ.

 

Git ਵਿੱਚ ਇਹ ਉੱਨਤ ਸੰਕਲਪ ਤੁਹਾਡੀ ਰਿਪੋਜ਼ਟਰੀ ਨੂੰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਪ੍ਰਬੰਧਿਤ ਕਰਨ ਲਈ ਸ਼ਕਤੀਸ਼ਾਲੀ ਸਮਰੱਥਾ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ। ਉਹਨਾਂ ਨੂੰ ਕਿਵੇਂ ਵਰਤਣਾ ਹੈ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਕਦੋਂ ਲਾਗੂ ਕਰਨਾ ਹੈ ਇਹ ਸਮਝਣਾ ਤੁਹਾਡੇ Git ਵਰਕਫਲੋ ਅਤੇ ਪ੍ਰੋਜੈਕਟ ਪ੍ਰਬੰਧਨ ਨੂੰ ਬਹੁਤ ਵਧਾਏਗਾ।