GitHub දෙබලක ගබඩාවක් යාවත්කාලීන කරන්නේ කෙසේද?


3618

මම මෑතකදී ව්‍යාපෘතියක් ආරම්භ කර නිවැරදි කිරීම් කිහිපයක් යෙදුවෙමි. පසුව මම අදින්න ඉල්ලීමක් ඉදිරිපත් කළෙමි.

දින කිහිපයකට පසු තවත් දායකයෙකු විසින් තවත් වෙනසක් සිදු කරන ලදී. ඉතින් මගේ දෙබලක ඒ වෙනස අඩංගු නොවේ.

එම වෙනස මගේ දෙබල තුළට ගෙන යන්නේ කෙසේද? මට දායක වීමට තවත් වෙනස්කම් ඇති විට මගේ දෙබල මකා දමා නැවත නිර්මාණය කිරීමට අවශ්‍යද? නැතහොත් යාවත්කාලීන බොත්තමක් තිබේද?


121
මෙය ගිතුබ් යූඅයි වෙතින් ද කළ හැකිය. [මෙම අනෙක් පෝස්ටරයට] ගෞරවය දීමට මම කැමතියි [1]. [1]: stackoverflow.com/a/21131381/728141
මයික් ෂ්‍රෝල්

2
මේ පිළිබඳ තවත් හොඳ බ්ලොග් සටහනක්
Arup Rakshit


2
මෙය stackoverflow.com/questions/3903817/… හි අනුපිටපතක්ද ?
ඩේවිඩ් කැරි

Answers:


3990

ඔබගේ දෙබලක ගබඩාවේ දේශීය ක්ලෝනය තුළ, ඔබට මුල් GitHub ගබඩාව "දුරස්ථ" ලෙස එක් කළ හැකිය. ("දුරස්ථ" යනු නිධි වල URL වල අන්වර්ථ නාමයන් හා සමානයි - originඋදාහරණයක් ලෙස.) එවිට ඔබට එම උඩු ගබඩාවෙන් සියලුම ශාඛා ලබා ගත හැකි අතර උඩුමහලේ අනුවාදය මත දිගටම වැඩ කිරීම සඳහා ඔබේ වැඩ නැවත ප්‍රතිස්ථාපනය කරන්න. පෙනෙන විධාන අනුව:

# Add the remote, call it "upstream":

git remote add upstream https://github.com/whoever/whatever.git

# Fetch all the branches of that remote into remote-tracking branches,
# such as upstream/master:

git fetch upstream

# Make sure that you're on your master branch:

git checkout master

# Rewrite your master branch so that any commits of yours that
# aren't already in upstream/master are replayed on top of that
# other branch:

git rebase upstream/master

ඔබේ ප්‍රධාන ශාඛාවේ ඉතිහාසය නැවත ලිවීමට ඔබට අවශ්‍ය නැතිනම් (උදාහරණයක් ලෙස අනෙක් අය එය ක්ලෝන කර ඇති නිසා) ඔබ අවසාන විධානය ආදේශ කළ යුතුය git merge upstream/master. කෙසේ වෙතත්, හැකිතාක් පිරිසිදුව තබා ඇති තවත් ඉල්ලීම් ඉදිරිපත් කිරීම සඳහා, නැවත ප්‍රතිස්ථාපනය කිරීම වඩා හොඳය.


ඔබ ඔබේ ශාඛාව නැවත ප්‍රතිස්ථාපනය කර ඇත්නම්, upstream/masterඑය GitHub හි ඇති ඔබේම දෙබලක ගබඩාවට තල්ලු කිරීම සඳහා තල්ලුව බල කිරීමට අවශ්‍ය විය හැකිය. ඔබ එය කරන්නේ:

git push -f origin master

ඔබට අවශ්‍ය වන්නේ -fඔබ නැවත ප්‍රතිනිර්මාණය කිරීමෙන් පසු පළමු වරට පමණි .


94
ඔබේ දෙබලක පවතින්නේ ගිතුබ්හි පමණක් වන අතර, වෙබ් අතුරු මුහුණත හරහා ඒකාබද්ධ කිරීම සඳහා මෙවලම් ගිතූබ් සතුව නොමැති බැවින්, නිවැරදි පිළිතුර වන්නේ උඩුගං බලා දේශීයව ඒකාබද්ධ වී වෙනස්කම් ඔබේ දෙබල වෙත තල්ලු කිරීමයි.
ටිම් කීටින්


50
ඔබ පිරිසිදු තත්වයෙන් ආරම්භ කරන බව සහතික කිරීම සඳහා ඔබේම ශාඛාව නැවත ප්‍රතිස්ථාපනය කිරීමට වඩා ඉක්මන් සටහනක්, ඔබ බොහෝ විට වෙනම ශාඛාවක වැඩ කර එයින් ඉල්ලීමක් කළ යුතුය. මෙය අනාගත ඒකාබද්ධ කිරීම් සඳහා ඔබේ ස්වාමියා පිරිසිදුව තබා ගන්නා අතර -fඔබේ අනුවාදය ක්ලෝන කළ හැකි සියල්ලන් අවුල් කරන ඉතිහාසය නැවත ලිවීමෙන් එය වළක්වයි .
මාටියස් කොවාල්සික්

11
රීබේස් විධානය වෙනුවට, මම පහත සඳහන් දෑ භාවිතා කළෙමි: git merge --no-ff upstream/masterමේ ආකාරයෙන් ඔබේ කොමිස් තවදුරටත් ඉහළින් නොමැත.
ස්ටෙක්ඩොසරිච්

52
තවත් Git අසමත් වීම. මෙම මෙවලම් බෙදා හරින ලද සහයෝගීතාවයට සහය දැක්විය යුතු නම්, මූලික කාර්ය ප්‍රවාහයක් සිදු කිරීම එතරම් අපහසු ඇයි? මිලියන 4 ක ජනතාවක් සහ ඉහළට 2200 ක් අදහස් කරන්නේ මෙවලම අසාර්ථක වූ බවයි. "ඔබට මුල් GitHub නිධිය" දුරස්ථ "ලෙස එකතු කළ හැකිය - යමෙකුට මෙය කිරීමට පවා සිදුවන්නේ ඇයි? එය
දෙබලකදී සිදු නොවන්නේ

