Git విలీనం –no-ff ఎంపిక

Git Merge No Ff Option



Git యొక్క సులభమైన విలీన సామర్థ్యం దాని బలాలలో ఒకటి. విలీనం సమయంలో, ప్రస్తుత బ్రాంచ్ యొక్క HEAD మీరు విలీనం చేయడానికి ప్రయత్నిస్తున్న కమిట్ యొక్క పూర్వీకులు అని గమనించినప్పుడు git ఫాస్ట్-ఫార్వర్డ్ విలీనాన్ని ఉపయోగిస్తుంది. ఫాస్ట్ ఫార్వర్డ్ విలీనంలో, కొత్త కమిట్ లేదు. Git కేవలం పాయింటర్‌ను కదిలిస్తుంది. ఈ ప్రవర్తన కావాల్సినది కాకపోతే, విలీనం కోసం కొత్త కమిట్‌ను సృష్టించడానికి మీరు no-ff ఫ్లాగ్‌ని ఉపయోగించవచ్చు.

విలీనం ఫాస్ట్-ఫార్వర్డ్‌తో మరియు లేకుండా ఎలా కనిపిస్తుంది

వేగంగా ఫార్వర్డ్ చేసిన తర్వాత, మీ జిట్ చరిత్ర ఇలా కనిపిస్తుంది:







C0 -> C1 -> C2—> C3



అదే సంఖ్యలో కమిట్‌ల కోసం, ఫాస్ట్-ఫార్వర్డ్ లేకుండా విలీన చరిత్ర ఇక్కడ ఉంది:







మొదటి సందర్భంలో, శాఖలుగా ఉన్నట్లు ఎటువంటి సూచన లేదు. రెండవ సందర్భంలో, విలీనం ఎక్కడ జరిగిందో సూచించడానికి చరిత్ర C4 నిబద్ధతను చూపుతోంది.

ఒక ఉదాహరణ ద్వారా నడవడం

మీరు ఒక గిట్ రిపోజిటరీని సృష్టిస్తారు, ఒక శాఖను సృష్టించి, ఆపై వేగంగా మరియు ముందుకు లేకుండా విలీనాలను ప్రయత్నించండి.



విభాగం 1: సెటప్

ముందుగా, మీరు కింది దశలతో git రిపోజిటరీని సృష్టించవచ్చు:

$ mkdir my_project
$ cd my_project
$ git init
$ a.txt ని తాకండి
$ git యాడ్ -A
$ git కమిట్ -m 'C0: a.txt' కలుపుతోంది

ఇప్పుడు ఫీచర్లు అనే శాఖను సృష్టించి, కొన్ని మార్పులు చేద్దాం:

$ git శాఖ లక్షణాలు
$ git చెక్అవుట్ ఫీచర్లు
$ టచ్ b.txt
$ git యాడ్ -A
$ git కమిట్ -m 'C1: b.txt' కలుపుతోంది
$ టచ్ c.txt
$ git యాడ్ -A
$ git కమిట్ -m 'C2: c.txt' కలుపుతోంది
$ టచ్ d.txt
$ git యాడ్ -A
$ git కమిట్ -m 'C3: d.txt' కలుపుతోంది

సెక్షన్ 2: ఫాస్ట్-ఫార్వార్డింగ్‌తో విలీనం

మాస్టర్ బ్రాంచ్‌కు తిరిగి వెళ్లి ఫీచర్ల బ్రాంచ్‌ని దానిలో విలీనం చేద్దాం:

$git చెక్అవుట్మాస్టర్
$git విలీనంలక్షణాలు

అవుట్‌పుట్:

08076fb..9ee88eb ని అప్‌డేట్ చేస్తోంది
త్వరగా ముందుకు
b.txt | 0
c.txt | 0
d.txt | 0
3 ఫైళ్లు మార్చబడ్డాయి, 0 చొప్పనలు (+), 0 తొలగింపులు (-)
మోడ్ 100644 b.txt ని సృష్టించండి
మోడ్ సృష్టించు 100644 c.txt
మోడ్ సృష్టించు 100644 d.txt

మీరు చరిత్రను తనిఖీ చేస్తే, మీరు చూస్తారు:

