सवाल मैं एक नई स्थानीय शाखा को रिमोट गिट भंडार में कैसे दबा सकता हूं और इसे ट्रैक भी कर सकता हूं?


मैं निम्नलिखित करने में सक्षम होना चाहता हूं:

  1. किसी अन्य (दूरस्थ या स्थानीय) शाखा (के माध्यम से) के आधार पर एक स्थानीय शाखा बनाएं git branch या git checkout -b)

  2. स्थानीय शाखा पुश करें रिमोट रिपोजिटरी (प्रकाशित) के लिए, लेकिन इसे बनाओ ट्रैक करने योग्य तो git pull तथा git push तुरंत काम करेगा।

मैं उसको कैसे करू?

मुझे इसके बारे में मालूम है --set-upstream गिट 1.7 में, लेकिन यह एक सृजन के बाद की कार्रवाई है। मैं दूरस्थ भंडार में शाखा को दबाते समय एक समान परिवर्तन करने का एक तरीका खोजना चाहता हूं।


3657
2018-05-04 12:58


मूल


के संभावित डुप्लिकेट आप मौजूदा गिट शाखा को दूरस्थ शाखा को कैसे ट्रैक करते हैं? - markus
बस इंगित करने के लिए - सेट अप अपस्ट्रीम -यू है - Baiyan Huang


जवाब:


गिट 1.7.0 और बाद में, आप एक नई शाखा की जांच कर सकते हैं:

git checkout -b <branch>

फाइलें संपादित करें, जोड़ें और प्रतिबद्ध करें। फिर के साथ धक्का -u (के लिए कम --set-upstream) विकल्प:

git push -u origin <branch>

गिट पुश के दौरान ट्रैकिंग जानकारी स्थापित करेगा।


5762
2018-06-03 20:50



यह भी ध्यान देने योग्य है कि यदि आपके पास पहले से ही उस शाखा पर सेट की गई मौजूदा ट्रैकिंग शाखा है जिसे आप दबा रहे हैं, और push.default इस पर लगा है upstream, ऐसा नहीं होगा जो आपको लगता है कि यह करेगा। यह मौजूदा ट्रैकिंग शाखा को धक्का देने की कोशिश करेगा। उपयोग: git push -u origin mynewfeature:mynewfeature या करो git branch --unset-upstream प्रथम। - void.pointer
रिमोट शाखा के संबंध में मेरी शाखा स्थिति की सही रिपोर्ट करने के लिए मुझे अभी भी 'गिट स्टेटस' के लिए 'गिट शाखा - सेट-अपस्ट्रीम-टू मूल / रिमोट' की आवश्यकता है। - Paul Whipp
विजुअल स्टूडियो से गिट का उपयोग करने वाले लोगों के लिए: असल में यह है कि विजुअल स्टूडियो में "प्रकाशित शाखा" है। -यू पैरामीटर के साथ गिट पुश निष्पादित करने के बाद मैं आखिरकार अपनी शाखा को वीएस यूआई में प्रकाशित कर सकता हूं। - Puterdo Borato
क्या हमें इसकी ज़रूरत है -u विकल्प हर बार जब हम शाखा को अपने रिमोट पर दबाते हैं या केवल पहली बार इसकी आवश्यकता होती है? - Stephane
@Stephane आपको केवल जरूरत है -u एक बार ट्रैकिंग शुरू करने के लिए। बाद में बस उपयोग करें git push - Todd


यदि आप दूसरों के साथ अपना रेपो साझा नहीं कर रहे हैं, तो यह धक्का देने के लिए उपयोगी है सब रिमोट के लिए आपकी शाखाएं, और --set-upstream आपके लिए सही ढंग से ट्रैकिंग:

git push --all -u

(ओपी बिल्कुल क्या नहीं पूछ रहा था, लेकिन यह एक लाइनर बहुत लोकप्रिय है)

यदि आप दूसरों के साथ अपना रेपो साझा कर रहे हैं तो यह वास्तव में अच्छा रूप नहीं है क्योंकि आप अपने सभी डोडी प्रयोगात्मक शाखाओं के साथ रेपो को दबाएंगे।


448
2018-01-20 11:36



तथा git pull --all इसे कहीं और खींचता है? kewl - commonpike
यह आदेश किसी भी चीज को दबाए बिना सही शाखा में ट्रैकिंग सेट अप करता है। धन्यवाद। - amey91
गिट एक शाखा करने की अनुमति देता है और इसे बहुत अच्छे कारणों से धक्का नहीं देता है। केवल गिट पुश का उपयोग करना - गिट आर्किटेक्चर का एक टुकड़ा छोड़ना है। अगर यह आपके लिए काम करता है, तो यह बिल्कुल ठीक है, अच्छा, हमेशा के लिए करो। लेकिन कृपया गिट सीखने से बचने के लिए दूसरों की सिफारिश न करें क्योंकि यह चीजों को करने का एक त्वरित तरीका है। - Federico Razzoli
यह वास्तव में सही उत्तर नहीं है और यह एक अच्छा उपकरण नहीं है कि यह क्या करता है और इसके क्या प्रभाव हैं, के वास्तविक स्पष्टीकरण के बिना सिफारिश करने के लिए एक अच्छा उपकरण नहीं है। कृपया इस उत्तर को लेने पर विचार करें। - akronymn
@Federico @akronymn कहां करने के खतरे को ढूंढ सकते हैं git push --all -u? - user1823664


शुरू करने से पहले git push -u, नहीं था git push आप जो चाहते हैं उसे प्राप्त करने का विकल्प। आपको नए कॉन्फ़िगरेशन स्टेटमेंट जोड़ना था।

यदि आप इसका उपयोग करके एक नई शाखा बनाते हैं:

$ git checkout -b branchB
$ git push origin branchB:branchB

आप इसका उपयोग कर सकते हैं git config सीधे संपादन से बचने के लिए आदेश .git/config फ़ाइल।

$ git config branch.branchB.remote origin
$ git config branch.branchB.merge refs/heads/branchB

या आप मैन्युअल रूप से संपादित कर सकते हैं .git/config फ़ाइल को इस शाखा में ट्रैकिंग जानकारी थी।

[branch "branchB"]
    remote = origin
    merge = refs/heads/branchB

132
2018-05-04 13:03





बस एक नया बनाने के लिए, डाल दिया स्थानीय शाखा, करो:

git branch <branch-name>

इसे धक्का देने के लिए दूरस्थ भंडार, करो:

git push -u origin <branch-name>

111
2018-04-24 12:09



git branch <branch-name> तथा git checkout -b <branch-name>दोनों शाखा बनाते हैं लेकिन नई शाखा में चेकआउट स्विच करते हैं - Robert
कोई ब्रैकेट नहीं है - jairhumberto
दोस्त ब्रैकेट का उल्लेख सिर्फ यह है कि आपको जो भी शाखा नाम बनाना है, उसे बनाना और धक्का देना है। - piyushmandovra


पहले से दिए गए समाधानों का मामूली बदलाव:

  1. किसी अन्य (दूरस्थ या स्थानीय) शाखा के आधार पर एक स्थानीय शाखा बनाएं:

    git checkout -b branchname
    
  2. स्थानीय शाखा को रिमोट रिपोजिटरी (प्रकाशित) पर पुश करें, लेकिन इसे ट्रैक करने योग्य बनाएं git pull तथा git push तुरंत काम करेगा

    git push -u origin HEAD
    

    का उपयोग करते हुए HEAD रिमोट पर मौजूदा शाखा को उसी नाम पर धक्का देने का एक आसान तरीका है "। स्रोत: https://git-scm.com/docs/git-push गिट शब्दों में, HEAD (अपरकेस में) वर्तमान शाखा (पेड़) के शीर्ष का संदर्भ है।

    -u विकल्प सिर्फ के लिए छोटा है --set-setupstream। यह वर्तमान शाखा के लिए एक अपस्ट्रीम ट्रैकिंग संदर्भ जोड़ देगा। आप अपनी .git / config फ़ाइल को देखकर इसे सत्यापित कर सकते हैं:

    Enter image description here


55
2017-07-05 08:13



धन्यवाद :) git push -u origin <branch-name> मेरे लिए काम नहीं कर रहा था लेकिन उपयोग कर रहा था HEAD के बजाय <branch-name> पूरी तरह से काम किया :) - Daniel Tonon
यह मेरे लिए काम करता है। शीर्ष जवाब काम नहीं करता है। - jdhao
मैं प्यार करता हूँ HEAD - टाइप करने के लिए बहुत आलसी ;-) - user776686
@ user776686 आपको पता होना चाहिए कि आपने अभी क्या किया है, है ना? - Yatrix
इस जवाब को प्यार करें - "हेड" टाइप करना एक (अक्सर लंबा या घिरा हुआ) फीचर शाखा नाम का पूरा नाम टाइप करने से आसान है। - JKubecki


मुझे लगता है कि आपने पहले से ही एक परियोजना को क्लोन कर दिया है जैसे:

git clone http://github.com/myproject.git
  1. फिर अपनी स्थानीय प्रतिलिपि में, एक नई शाखा बनाएं और इसे देखें:

    git checkout -b <newbranch>
    
  2. मान लीजिए कि आपने अपने सर्वर पर "गिट नंगे --init" बनाया है और myapp.git बनाया है, आपको यह करना चाहिए:

    git remote add origin ssh://example.com/var/git/myapp.git
    git push origin master
    
  3. उसके बाद, उपयोगकर्ताओं को सक्षम होना चाहिए

    git clone http://example.com/var/git/myapp.git
    

ध्यान दें: मुझे लगता है कि आपके पास सर्वर है और चल रहा है। यदि यह नहीं है, तो यह काम नहीं करेगा। एक अच्छा कैसे है यहाँ

जोड़ा

एक दूरस्थ शाखा जोड़ें:

git push origin master:new_feature_name

जांचें कि सबकुछ अच्छा है (मूल उत्पत्ति और सूची दूरस्थ शाखाएं):

git fetch origin
git branch -r

स्थानीय शाखा बनाएं और दूरस्थ शाखा को ट्रैक करें:

git checkout -tb new_feature_name origin/new_feature_name

सब कुछ अपडेट करें:

git pull

27
2018-05-04 13:04



विलियम की लिपि जो मैंने जुड़ी हुई है, रिमोट शाखाओं और कुछ सुरक्षा उपायों को हटाने के लिए अतिरिक्त विकल्प के साथ भी यही है - Tobias Kienzler
> स्थानीय शाखा को रिमोट रेपो (प्रकाशित) पर धक्का देने के लिए, लेकिन इसे बनाएं> ट्रैक करने योग्य तो गिट पुल और गिट पुश तुरंत काम करेगा। जब आप अपने कोड को अपने भंडार में दबाते हैं तो यह github स्वचालित रूप से करता है :-) - VP.
यह सवाल का जवाब नहीं देता है, मूल repo का <newbranch> ट्रैक करने योग्य नहीं है (और इसका नाम बदलकर <मास्टर> नया रेपो है जिसे आप चरण 3 में क्लोन करते हैं)। - Lohrun
लगता है कि ओवरकिल की तरह लगता है। करता है git remote add origin स्थानीय शाखा को ट्रैक करने योग्य बनाओ? क्या यह मुख्य आदेश है? - Roni Yaniv
@ रोनी यानिव: नहीं git remote add origin केवल एक नया रिमोट रिपोजिटरी पंजीकृत करें। यह आपकी शाखा को उस रिमोट रिपोजिटरी पर धक्का देने से पहले केवल एक कदम की आवश्यकता है (यदि आप हर बार पूरा पता टाइप नहीं करना चाहते हैं) - Lohrun