741

2014 මැයි මාසයේ සිට, GitHub වෙතින් කෙලින්ම දෙබලක යාවත්කාලීන කළ හැකිය. මෙය තවමත් 2017 සැප්තැම්බර් වන විට ක්‍රියාත්මක වේ, නමුත් එය අපිරිසිදු කැපවීමේ ඉතිහාසයකට තුඩු දෙනු ඇත.

  1. GitHub හි ඔබේ දෙබල විවෘත කරන්න.
  2. මත ක්ලික් කරන්න Pull Requests .
  3. මත ක්ලික් කරන්න New Pull Request. පෙරනිමියෙන්, GitHub මුල් පිටපත ඔබේ දෙබල සමඟ සංසන්දනය කරනු ඇත, ඔබ කිසිදු වෙනසක් නොකළේ නම් සංසන්දනය කිරීමට කිසිවක් නොතිබිය යුතුය.
  4. switching the baseඔබ එම සබැඳිය දුටුවහොත් ක්ලික් කරන්න . එසේ නොමැතිනම්, base forkබිංදුව ඔබේ දෙබලකටත්, උඩුමහලටත් අතින් සකසන්න head fork. දැන් GitHub ඔබේ දෙබලක මුල් පිටපත සමඟ සංසන්දනය කරනු ඇති අතර ඔබ සියලු නවතම වෙනස්කම් දැකිය යුතුය. රූප විස්තරය මෙහි ඇතුළත් කරන්න
  5. Create pull requestඔබගේ අදින්න ඉල්ලීමට පුරෝකථනය කළ හැකි නමක් යොදන්න (උදා. Update from original).
  6. පහළට අනුචලනය කරන්න Merge pull request, නමුත් තවම කිසිවක් ක්ලික් නොකරන්න.

දැන් ඔබට විකල්ප තුනක් ඇත, නමුත් සෑම එකක්ම පිරිසිදු කැපවීමේ ඉතිහාසයකට තුඩු දෙනු ඇත.

  1. පෙරනිමිය කැත ඒකාබද්ධ කිරීමේ බැඳීමක් ඇති කරයි.
  2. ඔබ පතන ක්ලික් කර "ස්කොෂ් සහ ඒකාබද්ධ කිරීම" තෝරන්නේ නම්, මැදිහත් වන සියලු බැඳීම් එකකට බෙදේ. මෙය බොහෝ විට ඔබට අවශ්‍ය නොවන දෙයකි.
  3. ඔබ ක්ලික් කළහොත් Rebase and merge, සියලු කොමිස් ඔබ සමඟ "කරනු ඇත", මුල් PRs ඔබේ PR සමඟ සම්බන්ධ වන අතර GitHub දර්ශණය This branch is X commits ahead, Y commits behind <original fork>වේ.

ඉතින් ඔව්, ඔබට GitHub වෙබ් UI භාවිතයෙන් ඔබේ ගබඩාව යාවත්කාලීනව තබා ගත හැකිය, නමුත් එසේ කිරීමෙන් ඔබගේ කැපවීමේ ඉතිහාසය අවලංගු වේ. ඒ වෙනුවට විධාන රේඛාවට ඇලී සිටින්න - එය පහසුය.


19
මෙය එක් වරක් විශිෂ්ට ලෙස ක්‍රියාත්මක විය. දෙවන වරට මෙම ක්‍රියාවලිය එකම ආකාරයකින් ක්‍රියාත්මක නොවීය: “පදනම මාරු කිරීම” සබැඳිය නොපෙන්වයි. මම "අදින්න ඉල්ලීමක් නිර්මාණය කිරීමට ක්ලික් කරන්න" එබූ විට එය SOURCE repo හි PR එකක් නිර්මාණය කළේය. මට අවශ්‍ය දේ නොවේ ..
javadba

29
තවමත් ක්‍රියාත්මක වේ (මාර්තු 2015), සියල්ලම "පදනම මාරු කිරීම" සබැඳිය තවදුරටත් එහි නොමැත. ඔබ "බේස්" ඩ්‍රොප් ඩවුන් වෙනස් කළ යුතු අතර ඒ නිසා දෙකම ඔබේ දෙබල වෙත යොමු වන අතර පසුව ඔබට "රෙපෝස් හරහා සංසන්දනය කරන්න" සඳහා විමසුමක් ලැබෙනු ඇත, එමඟින් ඔබට අවශ්‍ය ස්ථානයට ඔබව ගෙන යනු ඇත.
mluisbrown

8
අප්රේල් 2015. වැඩ. ස්තූතියි. මට "පාදම වෙත මාරුවීම" ලැබුණි. කෙසේ වෙතත්, 6 වන පියවර වූයේ "අදින්න ඉල්ලීම සාදන්න" -> අදහස් දක්වන්න -> "අදින්න ඉල්ලීම සාදන්න". මුල් පිටපතට වඩා 1 කැපවීමකින් අවසන් කරන්න.
කරත්තය

5
art කාට්ලන්ඩ් (හෝ වෙනත්) - ඔව්, එය පවසන්නේ "මෙම ශාඛාව 1 ඉදිරියෙන් සිටී ..." මෙය කරදර විය යුතු දෙයක්ද? එම පණිවිඩයෙන් මිදීමට හැකිද?
රෙනීපෙට්

11
සරලව යාවත්කාලීන කිරීම හෝ සමමුහුර්ත බොත්තමක් සමඟ එය වඩා හොඳ නොවේද!
ට්‍රාන්ස්ෆෝමර්

457

දෙබලක සමමුහුර්ත කිරීම පිළිබඳ GitHub හි නිල ලේඛනය මෙන්න :

දෙබලක සමමුහුර්ත කිරීම

පිහිටුවා ඇති

ඔබට සමමුහුර්ත වීමට පෙර, ඔබ උඩු ගබඩාවට යොමු කරන දුරස්ථයක් එක් කළ යුතුය. ඔබ මුලින් දෙබලක සිටියදී මෙය කර ඇති.

ඉඟිය: ඔබේ දෙබල සමමුහුර්ත කිරීම මඟින් ඔබේ ගබඩාවේ දේශීය පිටපත පමණක් යාවත්කාලීන වේ; එය ඔබගේ ගබඩාව GitHub හි යාවත්කාලීන නොකරයි.

$ git remote -v
# List the current remotes
origin  https://github.com/user/repo.git (fetch)
origin  https://github.com/user/repo.git (push)

$ git remote add upstream https://github.com/otheruser/repo.git
# Set a new remote

$ git remote -v
# Verify new remote
origin    https://github.com/user/repo.git (fetch)
origin    https://github.com/user/repo.git (push)
upstream  https://github.com/otheruser/repo.git (fetch)
upstream  https://github.com/otheruser/repo.git (push)

සමමුහුර්ත කිරීම

ඔබේ ගබඩාව උඩු මහල සමඟ සමමුහුර්ත කිරීමට පියවර දෙකක් අවශ්‍ය වේ: පළමුව ඔබ දුරස්ථයෙන් ලබා ගත යුතුය, ඉන්පසු ඔබ අපේක්ෂිත ශාඛාව ඔබේ ප්‍රාදේශීය ශාඛාවට ඒකාබද්ධ කළ යුතුය.

ලබා ගැනීම

දුරස්ථ ගබඩාවෙන් ලබා ගැනීම එහි ශාඛා සහ ඒ ඒ කොමිස් ගෙන එනු ඇත. මේවා විශේෂ ශාඛා යටතේ ඔබේ දේශීය ගබඩාවේ ගබඩා කර ඇත.

$ git fetch upstream
# Grab the upstream remote's branches
remote: Counting objects: 75, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 62 (delta 27), reused 44 (delta 9)
Unpacking objects: 100% (62/62), done.
From https://github.com/otheruser/repo
 * [new branch]      master     -> upstream/master

අප සතුව උඩුමහලේ ප්‍රධාන ශාඛාව දේශීය ශාඛාවක ගබඩා කර ඇත

$ git branch -va
# List all local and remote-tracking branches
* master                  a422352 My local commit
  remotes/origin/HEAD     -> origin/master
  remotes/origin/master   a422352 My local commit
  remotes/upstream/master 5fdff0f Some upstream commit

ඒකාබද්ධ කිරීම

දැන් අපි උඩුමහලේ ගබඩාව ලබාගෙන ඇති බැවින්, එහි වෙනස්කම් අපගේ ප්‍රාදේශීය ශාඛාවට ඒකාබද්ධ කිරීමට අපට අවශ්‍යය. මෙමඟින් අපගේ ප්‍රාදේශීය වෙනස්කම් අහිමි නොවී එම ශාඛාව උඩුගං බලා සමපාත වේ.

$ git checkout master
# Check out our local master branch
Switched to branch 'master'

$ git merge upstream/master
# Merge upstream's master into our own
Updating a422352..5fdff0f
Fast-forward
 README                    |    9 -------
 README.md                 |    7 ++++++
 2 files changed, 7 insertions(+), 9 deletions(-)
 delete mode 100644 README
 create mode 100644 README.md

ඔබේ ප්‍රාදේශීය ශාඛාවට අද්විතීය කොමිස් කිසිවක් නොතිබුනේ නම්, ඒ වෙනුවට git විසින් “වේගයෙන් ඉදිරියට” යනු ඇත:

$ git merge upstream/master
Updating 34e91da..16c56ad
Fast-forward
 README.md                 |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

ඉඟිය: ඔබට GitHub හි ඔබේ ගබඩාව යාවත්කාලීන කිරීමට අවශ්‍ය නම්, මෙහි ඇති උපදෙස් අනුගමනය කරන්න


1
මෙය මගේ දේශීය දෙබල යාවත්කාලීන කරයි, නමුත් ගිතුබ්.කොම් හි මගේ දෙබලක තවමත් "43 පසුපසින්" යයි කියයි. මාස්ටර් වෙනස්කම් මගේ ගිතුබ්.කොම් දෙබලක සමඟ ඒකාබද්ධ කිරීම සඳහා මට ඉල්ලීමක් නිර්මාණය කිරීමට ලොබ්සික්ගේ තාක්ෂණය භාවිතා කිරීමට සිදුවිය.
මයිකල් මැක්ගිනිස්

11
IcMichaelMcGinnis දේශීයව ඒකාබද්ධ කිරීමෙන් පසුව, ඔබගේ වෙනස්කම් ගිතුබ් වෙත තල්ලු කළ යුතුය. git push origin master
ජම්ප්නෙට්

1
සමග තල්ලු කිරීමට ස්මාර්ට් විය හැකි --follow-tags: stackoverflow.com/a/26438076/667847
කෙනී දක්වන පරිදි

1
මට එය සියලුම ශාඛා සඳහා වෙන වෙනම කළ යුතුය git merge upstream/master, පසුව ශාඛාව සංවර්ධනය කර පරීක්ෂා කර බලන්නgit merge upstream/develop
ෂෝබි

stackoverflow.com/a/14074925/470749 මට ප්‍රයෝජනවත් වූයේ Permission denied (publickey). fatal: Could not read from remote repository.ෆේස්බුක් හි ගිතබ් ගිණුමෙන් ඉහළට ලබා ගැනීමට උත්සාහ කරන විට මට ලැබුණු බැවිනි .
රයන්

98

බොහෝ පිළිතුරු අවසන් වන්නේ මවු ගබඩාවට වඩා ඔබේ දෙබල ඉදිරියට ගෙනයෑමෙනි. මෙම පිළිතුර මෙහි ඇති පියවර සාරාංශගත කරන අතර එමඟින් ඔබේ දෙබලක දෙමව්පියන්ගේ කැපවීම කරා ගෙන යනු ඇත .

  1. නාමාවලිය ඔබේ දේශීය ගබඩාවට වෙනස් කරන්න.

    • ඔබ නොමැති නම් ප්‍රධාන ශාඛාවට මාරු වන්න git checkout master
  2. දුරස්ථ ගබඩාවක් ලෙස දෙමාපියන් එක් කරන්න, git remote add upstream <repo-location>

  3. නිකුත් කිරීම git fetch upstream
  4. නිකුත් කිරීම git rebase upstream/master

    • මෙම අවස්ථාවෙහිදී, ටයිප් කිරීමෙන් ඒකාබද්ධ වන්නේ කුමක් දැයි ඔබ පරීක්ෂා කරයි git status
  5. නිකුත් කිරීම git push origin master