$ git లాగ్ --oneline
9ee88eb C3: d.txt కలుపుతోంది
c72b92c C2: c.txt కలుపుతోంది
2e4039e C1: b.txt కలుపుతోంది
08076fb C0: a.txt కలుపుతోంది

కాబట్టి, ఫీచర్ల శాఖ నుండి అన్ని కమిట్‌లు ఇప్పుడు మాస్టర్ బ్రాంచ్‌లో ఉన్నాయి. మీరు మాస్టర్‌లో మార్పులు చేయడం కొనసాగిస్తే, ఫీచర్ల బ్రాంచ్ దానిలో ఎప్పుడు విలీనం చేయబడిందో తెలుసుకోవడానికి మార్గం లేదు.

సెక్షన్ 3: ఫాస్ట్-ఫార్వార్డింగ్ లేకుండా

కొత్త ఫోల్డర్ కోసం సెక్షన్ 1 ని రిపీట్ చేయండి.

అప్పుడు, ఫాస్ట్ ఫార్వార్డింగ్ లేకుండా విలీనాన్ని ప్రయత్నించండి:

$git చెక్అవుట్మాస్టర్
$git విలీనం --no-ffఫీచర్

ఇది మీ git యొక్క డిఫాల్ట్ టెక్స్ట్ ఎడిటర్‌లో కింది వాటిని తెరుస్తుంది:

శాఖను విలీనం చేయండి'లక్షణాలు'
# ఈ విలీనం ఎందుకు అవసరమో వివరించడానికి దయచేసి ఒక నిబద్ధత సందేశాన్ని నమోదు చేయండి,
# ప్రత్యేకించి ఇది అప్‌స్ట్రీమ్ అప్‌స్ట్రీమ్‌ని టాపిక్ బ్రాంచ్‌లో విలీనం చేస్తే.
#
# '#' తో ప్రారంభమయ్యే పంక్తులు విస్మరించబడతాయి మరియు ఖాళీ సందేశం నిలిపివేయబడుతుంది
# నిబద్ధత.

వ్యాఖ్యలను సవరించండి. ఈ సందర్భంలో, మీరు C4 ని జోడించవచ్చు: బ్రాంచ్ 'ఫీచర్‌లను' విలీనం చేయడానికి ముందు. అవుట్‌పుట్ ఇలా ఉండాలి:

'పునరావృత' వ్యూహం ద్వారా చేసిన విలీనం.
b.txt | 0
c.txt | 0
d.txt | 0
3 ఫైళ్లు మార్చబడ్డాయి, 0 చొప్పనలు (+), 0 తొలగింపులు (-)
మోడ్ 100644 b.txt ని సృష్టించండి
మోడ్ సృష్టించు 100644 c.txt
మోడ్ సృష్టించు 100644 d.txt

ఇప్పుడు మీరు చరిత్రను చెక్ చేస్తే, అది క్రింది విధంగా ఉండాలి:

$ git లాగ్ --oneline
e071527 C4: విలీనం శాఖ 'లక్షణాలు'
bb79c25 C3: d.txt కలుపుతోంది
692bd8c C2: c.txt కలుపుతోంది
a0df62a C1: b.txt కలుపుతోంది
7575971 C0: a.txt కలుపుతోంది

మీరు ఖచ్చితమైన మార్పులను కలిగి ఉన్నప్పటికీ, ఈ విలీన సంస్కరణలో అదనపు C4 కమిట్ ఉంది, ఇది ఫీచర్ల శాఖను మాస్టర్‌గా విలీనం చేయడాన్ని సూచిస్తుంది.

ముగింపు

Git విలీనం no-ff ఫ్లాగ్ మరింత చదవగలిగే చరిత్రను సృష్టించడానికి సహాయపడుతుంది. విలీనాలు ఎక్కడ జరిగిందో స్పష్టంగా చూపించే ట్యాగ్‌లను ఉంచడానికి ఇది మిమ్మల్ని అనుమతిస్తుంది. డీబగ్గింగ్ సమయంలో ఇది మీ సమయాన్ని మరియు కృషిని ఆదా చేస్తుంది.

తదుపరి అధ్యయనం:

ప్రస్తావనలు: