ਗਿੱਟ ਕਮਿਟ ਰਿਵਰਸਲ ਦੀ ਸੰਖੇਪ ਜਾਣਕਾਰੀ
ਸੌਫਟਵੇਅਰ ਡਿਵੈਲਪਮੈਂਟ ਵਿੱਚ, ਗਿੱਟ ਦੇ ਨਾਲ ਸੰਸਕਰਣ ਨਿਯੰਤਰਣ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨਾ ਜ਼ਰੂਰੀ ਹੈ। ਕਈ ਵਾਰ, ਡਿਵੈਲਪਰ ਪ੍ਰਦਰਸ਼ਨਾਂ ਜਾਂ ਹੋਰ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੀ ਜਾਂਚ ਕਰਨ ਵਰਗੇ ਕੰਮਾਂ ਲਈ ਸ਼ਾਖਾਵਾਂ ਨੂੰ ਬਦਲਣ ਤੋਂ ਪਹਿਲਾਂ ਆਪਣੇ ਕੰਮ ਦੀ ਸਥਿਤੀ ਨੂੰ ਬਚਾਉਣ ਲਈ ਅਸਥਾਈ ਕਮਿਟ ਕਰਦੇ ਹਨ। ਇਹ ਅਭਿਆਸ ਵਰਕਫਲੋ ਨੂੰ ਲਚਕੀਲਾ ਰੱਖਦਾ ਹੈ ਪਰ ਇਸ ਨਾਲ ਅਸਥਾਈ ਤਬਦੀਲੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ ਜੋ ਸਥਾਈ ਨਹੀਂ ਹੋਣੀਆਂ ਚਾਹੀਦੀਆਂ।
ਇਹ ਕੀਤੇ ਗਏ ਕੰਮ ਨੂੰ ਗੁਆਏ ਬਿਨਾਂ ਕਮਿਟਾਂ ਨੂੰ ਵਾਪਸ ਕਰਨ ਲਈ ਤਕਨੀਕਾਂ ਦੀ ਜ਼ਰੂਰਤ ਨੂੰ ਪੇਸ਼ ਕਰਦਾ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਅਸਥਾਈ ਤੌਰ 'ਤੇ ਤਬਦੀਲੀਆਂ ਕੀਤੀਆਂ ਹਨ ਅਤੇ ਤੁਹਾਡੇ ਪ੍ਰੋਜੈਕਟ ਦੀ ਪ੍ਰਗਤੀ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕੀਤੇ ਬਿਨਾਂ ਵਾਪਸ ਜਾਣ ਦੀ ਲੋੜ ਹੈ, ਤਾਂ ਇਹ ਸਮਝਣਾ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ ਸੋਧਾਂ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਦੇ ਹੋਏ ਇਹਨਾਂ ਕਮਿਟਾਂ ਨੂੰ ਕਿਵੇਂ ਵਾਪਸ ਕਰਨਾ ਹੈ।
ਹੁਕਮ | ਵਰਣਨ |
---|---|
git reset --soft HEAD^ | ਮੌਜੂਦਾ ਸ਼ਾਖਾ ਵਿੱਚ ਆਖਰੀ ਪ੍ਰਤੀਬੱਧਤਾ ਨੂੰ ਅਣਡੂਸ ਕਰਦਾ ਹੈ, ਪਰ ਤਬਦੀਲੀਆਂ ਨੂੰ ਪੜਾਅਵਾਰ ਛੱਡ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ (ਅਰਥਾਤ, ਦੁਬਾਰਾ ਪ੍ਰਤੀਬੱਧ ਹੋਣ ਲਈ ਤਿਆਰ)। |
git reset HEAD~1 | ਮੌਜੂਦਾ ਸ਼ਾਖਾ ਨੂੰ ਇੱਕ ਕਮਿਟ ਦੁਆਰਾ ਵਾਪਸ ਲੈ ਜਾਂਦਾ ਹੈ, ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਆਖਰੀ ਕਮਿਟ ਨੂੰ ਹਟਾ ਕੇ ਪਰ ਕਾਰਜਸ਼ੀਲ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਤਬਦੀਲੀਆਂ ਨੂੰ ਛੱਡਦਾ ਹੈ। |
git add . | ਮੌਜੂਦਾ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਸਾਰੀਆਂ ਬਦਲੀਆਂ ਹੋਈਆਂ ਫਾਈਲਾਂ ਨੂੰ ਸਟੇਜਿੰਗ ਖੇਤਰ ਵਿੱਚ ਜੋੜਦਾ ਹੈ, ਉਹਨਾਂ ਨੂੰ ਇੱਕ ਵਚਨਬੱਧਤਾ ਲਈ ਤਿਆਰ ਕਰਦਾ ਹੈ। |
git commit -m "Your message here" | ਵਰਤਮਾਨ ਵਿੱਚ ਪੜਾਅਵਾਰ ਸਾਰੀਆਂ ਤਬਦੀਲੀਆਂ ਦੇ ਨਾਲ ਇੱਕ ਨਵੀਂ ਪ੍ਰਤੀਬੱਧਤਾ ਬਣਾਉਂਦਾ ਹੈ ਅਤੇ ਇੱਕ ਉਪਭੋਗਤਾ ਦੁਆਰਾ ਪ੍ਰਦਾਨ ਕੀਤਾ ਗਿਆ ਪ੍ਰਤੀਬੱਧ ਸੁਨੇਹਾ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ। |
git push origin development-branch | ਲੋਕਲ 'ਵਿਕਾਸ-ਸ਼ਾਖਾ' ਤੋਂ ਸੰਬੰਧਿਤ ਰਿਮੋਟ ਸ਼ਾਖਾ ਤੱਕ ਕਮਿਟ ਨੂੰ ਧੱਕਦਾ ਹੈ। |
git push origin development-branch -f | ਰਿਮੋਟ ਬ੍ਰਾਂਚ ਨੂੰ ਜ਼ਬਰਦਸਤੀ ਧੱਕਦਾ ਹੈ, ਸੰਭਾਵੀ ਤੌਰ 'ਤੇ ਰਿਮੋਟ ਰਿਪੋਜ਼ਟਰੀ ਵਿੱਚ ਤਬਦੀਲੀਆਂ ਨੂੰ ਓਵਰਰਾਈਟ ਕਰਦਾ ਹੈ। ਸਾਵਧਾਨੀ ਨਾਲ ਵਰਤਿਆ. |
ਗਿੱਟ ਰਿਵਰਸ਼ਨ ਸਕ੍ਰਿਪਟਾਂ ਦੀ ਵਿਆਖਿਆ
ਪਹਿਲਾਂ ਪ੍ਰਦਾਨ ਕੀਤੀਆਂ ਸਕ੍ਰਿਪਟਾਂ ਕੋਡਬੇਸ ਵਿੱਚ ਕੀਤੀਆਂ ਸੋਧਾਂ ਨੂੰ ਗੁਆਏ ਬਿਨਾਂ ਇੱਕ Git ਰਿਪੋਜ਼ਟਰੀ ਵਿੱਚ ਤਬਦੀਲੀਆਂ ਦਾ ਪ੍ਰਬੰਧਨ ਅਤੇ ਉਲਟਾਉਣ ਲਈ ਤਿਆਰ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ। ਦ ਕਮਾਂਡ ਮਹੱਤਵਪੂਰਨ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਮੌਜੂਦਾ ਸ਼ਾਖਾ 'ਤੇ ਸਭ ਤੋਂ ਤਾਜ਼ਾ ਪ੍ਰਤੀਬੱਧਤਾ ਨੂੰ ਰੱਦ ਕਰਦਾ ਹੈ ਜਦੋਂ ਕਿ ਸਾਰੀਆਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਪੜਾਅਵਾਰ ਸਥਿਤੀ ਵਿੱਚ ਰੱਖਦੇ ਹੋਏ। ਇਹ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਲਾਭਦਾਇਕ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਇੱਕ ਕਮਿਟ ਸਮੇਂ ਤੋਂ ਪਹਿਲਾਂ ਜਾਂ ਸਿਰਫ਼ ਇੱਕ ਅਸਥਾਈ ਪਲੇਸਹੋਲਡਰ ਵਜੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਫਾਈਲ ਸੋਧਾਂ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਦੇ ਹੋਏ ਇੱਕ ਵਚਨਬੱਧਤਾ ਨੂੰ ਵਾਪਸ ਕਰਨ ਦੀ ਯੋਗਤਾ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਲੋੜ ਅਨੁਸਾਰ ਤਬਦੀਲੀਆਂ ਦਾ ਮੁੜ ਮੁਲਾਂਕਣ ਕਰਨ ਅਤੇ ਮੁੜ-ਕਮਿਟ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ।
ਰੀਸੈਟ ਦੇ ਬਾਅਦ, ਕਮਾਂਡਾਂ ਜਿਵੇਂ ਕਿ ਅਤੇ ਨੂੰ ਮੁੜ-ਪੜਾਅ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਇੱਕ ਵਧੇਰੇ ਢੁਕਵੇਂ ਪ੍ਰਤੀਬੱਧ ਸੁਨੇਹੇ ਨਾਲ ਤਬਦੀਲੀਆਂ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਕਾਰਵਾਈਆਂ ਦੀ ਇਹ ਲੜੀ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ ਕਿ ਕੀਤੇ ਗਏ ਕੰਮ ਦੀ ਇਕਸਾਰਤਾ ਨੂੰ ਕਾਇਮ ਰੱਖਦੇ ਹੋਏ ਅਸਥਾਈ ਪ੍ਰਤੀਬੱਧਤਾ ਸ਼ਾਖਾ ਦੇ ਇਤਿਹਾਸ ਵਿੱਚ ਦਖਲ ਨਹੀਂ ਦਿੰਦੀ ਹੈ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਰਿਮੋਟ ਰਿਪੋਜ਼ਟਰੀ ਨੂੰ ਨਵੀਂ ਕਮਿਟ ਨਾਲ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, ਜੇਕਰ ਫੋਰਸ ਪੁਸ਼ ਕਰਦਾ ਹੈ ਤਾਂ ਅਸਥਾਈ ਨੂੰ ਬਦਲਣਾ git push -f ਪ੍ਰੋਜੈਕਟ ਦੇ ਸਹਿਯੋਗ ਦੇ ਨਿਯਮਾਂ ਦੇ ਆਧਾਰ 'ਤੇ ਜ਼ਰੂਰੀ ਸਮਝਿਆ ਜਾਂਦਾ ਹੈ।
ਡਾਟਾ ਗੁਆਏ ਬਿਨਾਂ ਅਸਥਾਈ ਗਿੱਟ ਕਮਿਟਾਂ ਨੂੰ ਵਾਪਸ ਕਰਨਾ
ਗਿੱਟ ਕਮਾਂਡ ਲਾਈਨ ਇੰਟਰਫੇਸ ਦੀ ਵਰਤੋਂ ਕਰਨਾ
git checkout development-branch
git reset --soft HEAD^
# Now the changes are staged but the last commit is undone.
git status
# Shows staged changes. You can now modify if necessary, or commit again.
git add .
git commit -m "New commit after undoing temporary commit"
git log
# Confirm the new commit history.
git push origin development-branch
ਕੋਡ ਤਬਦੀਲੀਆਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਣ ਲਈ ਗਿੱਟ ਵਿੱਚ ਅਸਥਾਈ ਕਮਿਟਾਂ ਨੂੰ ਸੰਭਾਲਣਾ
ਲਚਕਦਾਰ ਸੰਸਕਰਣ ਨਿਯੰਤਰਣ ਲਈ ਗਿੱਟ ਕਮਾਂਡਾਂ ਨੂੰ ਲਾਗੂ ਕਰਨਾ
git checkout development-branch
git reset HEAD~1
# This command undoes the last commit and leaves the changes in your working directory.
git status
# You can see the changes are not staged for commit.
git add .
git commit -m "Recommitting the preserved changes"
git log
# Check to make sure the history is as expected.
git push origin development-branch -f
ਅਸਥਾਈ ਤਬਦੀਲੀਆਂ ਲਈ ਐਡਵਾਂਸਡ ਗਿੱਟ ਤਕਨੀਕਾਂ
ਅਸਥਾਈ ਤਬਦੀਲੀਆਂ ਨੂੰ ਕੁਸ਼ਲਤਾ ਨਾਲ ਸੰਭਾਲਣ ਲਈ ਗਿੱਟ ਦੀ ਸਮਰੱਥਾ ਦਾ ਵਿਸਥਾਰ ਕਰਦੇ ਹੋਏ, 'ਸਟੇਸ਼ਿੰਗ' ਦੀ ਧਾਰਨਾ ਨੂੰ ਸਮਝਣਾ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਗਿੱਟ ਸਟੈਸ਼ ਇੱਕ ਸ਼ਕਤੀਸ਼ਾਲੀ ਟੂਲ ਹੈ ਜੋ ਅਸਥਾਈ ਤੌਰ 'ਤੇ ਸੰਸਕਰਨ ਇਤਿਹਾਸ ਵਿੱਚ ਉਹਨਾਂ ਨੂੰ ਵਚਨਬੱਧ ਕਰਨ ਦੀ ਲੋੜ ਤੋਂ ਬਿਨਾਂ ਅਸਥਾਈ ਤੌਰ 'ਤੇ ਬਦਲਾਵਾਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਕਰਦਾ ਹੈ। ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ ਉਦੋਂ ਲਾਭਦਾਇਕ ਹੁੰਦੀ ਹੈ ਜਦੋਂ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਅੱਧੇ ਕੰਮ ਕੀਤੇ ਬਿਨਾਂ ਬ੍ਰਾਂਚਾਂ ਵਿਚਕਾਰ ਪ੍ਰਸੰਗਾਂ ਨੂੰ ਤੇਜ਼ੀ ਨਾਲ ਬਦਲਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਸਟੈਸ਼ਿੰਗ ਪੜਾਅਵਾਰ ਅਤੇ ਅਣ-ਸਟੈਜਡ ਤਬਦੀਲੀਆਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦੀ ਹੈ ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਮੁੜ ਬਹਾਲ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ, ਜੋ ਵਿਕਾਸ ਦੇ ਦੌਰਾਨ ਫੋਕਸ ਵਿੱਚ ਅਚਾਨਕ ਤਬਦੀਲੀਆਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਆਦਰਸ਼ ਹੈ।
ਇੱਕ ਹੋਰ ਅਹਿਮ ਪਹਿਲੂ ਹੈ ਜ਼ੋਰ-ਜ਼ਬਰਦਸਤੀ ਦੇ ਪ੍ਰਭਾਵਾਂ ਨੂੰ ਸਮਝਣਾ . ਇਹ ਕਮਾਂਡ ਰਿਮੋਟ ਰਿਪੋਜ਼ਟਰੀ ਵਿੱਚ ਇਤਿਹਾਸ ਨੂੰ ਓਵਰਰਾਈਟ ਕਰ ਸਕਦੀ ਹੈ, ਜੋ ਕਿ ਉਦੋਂ ਉਪਯੋਗੀ ਹੁੰਦੀ ਹੈ ਜਦੋਂ ਗਲਤੀ ਨਾਲ ਕੀਤੇ ਗਏ ਕਮਿਟਾਂ ਨੂੰ ਠੀਕ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ ਜਾਂ ਜੋ ਅਸਥਾਈ ਸਨ। ਹਾਲਾਂਕਿ, ਇਸਦੀ ਵਰਤੋਂ ਸਾਵਧਾਨੀ ਨਾਲ ਕੀਤੀ ਜਾਣੀ ਚਾਹੀਦੀ ਹੈ ਕਿਉਂਕਿ ਇਹ ਸਹੀ ਢੰਗ ਨਾਲ ਸੰਚਾਰ ਨਾ ਕੀਤੇ ਜਾਣ 'ਤੇ ਟੀਮ ਦੇ ਹੋਰ ਮੈਂਬਰਾਂ ਲਈ ਗੁੰਮ ਹੋਈ ਪ੍ਰਤੀਬੱਧਤਾ ਦਾ ਕਾਰਨ ਬਣ ਸਕਦਾ ਹੈ। ਇਹਨਾਂ ਉੱਨਤ ਤਕਨੀਕਾਂ ਨੂੰ ਸਮਝਣਾ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਸਹਿਯੋਗੀ ਵਾਤਾਵਰਣ ਵਿੱਚ ਇੱਕ ਸਾਫ਼ ਅਤੇ ਕੁਸ਼ਲ ਪ੍ਰੋਜੈਕਟ ਇਤਿਹਾਸ ਨੂੰ ਕਾਇਮ ਰੱਖਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।
- ਦਾ ਮਕਸਦ ਕੀ ਹੈ ?
- ਇਹ ਕਮਾਂਡ ਤੁਹਾਡੀ ਮੌਜੂਦਾ ਸ਼ਾਖਾ ਵਿੱਚ ਆਖਰੀ ਕਮਿਟ ਨੂੰ ਅਨਡੂ ਕਰਨ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਹੈ, ਪਰ ਇਹ ਤਬਦੀਲੀਆਂ ਨੂੰ ਜਾਰੀ ਰੱਖਦੀ ਹੈ।
- ਮੈਂ ਉਹਨਾਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਕਿਵੇਂ ਸੁਰੱਖਿਅਤ ਕਰਾਂ ਜੋ ਮੈਂ ਤੁਰੰਤ ਨਹੀਂ ਕਰਨਾ ਚਾਹੁੰਦਾ?
- ਤੁਸੀਂ ਵਰਤ ਸਕਦੇ ਹੋ ਅਸਥਾਈ ਤੌਰ 'ਤੇ ਤੁਹਾਡੀਆਂ ਅਸਥਾਈ ਤਬਦੀਲੀਆਂ ਨੂੰ ਸਟੋਰ ਕਰਨ ਲਈ।
- ਕੀ ਛੁਪੀਆਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਬਹਾਲ ਕਰਨਾ ਸੰਭਵ ਹੈ?
- ਜੀ, ਵਰਤ ਕੇ ਤੁਸੀਂ ਪਹਿਲਾਂ ਸਟੋਰ ਕੀਤੀਆਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਦੁਬਾਰਾ ਲਾਗੂ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਸਟੈਸ਼ ਸੂਚੀ ਵਿੱਚੋਂ ਹਟਾ ਸਕਦੇ ਹੋ।
- ਵਰਤਣ ਦਾ ਜੋਖਮ ਕੀ ਹੈ ?
- ਫੋਰਸ-ਪੁਸ਼ਿੰਗ ਰਿਮੋਟ ਰਿਪੋਜ਼ਟਰੀ ਵਿੱਚ ਤਬਦੀਲੀਆਂ ਨੂੰ ਓਵਰਰਾਈਟ ਕਰ ਸਕਦੀ ਹੈ, ਜੇਕਰ ਸਾਵਧਾਨੀ ਨਾਲ ਨਾ ਵਰਤੀ ਜਾਵੇ ਤਾਂ ਸੰਭਾਵੀ ਤੌਰ 'ਤੇ ਦੂਜਿਆਂ ਲਈ ਕੰਮ ਖਤਮ ਹੋ ਸਕਦਾ ਹੈ।
- ਕੀ ਮੈਂ ਇੱਕ ਗਿੱਟ ਸਟੈਸ਼ ਨੂੰ ਅਨਡੂ ਕਰ ਸਕਦਾ/ਦੀ ਹਾਂ?
- ਇੱਕ ਸਟੈਸ਼ ਨੂੰ ਅਨਡੂ ਕਰਨਾ ਤਬਦੀਲੀਆਂ ਨੂੰ ਮੁੜ-ਸਟੇਸ਼ ਕਰਕੇ ਜਾਂ ਸਿਰਫ਼ ਸਟੈਸ਼ ਨੂੰ ਲਾਗੂ ਨਾ ਕਰਕੇ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
Git ਵਿੱਚ ਅਸਥਾਈ ਪ੍ਰਤੀਬੱਧਤਾਵਾਂ ਦਾ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਪ੍ਰਬੰਧਨ ਕਰਨਾ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਇੱਕ ਸਾਫ਼ ਪ੍ਰੋਜੈਕਟ ਇਤਿਹਾਸ ਨੂੰ ਕਾਇਮ ਰੱਖਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ ਅਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਸਾਰੀਆਂ ਤਬਦੀਲੀਆਂ ਦਾ ਲੇਖਾ-ਜੋਖਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਭਾਵੇਂ ਤਰਜੀਹਾਂ ਬਦਲੀਆਂ ਹੋਣ। git ਰੀਸੈਟ, git stash, ਅਤੇ git push ਵਰਗੀਆਂ ਕਮਾਂਡਾਂ ਦਾ ਲਾਭ ਲੈ ਕੇ, ਡਿਵੈਲਪਰ ਮਹੱਤਵਪੂਰਨ ਤਬਦੀਲੀਆਂ ਨੂੰ ਗੁਆਏ ਬਿਨਾਂ ਵੱਖ-ਵੱਖ ਵਿਕਾਸ ਦ੍ਰਿਸ਼ਾਂ ਵਿੱਚ ਚਾਲ ਚਲਾ ਸਕਦੇ ਹਨ। ਇਹ ਸਾਧਨ ਕਿਸੇ ਵੀ ਡਿਵੈਲਪਰ ਲਈ ਜ਼ਰੂਰੀ ਹਨ ਜੋ ਆਪਣੇ ਸੰਸਕਰਣ ਨਿਯੰਤਰਣ ਅਭਿਆਸਾਂ ਨੂੰ ਵਧਾਉਣਾ ਚਾਹੁੰਦੇ ਹਨ ਅਤੇ ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਦੇ ਹਨ ਕਿ ਉਹਨਾਂ ਦਾ ਪ੍ਰੋਜੈਕਟ ਵਿਕਾਸ ਦੀਆਂ ਬਦਲਦੀਆਂ ਜ਼ਰੂਰਤਾਂ ਦੇ ਅਨੁਕੂਲ ਬਣਿਆ ਰਹੇ।