මෙම විධානයන් පිළිබඳ වැඩි විස්තර සඳහා 3 වන පියවර බලන්න .


13
@MT: ඔබ මෙම විධානයන් ඇතුළත් කරන්නේ කොතැනටද? ප්‍රශ්නයේ සාරාංශය, මා තේරුම් ගත් පරිදි, ඔබේ පුද්ගලික GitHub දෙබලක ප්‍රධාන ව්‍යාපෘතිය සමඟ නැවත සමමුහුර්ත කරන්නේ කෙසේද යන්න සහ මේ සියල්ල GitHub වෙතින් කරන්න . වෙනත් වචන වලින් කිවහොත්, දේශීය ගබඩාවක් නොමැතිව ඔබේ දුරස්ථ දෙබල යාවත්කාලීන කරන්නේ කෙසේද ?
ජෝන් වයි

4
@ ජෝන් GitHub භාවිතා කිරීම සැමවිටම අමතර කැපවීමක් ඇති කරයි. එම අමතර කැපවීම වළක්වා ගැනීම සඳහා ඔබ දේශීය රෙපෝ එකක කවචයකින් මේ සියල්ල කළ යුතුය.
ජොනතන් ක්‍රොස්

49

මා වැනි, ඔබ කිසි විටෙකත් ස්වාමියා වෙත කෙලින්ම කිසිවක් නොකරන්නේ නම්, එය ඔබට සැබවින්ම කළ යුතුය, ඔබට පහත සඳහන් දෑ කළ හැකිය.

ඔබගේ දෙබලක ඇති දේශීය ක්ලෝනයෙන්, ඔබගේ උඩුමහලේ දුරස්ථය සාදන්න. ඔබට එය කළ යුත්තේ එක් වරක් පමණි:

git remote add upstream https://github.com/whoever/whatever.git

එවිට ඔබට උඩු මහලේ නිධිය ප්‍රධාන ශාඛාව හමුවීමට අවශ්‍ය සෑම විටම:

git checkout master
git pull upstream master

ඔබ කිසි විටෙකත් ස්වාමියා වෙනුවෙන් කිසිවක් කර නැතැයි උපකල්පනය කිරීම ඔබ දැනටමත් කළ යුතුය. දැන් ඔබට ඔබේ දේශීය ස්වාමියා ඔබේ දුරස්ථ GitHub දෙබලකට තල්ලු කළ හැකිය. ඔබගේ යාවත්කාලීන දේශීය ස්වාමියා මත ඔබේ සංවර්ධන ශාඛාව නැවත ප්‍රතිස්ථාපනය කළ හැකිය.

ආරම්භක උඩු යටිකුරු සැකසුම සහ ප්‍රධාන පිරික්සුම පසු කර, ඔබ කළ යුත්තේ ඔබේ ස්වාමියා උඩු යටිකුරු කිරීම සමඟ සමමුහුර්ත කිරීම සඳහා පහත දැක්වෙන විධානය ක්‍රියාත්මක කිරීමයි: git pull upstream master .


48

පෙරවදන: ඔබේ දෙබලක “සම්භවය” වන අතර ඔබ විසින් සාදන ලද නිධිය “උඩුමහල” වේ.

මේ වගේ විධානයක් සමඟ ඔබ දැනටමත් ඔබේ දෙබලක ඔබේ පරිගණකයට ක්ලෝන කළ බව උපකල්පනය කරමු:

git clone git@github.com:your_name/project_name.git
cd project_name

එය ලබා දී ඇත්නම් ඔබ මෙම අනුපිළිවෙලෙහි ඉදිරියට යා යුතුය:

  1. ඔබගේ ක්ලෝන කරන ලද ගබඩාවට "උඩුමහල" එක් කරන්න ("සම්භවය"):

    git remote add upstream git@github.com:original_author/project_name.git
    
  2. "උඩුමහලේ" සිට කොමිස් (සහ අතු) ලබා ගන්න:

    git fetch upstream
    
  3. ඔබේ දෙබලක "මාස්ටර්" ශාඛාවට මාරු වන්න ("සම්භවය"):

    git checkout master
    
  4. ඔබේ "මාස්ටර්" ශාඛාවේ වෙනස්කම් සටහන් කරන්න:

    git stash
    
  5. "උඩුමහලේ" "මාස්ටර්" ශාඛාවේ වෙනස්කම් ඔබේ "සම්භවය" හි "මාස්ටර්" ශාඛාවට ඒකාබද්ධ කරන්න:

    git merge upstream/master
    
  6. ඒකාබද්ධ කිරීමේ ගැටුම් ඇත්නම් ඒවා විසඳා ඔබේ ඒකාබද්ධ කිරීම සිදු කරන්න

    git commit -am "Merged from upstream"
    
  7. වෙනස්කම් ඔබේ දෙබලකට තල්ලු කරන්න

    git push
    
  8. ඔබගේ ගබඩා කර ඇති වෙනස්කම් නැවත ලබා ගන්න (ඇත්නම්)

    git stash pop
    
  9. ඔබ ඉවරයි! සුභ පැතුම්!

GitHub මෙම මාතෘකාව සඳහා උපදෙස් ද සපයයි: දෙබලක සමමුහුර්ත කිරීම


1
අර්ධ වශයෙන් උදව්: git remote add upstream git@github.com:original_author/project_name.gitඅන්වර්ථයක් සඳහාද git remote add upstream https://github.com/original_author/project_name.git?
වුල්ෆ්

2
වුල්ෆ් , අනුමාන කිරීම ඔබ මේ වන විට මෙය දන්නා නමුත් පසු පරම්පරාව සඳහා ... එය ssh සඳහා ආකෘතියයි. help.github.com/articles/configuring-a-remote-for-a-fork
බ්‍රැඩ් එලිස්

2
බොහොම ස්තූතියි. git stashසහ git stash popකොටස ඉතා ප්‍රයෝජනවත්
सत्यमेव