मैं बस करता हूँ

git push -u origin localBranch:remoteBranchToBeCreated

पहले से ही क्लोन परियोजना पर।

गिट नाम की एक नई शाखा बनाता है remoteBranchToBeCreated मेरे काम के तहत मैंने किया था localBranch


24
2018-03-20 11:13





संपादित करें पुराना, बस उपयोग करें git push -u origin $BRANCHNAME


उपयोग git publish-branch से विलियम के विविध गिट टूल्स (गिटोरियस रेपो तथा क्लोन)।

ठीक है, कोई रूबी नहीं, तो - सुरक्षा उपायों को अनदेखा कर रहा है! - स्क्रिप्ट की आखिरी तीन पंक्तियां लें और एक बैश स्क्रिप्ट बनाएं, git-publish-branch:

#!/bin/bash
REMOTE=$1 # Rewrite this to make it optional...
BRANCH=$2
# Uncomment the following line to create BRANCH locally first
#git checkout -b ${BRANCH}
git push ${ORIGIN} ${BRANCH}:refs/heads/${BRANCH} &&
git config branch.${BRANCH}.remote ${REMOTE} &&
git config branch.${BRANCH}.merge refs/heads/${BRANCH}

तो भागो git-publish-branch REMOTENAME BRANCHNAME, जहां REMOTENAME आमतौर पर मूल होता है (आप डिफ़ॉल्ट रूप से मूल लेने के लिए स्क्रिप्ट को संशोधित कर सकते हैं, आदि ...)


19
2018-05-04 13:03



यह मानता है कि मुझे रूबी स्थापित है। ऐसा भाग्य नहीं। कोई अन्य विचार? - Roni Yaniv
रूबी स्क्रिप्ट कॉल git push तथा git config आदेश। मैंने अपना जवाब संपादित करने के लिए स्क्रिप्ट का कोड इस्तेमाल किया। आप इस जानकारी का उपयोग एक छोटी शेल स्क्रिप्ट बनाने के लिए कर सकते हैं जो आपके लिए पुशलिंग करता है। - Lohrun
विलियम के विविध गिट टूल्स चले गए प्रतीत होते हैं (वह लिंक अब मर चुका है)। एक कामकाजी लिंक है: gitorious.org/willgit - Mike D
"विलियम का" लिंक दोबारा टूट गया; नया लिंक प्रतीत होता है git-wt-commit.rubyforge.org - ScottJ


मौजूदा शाखा से शाखाबद्ध करके नई शाखा बनाने के लिए

git checkout -b <new_branch>

और फिर इस नई शाखा का उपयोग करके भंडार में धक्का दें

git push -u origin <new_branch>

यह सभी स्थानीय प्रतिबद्धताओं को नव निर्मित रिमोट शाखा में बनाता है और धक्का देता है origin/<new_branch>


15
2018-06-03 20:36





मैंने उपनाम बनाया ताकि जब भी मैं एक नई शाखा बनाउंगा, तो वह तदनुसार रिमोट शाखा को धक्का देगी और ट्रैक करेगा। मैं निम्नलिखित खंड में डाल दिया .bash_profile फ़ाइल:

# Create a new branch, push to origin and track that remote branch
publishBranch() {
  git checkout -b $1
  git push -u origin $1
}
alias gcb=publishBranch

प्रयोग: बस टाइप करो gcb thuy/do-sth-kool साथ में thuy/do-sth-kool मेरा नया शाखा नाम है।


7
2018-01-05 10:11





1.7 से पहले गिटलैब संस्करण के लिए, उपयोग करें:

git checkout -b name_branch

(name_branch, पूर्व: मास्टर)

इसे दूरस्थ भंडार में धक्का देने के लिए, करें:

git push -u origin name_new_branch

(name_new_branch, उदाहरण: सुविधा)


5
2017-12-06 18:42