මෙය ක්‍රියාත්මක විය. උඩු යටිකුරු / මාස්ටර් ඒකාබද්ධ කිරීමෙන් පසු, ස්වයංක්‍රීයව ඒකාබද්ධ වීම අසාර්ථක වූ නිසා මට git add -A ධාවනය කිරීමට සිදු වූ අතර පසුව git commit -m "message" ධාවනය කිරීමට සිදුවිය.
highcenbug

45

2013 නොවැම්බරයේ සිට GitHub සමඟ නිල නොවන විශේෂාංග ඉල්ලීමක් විවෘත කර ඇති අතර දේශීය දෙබලක උඩුගං බලා සමපාතව තබා ගැනීම සඳහා ඉතා සරල හා අවබෝධාත්මක ක්‍රමයක් එක් කරන ලෙස ඔවුන්ගෙන් ඉල්ලා සිටී:

https://github.com/isaacs/github/issues/121

සටහන: විශේෂාංග ඉල්ලීම නිල නොවන support@github.comබැවින් ක්‍රියාත්මක කිරීමට මෙවැනි අංගයක් සඳහා ඔබේ සහාය එක් කිරීමට සම්බන්ධ වීම ද සුදුසු ය. ඉහත ක්‍රියාත්මක වන නිල නොවන විශේෂාංග ඉල්ලීම මෙය ක්‍රියාත්මක කිරීමට ඇති උනන්දුව පිළිබඳ සාක්ෂි ලෙස භාවිතා කළ හැකිය.


23

මෙම පිළිතුරේ දිනය වන විට, වෙබ් අතුරු මුහුණතේ මෙම අංගය GitHub සතුව නොමැත ( නැතහොත් මම තවදුරටත් නොකියමි? ). කෙසේ වෙතත්, ඒ support@github.comසඳහා ඔබේ ඡන්දය එකතු කරන ලෙස ඉල්ලා සිටිය හැකිය .

මේ අතර, GitHub පරිශීලක bardiharborow විසින් මෙය සිදු කිරීම සඳහා මෙවලමක් නිර්මාණය කර ඇත: https://upriver.github.io/

මූලාශ්‍රය මෙහි ඇත: https://github.com/upriver/upriver.github.io


2
මම මෙවලම හොඳ අදහසක් සොයා ගන්නා අතර යථාර්ථය එය බ්‍රෝකන් ය. එය මගේ ගිණුමෙන් රීපෝ 20 ක් පමණක් පටවා ඇති අතර පාදකය පවා නොපවතින වෙබ් අඩවියකට හරවා යවයි. එය නිවැරදි නම් මම විශාල නීති oc යෙක් වන්නෙමි.
සෝරින්

2
අද වන විට, මම දෙබලක උඩු මහලේ රෙපෝ සමඟ සමමුහුර්ත කිරීමට සාර්ථකව භාවිතා කර ඇති අතර, එබැවින් එය මගේ අරමුණු සඳහා ක්‍රියා කරන අතර මම එය දිගටම භාවිතා කරමි.
NauticalMile

1
orsorin මෙම 20 repo / branch සීමාවන් (ඒ වෙනුවට දැන් එය 30 කි) පැමිණෙන්නේ GitHub පෙරනිමි පේජිං සැකසුම් වලිනි. මෙය හැසිරවීම සඳහා කේතයට අනුවර්තනයන් කිහිපයක් තිබිය යුතුය.
ඇන්ඩ්‍රියාස්

19

ඔබ වින්ඩෝස් හෝ මැක් සඳහා GitHub භාවිතා කරන්නේ නම්, දැන් ඔවුන් දෙබලක යාවත්කාලීන කිරීම සඳහා එක්-ක්ලික් අංගයක් ඇත:

  1. UI හි නිධිය තෝරන්න.
  2. ඉහළින් ඇති "පරිශීලක / ශාඛාවෙන් යාවත්කාලීන කරන්න" බොත්තම ක්ලික් කරන්න.


11

ඇත්ත වශයෙන්ම, බ්‍රව්සරයේ උඩුමහලේ ඕනෑම කැපවීමකින් ඔබේ දෙබලක ශාඛාවක් සෑදිය හැකිය:

  • විවෘත කරන්න https://github.com/<repo>/commits/<hash>, එහිදී repo ඔබේ දෙබලක වන අතර, හැෂ් යනු උඩුමහලේ වෙබ් අතුරු මුහුණතේ ඔබට සොයාගත හැකි කැපවීමේ සම්පූර්ණ හැෂ් ය. උදාහරණයක් ලෙස, මට ලිවීමේ වේලාව ලෙස පෙන්වා දෙන https://github.com/max630/linux/commits/0aa0313f9d576affd7747cc3f179feb097d28990 විවෘත කළ හැකිය linux master.
  • "ගස: ...." බොත්තම ක්ලික් කරන්න.
  • නව ශාඛාවේ නම ටයිප් කර ඔබන්න Enter

රූප විස්තරය මෙහි ඇතුළත් කරන්න

එවිට ඔබට එම ශාඛාව ඔබේ දේශීය ක්ලෝනයට ලබා ගත හැකි අතර, ඔබ එම කැපවීමට ඉහළින් සංස්කරණ තල්ලු කරන විට එම දත්ත සියල්ලම නැවත GitHub වෙත තල්ලු කළ යුතු නොවේ. නැතහොත් එම ශාඛාවේ යමක් වෙනස් කිරීමට වෙබ් අතුරු මුහුණත භාවිතා කරන්න.

එය ක්‍රියා කරන ආකාරය (එය අනුමානයකි, එය හරියටම GitHub කරන්නේ කෙසේදැයි මම නොදනිමි): දෙබලක වස්තු ගබඩාව බෙදාගෙන පරිශීලකයන්ගේ යොමු වෙන් කිරීමට නාම අවකාශ භාවිතා කරයි. එමනිසා, ඔබ විසින් සිදු කරන ලද සියලු කොමිස් ඔබේ දෙබලක හරහා ප්‍රවේශ විය හැකිය.


2
මේක නියමයි! මෙමඟින් ගිතුබ් වෙත කරන ලද තේරුමක් නැතිව උඩුගත වේ.
රොට්සර්

9

පහත පියවර අනුගමනය කරන්න. මම ඒවා අත්හදා බැලුවෙමි.

ඔබේ ශාඛාවට පිවිසෙන්න

වාක්‍ය ඛණ්ඩය : git branch yourDevelopmentBranch
උදාහරණය: git checkout master

නවතම කේතය ලබා ගැනීම සඳහා ප්‍රභව නිධිය ශාඛාව අදින්න

වාක්‍ය ඛණ්ඩය : git pull https://github.com/tastejs/awesome-app-ideas මාස්ටර්
උදාහරණය: git pull https://github.com/ORIGINAL_OWNER/ORIGINAL_REPO.git BRANCH_NAME


1
ඔබ GitHub භාවිතා කරන්නේ නම්, ඔබගේ වෙනස්කම් ඔබගේ GitHub ශාඛාවට තල්ලු කිරීමටද ඔබට අවශ්‍ය විය හැකිය. git push HttpsForYourForkOfTheRepo BRANCH_NAME
user3731622

9

මෙම එක් පේළියක් සමඟ මම මගේ දෙබලක ඇති යාවත්කාලීන කිරීම් යාවත්කාලීන කරමි:

git pull https://github.com/forkuser/forkedrepo.git branch

මෙහි දක්වා ඇති වෙනත් විසඳුම් මෙන් ඔබේ ව්‍යාපෘතියට තවත් දුරස්ථ අන්ත ලක්ෂ්‍යයක් එක් කිරීමට අවශ්‍ය නැතිනම් මෙය භාවිතා කරන්න.


2
මේ සඳහා සීමාවන් තිබේද? එනම්, එය අදාළ වන්නේ ඔබ අවසන් වරට යාවත්කාලීන කිරීමෙන් පසු කොමිස්, ඒකාබද්ධ කිරීම්, අදින්න ඉල්ලීම් හෝ උඩුමහලට ඒකාබද්ධ කළ ඉල්ලීම් වලට පමණක්ද?
ලයිට්සීසී

1
එය දුරස්ථ ශාඛාවකින් සාමාන්‍ය ඇදීමක් මෙන් ක්‍රියා කරයි. ඔබ ඔබේ දේශීය ගබඩාව මත X කොමිස් කර ඇති අතර දැන් ඔබ මුල් රිපෝවට පිටුපසින් Y නම්, එය ඔබගේ ප්‍රාදේශීය ශාඛාවට Y කොමිස් ගෙන එනු ඇති අතර බොහෝ විට ගැටුම් නිරාකරණය කර ගැනීමට ඔබට හැකි වේ.
ආර්. බ්‍රාවෝ

1
@LightCC මෙහි අරුත වන්නේ, ඔබ විසින් එක් කර නැත යන කාරනය හැර, කලින් සියලු දී දුරස්ථ එකතු සිට ඇද වඩා වෙනස් නොවේ දුරස්ථ . එබැවින් අවාසිය නම් ඔබට අවශ්‍ය සෑම විටම සම්පූර්ණ නිධිය URL ය ඇතුළත් කිරීමට සිදුවීමයි pull.
මාර්ක් 2377

1
මුල් රෙපෝවෙන් ඔබට බොහෝ වාරයක් ඇද ගැනීමට අවශ්‍ය නැතිනම් මෙය පරිපූර්ණ විසඳුමකි, නැතහොත් ව්‍යපෘති ව්‍යපෘතිය සාපේක්ෂව සරල ය.
AxeEffect

7

මෙම පිළිතුරට අනුපූරකයක් ලෙස, මගේ ක්ලෝන කරන ලද රෙපෝවේ ( සම්භවය ) සියලුම දුරස්ථ ශාඛා ඉහළට යාවත්කාලීන කිරීමට ක්‍රමයක් සොයමින් සිටියෙමි එකවරම ශාඛා . මේ මම එය කළ ආකාරයයි.

මෙය උපකල්පනය කරන්නේ ඔබ දැනටමත් ප්‍රභව ගබඩාවේ උඩුමහලේ දුරස්ථ ලක්ෂ්‍යයක් වින්‍යාස කර ඇති බවයි ( මූලාරම්භය ලබාගෙන ඇත්තේ කොතැනින්ද ) සහ එය සමමුහුර්ත කර ඇතgit fetch upstream .

ඉන්පසු ධාවනය කරන්න:

for branch in $(git ls-remote --heads upstream|sed 's#^.*refs/heads/##'); do git push origin refs/remotes/upstream/$branch:refs/heads/$branch; done

මෙම විධානයේ පළමු කොටස උඩුමහලේ දුරස්ථ repo හි ඇති සියලුම හිස් ලැයිස්තුගත කර ඇති අතර SHA-1 ඉවත් කර refs/heads/ශාඛා නාම උපසර්ගය අනුගමනය කරයි .

එවිට මෙම ශාඛා එක් එක් සඳහා, එය දේශීය පිටපතක් තල්ලු උඩුගං දුරස්ථ ෙසොයා ගැනීෙම් ශාඛා ( refs/remotes/upstream/<branch>දේශීය පැත්ත) සෘජුවම සම්බන්ධ කර දුරස්ථ ශාඛාවේ සම්භවය ( refs/heads/<branch>දුරස්ථ පැත්තේ).

මෙම ඕනෑම ශාඛා සමමුහුර්ත විධානයන් හේතු දෙකෙන් එකක් අසමත් විය හැකිය: එක්කෝ උඩුමහලේ ශාඛාව නැවත ලියා ඇත, නැතහොත් ඔබ එම ශාඛාවේ කොමිස් ඔබේ දෙබලකට තල්ලු කර ඇත. ඔබේ දෙබලක ඇති ශාඛාවට ඔබ කිසිවක් කර නොමැති පළමු අවස්ථාවෙහිදී බලහත්කාරයෙන් තල්ලු කිරීම ආරක්ෂිත වේ ( -f ස්විචය එක් කරන්න ; එනම් git push -fඉහත විධානයෙහි). අනෙක් අවස්ථාවේ දී මෙය සාමාන්‍ය දෙයකි, ඔබේ දෙබලක ශාඛාව අපසරනය වී ඇති අතර ඔබේ කොමිස් නැවත ඒකාබද්ධ වන තුරු සමමුහුර්ත කිරීමේ විධානය ක්‍රියාත්මක වනු ඇතැයි අපේක්ෂා කළ නොහැක. උඩු මහලට .


6

මෙම "අදින්න" යෙදුම ස්වයංක්රීය set-දක්වා-සහ-අමතක වන විසඳුමක්. එය ඔබගේ දෙබලක පෙරනිමි ශාඛාව උඩු ගබඩාව සමඟ සමමුහුර්ත කරයි.

URL වෙත පිවිස, හරිත "ස්ථාපනය කරන්න" බොත්තම ක්ලික් කර ස්වයංක්‍රීය සමමුහුර්තකරණය සක්‍රීය කිරීමට අවශ්‍ය ගබඩාවන් තෝරන්න.

ශාඛාව පැයකට වරක් කෙලින්ම GitHub මත යාවත්කාලීන වේ, ඔබේ දේශීය යන්ත්‍රය මඟින් ඔබේ දේශීය පිටපත සමමුහුර්තව පවතින බව සහතික කිරීම සඳහා ප්‍රධාන ශාඛාව අදින්න.


2
මූලික සැකසුම සමඟ, ඔබේ දෙබලක ගබඩාවේ සිදු කළ වෙනස්කම් ඔබට අහිමි විය හැකි බව කරුණාවෙන් සලකන්න. වෙනස්කම් තබා ගැනීමට, වින්‍යාස ගොනුවක් සකසා a mergemethod. මේ පිළිබඳ වැඩි විස්තර මෙතැනින්
සෞරබ් පී භන්දාරි

1
මූලික සැකසුම මඟින් ඉල්ලීම් යවා ඒවා ඒකාබද්ධ කරන බව මම සටහන් කළෙමි (ප්‍රලේඛනයේ සඳහන් දෙයට පටහැනිව). මෙය තරමක් කරදරකාරී නමුත් දත්ත නැතිවීමේ ගැටළුව විසඳයිද?
krlmlr

4

ඇන්ඩ්‍රොයිඩ් ස්ටුඩියෝ දැන් GitHub දෙබලක නිධි සමඟ වැඩ කිරීමට ඉගෙන ගෙන ඇත (ඔබට කොන්සෝල විධානය මඟින් "උඩුමහලේ" දුරස්ථ ගබඩාව එකතු කිරීමට අවශ්‍ය නැත).

විවෘත මෙනු VCSGit

අවසාන උත්පතන මෙනු අයිතම දෙක කෙරෙහි අවධානය යොමු කරන්න:

  • මගේ GitHub දෙබලක නැවත සකස් කරන්න

  • අදින්න ඉල්ලීම සාදන්න

ඒවා උත්සාහ කරන්න. මගේ දේශීය ගබඩාව සමමුහුර්ත කිරීමට මම පළමුවැන්න භාවිතා කරමි. කෙසේ වෙතත්, "මගේ GitHub දෙබලක නැවත සකස් කරන්න" ක්ලික් කිරීමෙන් පසු මව් දුරස්ථ ගබඩාවේ ("උඩුමහලේ") ශාඛා ඇන්ඩ්‍රොයිඩ් ස්ටුඩියෝ වෙත ප්‍රවේශ විය හැකි අතර ඔබට ඒවා සමඟ පහසුවෙන් ක්‍රියා කිරීමට හැකි වනු ඇත.

(මම "Git Integration" සහ "GitHub" ප්ලගීන සමඟ Android Studio 3.0 භාවිතා කරමි.)

රූප විස්තරය මෙහි ඇතුළත් කරන්න


4

ඔබ ඔබේ දෙබලක නිධිය ක්ලෝන කළ පසු, ඔබේ ක්ලෝනය වාසය කරන නාමාවලි මාර්ගයට සහ ඔබේ Git Bash පර්යන්තයේ පේළි කිහිපයක් වෙත යන්න.

$ cd project-name

$ git remote add upstream https://github.com/user-name/project-name.git
 # Adding the upstream -> the main repo with which you wanna sync

$ git remote -v # you will see the upstream here 

$ git checkout master # see if you are already on master branch

$ git fetch upstream

එතනට යන්න හොඳයි. ප්‍රධාන ගබඩාවේ යාවත්කාලීන කරන ලද සියළු වෙනස්කම් ඔබගේ දෙබලක ගබඩාවට තල්ලු කරනු ලැබේ.

ව්‍යාපෘතියක යාවත්කාලීනව සිටීම සඳහා "ලබා ගැනීම" විධානය අත්‍යවශ්‍ය වේ: "git fetch" සිදු කරන විට පමණක් ඔබේ සගයන් දුරස්ථ සේවාදායකයට තල්ලු කළ වෙනස්කම් පිළිබඳව ඔබව දැනුවත් කරනු ලැබේ.

වැඩිදුර විමසීම් සඳහා ඔබට තවමත් මෙහි පැමිණිය හැකිය


4

ඔබ ඔබේ උඩු යටිකුරු කළහොත්. පරීක්ෂා කරන්න git remote -v, එවිට මෙය ප්‍රමාණවත් වේ.

git fetch upstream
git checkout master
git merge --no-edit upstream/master
git push

2

එය ඔබගේ ගබඩාවේ ප්‍රමාණය සහ ඔබ එය සකස් කළ ආකාරය මත රඳා පවතී.

එය තරමක් විශාල ගබඩාවක් නම් ඔබට එය විශේෂ ආකාරයකින් කළමනාකරණය කිරීමට අවශ්‍ය වන්නට ඇත (උදා: ඉතිහාසය හැලීම). මූලික වශයෙන්, ඔබට වත්මන් සහ උඩු යටිකුරු අනුවාදයන් අතර වෙනස්කම් ලබා ගත හැකිය, ඒවා කැප කර චෙරි නැවත මාස්ටර් වෙත තෝරා ගන්න.

මෙය කියවීමට උත්සාහ කරන්න . විශාල Git ගබඩාවන් හැසිරවිය යුතු ආකාරය සහ නවතම වෙනස්කම් සමඟ ඒවා උඩු යටිකුරු කරන්නේ කෙසේද යන්න එහි විස්තර කෙරේ.


2

@ Krlmlr ගේ පිළිතුරට එක් කිරීමට මම කැමතියි .

මුලදී, දෙබලක ඇති ගබඩාවට එක් ශාඛාවක් ඇත : master. ඔබ නව අංගයක් හෝ නිවැරදි කිරීමක් මත වැඩ කරන්නේ නම්, ඔබ සාමාන්‍යයෙන් නව ශාඛාවක් නිර්මාණය කරනු ඇතfeature සාදා වෙනස්කම් සිදු කරනු ඇත.

දෙබලක නිධිය මව් ගබඩාව සමඟ සමපාත වීමට ඔබට අවශ්‍ය නම්, ඔබට පුල් යෙදුම සඳහා ( විශේෂාංග ශාඛාවේ ) වින්‍යාස ගොනුවක් ( pull.yml) සැකසිය හැකිය :

version: "1"
rules:
  - base: feature
    upstream: master
    mergeMethod: merge
  - base: master
    upstream: parent_repo:master
    mergeMethod: hardreset

මෙය masterදෙබලක ඇති repo හි ශාඛාව මව් repo සමඟ යාවත්කාලීනව තබා ගනී. එය featureදෙබලක ඇති repo හි masterශාඛාව ඒකාබද්ධ කර දෙබලක repo හි ශාඛාව හරහා යාවත්කාලීන කරයි . මෙය උපකල්පනය කරන්නේ featureශාඛාව වින්‍යාස ගොනුව අඩංගු පෙරනිමි ශාඛාව බවයි.

මෙහි දෙකක් mergemethodsක්‍රියාත්මක වන අතර, එකක් නම් , දෙබලක ඇති රෙපෝවේ ශාඛාවේ hardresetවෙනස්කම් masterමව් රෙපෝ සමඟ සමමුහුර්ත කිරීමට බල කරන අතර අනෙක් ක්‍රමය වේ merge. මෙම ක්‍රමය featureශාඛාවේ ඔබ විසින් සිදු කරන ලද වෙනස්කම් හා බල සමමුහුර්තකරණය හේතුවෙන් සිදු කරන ලද වෙනස්කම් ඒකාබද්ධ කිරීමට භාවිතා කරයිmaster . ඒකාබද්ධ කිරීමේ ගැටුමකදී, අදින්න යෙදුම මඟින් අදින්න ඉල්ලීම අතරතුර ඊළඟ ක්‍රියාමාර්ගය තෝරා ගැනීමට ඉඩ ලබා දේ.

ඔබ මූලික හා උසස් configs සහ විවිධ ගැන කියවන්න පුළුවන් mergemethods මෙතන .

මම දැනට මගේ බිජු ණයකට මෙම වින්යාසය මම භාවිතා මෙතන වග වැඩි දියුණු ඉල්ලා කිරීමට මෙහි යාවත්කාලීන හිමිවේ.


1

දෙබලක ගබඩාවක් තබා ගැනීම සඳහා ප්‍රධාන කරුණු දෙකක් තිබේ.

1. දෙබලක ස්වාමියාගෙන් අතු සාදා එහි වෙනස්කම් කරන්න .

එබැවින් ඔබගේ අදින්න ඉල්ලීම පිළිගත් විට ඔබට ආරක්ෂිතව ශාඛාව මකා දැමිය හැකි බැවින් ඔබේ දායක කේතය ඔබ උඩුමහලේ යාවත්කාලීන කරන විට ඔබේ දෙබලක ගබඩාවේ ප්‍රධානියා තුළ ජීවත් වනු ඇත. මෙයින් ඔබේ ස්වාමියා වෙනත් වෙනසක් කිරීමට නව ශාඛාවක් නිර්මාණය කිරීම සඳහා සෑම විටම පිරිසිදු තත්වයක සිටී.

2. ෆෝක් මාස්ටර් ස්වයංක්‍රීයව යාවත්කාලීන කිරීම සඳහා නියමිත රැකියාවක් සාදන්න .

මෙය ක්‍රෝන් සමඟ කළ හැකිය . මෙන්න ඔබ උදාහරණ කේතයක් සඳහා එය ලිනක්ස් වලින් කරන්නේ නම්.

$ crontab -e

මෙම කේතය crontab fileපැයක පදනම මත ක්‍රියාත්මක කිරීම සඳහා යොදන්න.

0 * * * * sh ~/cron.sh

ඉන්පසු cron.shස්ක්‍රිප්ට් ගොනුව සහ ssh-agent සමඟ git අන්තර්ක්‍රියාකාරිත්වයක් සාදන්න සහ / හෝ පහත පරිදි බලාපොරොත්තු වන්න

#!/bin/sh
WORKDIR=/path/to/your/dir   
REPOSITORY=<name of your repo>
MASTER="git@github.com:<username>/$REPOSITORY.git"   
UPSTREAM=git@github.com:<upstream>/<name of the repo>.git  

cd $WORKDIR && rm -rf $REPOSITORY
eval `ssh-agent` && expect ~/.ssh/agent && ssh-add -l
git clone $MASTER && cd $REPOSITORY && git checkout master
git remote add upstream $UPSTREAM && git fetch --prune upstream
if [ `git rev-list HEAD...upstream/master --count` -eq 0 ]
then
    echo "all the same, do nothing"
else
    echo "update exist, do rebase!"
    git reset --hard upstream/master
    git push origin master --force
fi
cd $WORKDIR && rm -rf $REPOSITORY
eval `ssh-agent -k`

ඔබේ දෙබලක ඇති ගබඩාව පරීක්ෂා කරන්න. කලින් කලට එය සෑම විටම මෙම දැනුම්දීම පෙන්වනු ඇත:

මෙම ශාඛාව සමඟ පවා <upstream>: ස්වාමියා .

රූප විස්තරය මෙහි ඇතුළත් කරන්න


0

මෙම විධානයන් භාවිතා කරන්න (වාසනාවන්ත අවස්ථාවක)

git remote -v
git pull
git fetch upstream
git checkout master
git merge upstream/master --no-ff
git add .
git commit -m"Sync with upstream repository."
git push -v
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.