Git създаде клон в отдалеченото хранилище. Основи на Git - Работа с отдалечени хранилища. Изтрийте локалния клон

Много често има нужда от създаване на локален клонинг на проекта нов клон, хвърлете вече създадени или модифицирани файлове в него, прокарайтенов клон към отдалечено хранилище, като например , за да може някой колега програмист издърпайте клони вижте промените или резултата.

Създайте и натиснете нов клон

Има два еквивалентни начина за създаване и превключване към нов клон. Първи едносрочен:

[защитен с имейл]: git checkout -b нова_функция

Вторият, подобен на първия, но в два реда:

[защитен с имейл]: git клон new_feature [защитен с имейл]: git checkout new_feature

Готов. Нов клонсъздаден в локално хранилище и включва всички локални промени. И преминахме към нов местен клон. Можем да създадем комит и прокарайтенов клонкъм отдалеченото хранилище:

[защитен с имейл]: git commit -m "нова функция" [защитен с имейл]: git push origin new_feature

Където произход- името на вашето отдалечено хранилище ( произход- стойност по подразбиране при клониране на проект), нова_функцияе името на вашия нов клон.

Извличане на нов клон от отдалечено хранилище

Клонът, който създадохме, вече е в отдалеченото хранилище и сега трябва да го издърпаме изолирано от ряпата. Ако се направи просто дръпнете, тогава новият клон няма да бъде изтеглен. Ако се направи просто git pull origin new_feature, тогава клонът ще бъде обединен в главния клон. Затова правим следната последователност:

[защитен с имейл]: git извличане [защитен с имейл]: git checkout -b нова_функция [защитен с имейл]: git pull origin new_feature

На първия ред с командата git извличанегледаме да видим дали има нови клонове, докато зареждането на отдалечени промени не се случва. Вторият ред създава локален клон със същото име и преминава към него. Накрая, на третия ред, изтегляме промените от разстояние в нов клон. Системата ви подканва да направите merge-commit.

За да можете да си сътрудничите по всеки проект на Git, трябва да знаете как да управлявате отдалечени хранилища. Отдалечените хранилища са модификации на проекти, които се съхраняват в Интернет или някъде другаде в мрежата. Може да има няколко от тях, всеки от които по правило е достъпен само за четене или за четене-запис. Сътрудничеството включва управление на отдалечени хранилища и стая ( натискам) и получаване ( дръпнете) данни в и извън тях, когато е необходимо да се обменят резултатите от работата. Управлението на отдалечени хранилища включва възможността за добавяне на отдалечени хранилища, премахване на тези, които вече не са активни, възможността за управление на различни отдалечени клонове и определяне дали те се проследяват (проследяват) или не и т.н. Този раздел обхваща всички изброени умения за управление на отдалечени хранилища.

За да разбия примерите в тази глава, създадох отдалечено хранилище TestRemote на GitHub и след това сам го клонирах.

Показване на отдалечени хранилища

За да видите кои отдалечени сървъри вече сте конфигурирали, изпълнете командата git дистанционно. Той изброява списък със съкращения за всички вече посочени отдалечени дескриптори. Ако сте клонирали вашето хранилище, трябва поне да видите произход, което е името по подразбиране, което Git присвоява на сървъра, от който сте клонирали:

За да видите на кой URL адрес съответства краткото име на Git, можете да дадете на командата опцията -v:

Добавяне на отдалечени хранилища

За да добавите ново отдалечено Git хранилище със съкратено име, което е по-лесно за достъп, стартирайте git дистанционно добавяне [съкращение]:

Сега можете да използвате името в командния ред trвместо пълния URL адрес.

Например, направих някои промени във файла README.md и сега ще ги качим в нашето локално хранилище с командата git извличане:

Сега клонът на набора от промени от сървъра е достъпен локално като tr/mater. Можете да го обедините в един от вашите клонове или да проверите този клон, ако искате да го проверите.

Тук трябва да се отбележи, че между git-pullи git извличанеима разлика, но повече за това по-късно.

В момента, ако погледнем съдържанието на файла README.md в работната директория, то ще бъде точно същото, както е било преди командата git fetch. Това е така, защото в момента сме в главния клон на локалното хранилище, което не е променено.

За да видите всички съществуващи клонове, можете да издадете командата git клонс ключ , което ще покаже всички клонове на хранилището.

Тук активният клон е отбелязан със звездичка. И също така виждаме клона, който дръпнахме с екипа git извличанее клонът за дистанционно управление/tr/master. Всъщност за това към нас екипа git извличанеи се отчита след завършване.

Можете да превключите към клон с командата git checkout <имя ветки>

И така преминахме към клона, който изтеглихме с командата git fetch, за която получихме съобщение и казахме кои файлове са актуализирани. Това е файлът README.md. Сега в работната директория можем да видим модифицираното съдържание на този файл (променихме го директно в GitHub).

Можем също да се върнем обратно към нашия главен клон

Сега нека разгледаме разликата между извличами дръпнете.

Вземи и издърпай

Както току-що научихте, за да получите данни от отдалечени проекти, изпълнете:

$ git извличане[отдалечено име] сървъри]

Тази команда е свързана с посочения отдалечен проект и взема всички данни за проекта, които все още нямате. След като изпълните командата, трябва да имате връзки към всички клонове от този отдалечен проект. Сега тези клонове могат да бъдат прегледани или обединени (обединени) по всяко време.

Когато клонирате хранилище, екип клонингавтоматично добавя това отдалечено хранилище под името произход . По този начин, git извлича произходизвлича цялата подадена работа ( натискам) към този сървър, след като сте го клонирали (или сте изтеглили промените с извличам) . Важно е да се отбележи, че екип извличамизтегля данни във вашето локално хранилище, но не ги слива (слива) с никоя ваша работа и не променя това, върху което работите в момента . Трябва ръчно да обедините тези данни с вашите, когато сте готови.

Ако имате клон, конфигуриран да проследява отдалечен клон, тогава можете да използвате командата git-pull. Тя е автоматично извлича и след това обединява (слива) данните от отдалечения клон във вашия текущ клон. Този метод може да е по-лесен или по-удобен за вас. Освен това команда по подразбиране git клонингавтоматично конфигурира вашия локален клон майсторза проследяване на отдалечен клон майсторна сървъра, от който сте клонирали (ако приемем, че има главен клон на отдалечения сървър). производителност git-pull, обикновено екстракти ( извличам) данни от сървъра, от който първоначално сте клонирали, и автоматично се опитва да се слее (слие) ( се сливат) ги с кода, върху който работите в момента.

$ git push origin master

Тази команда работи само ако сте клонирали от сървър, където имате разрешения за писане и никой друг не е изпълнявал командата оттогава натискам. Ако вие и някой друг клонирате едновременно, тогава той изпълнява командата натисками след това командата натискамправиш, след това твоя натискамопределено ще бъде отхвърлен. Първо ще трябва да нарисувате ( дръпнете) техните промени и ги обединете с вашите. Само тогава ще ви бъде разрешено да изпълнявате натискам .

Изтеглих и обединих промените за файла README.md и след това ги бутнах към сървъра на GitHub. Екранната снимка е само за информация, за да можете да видите как се прави.

Повече подробности за това как да изпратите натискам) ще разгледаме данните към отдалечен сървър малко по-късно.

Отдалечена проверка на хранилището

Ако искате да получите повече информация за едно от отдалечените хранилища, можете да използвате командата git дистанционно шоу [отдалечено сървър]. Ако изпълните тази команда с някакво име като origin, ще получите нещо подобно:

Той дава URL адреса на отдалеченото хранилище, както и информация за проследяваните клонове. Тази команда любезно ви информира, че ако сте на клон майстор, направи git-pull, клон майсторот отдалечен сървър ще бъдат автоматично обединени във вашия веднага след получаване на всички необходими данни. Той също така връща списък с всички връзки, които е получил.

Тази команда също е показва кой локален клон ще бъде прехвърлен към отдалечения сървър по подразбиранедокато правиш git push . Той също така показва кои клонове от отдалечения сървър все още нямате, кои клонове все още имате, но вече са изтрити на сървъра.

Изтриване и преименуване на отдалечени хранилища

За да преименувате връзки в нови версии на Git, можете да стартирате git дистанционно преименуване, това ще промени краткото име, използвано за отдалеченото хранилище. Например, ако искате да преименувате tr на tstrmt, можете да го направите по следния начин:

Струва си да се спомене, че това също променя имената на отдалечени клонове вместо вас. Това, до което сте осъществили достъп като tr/master, стана tstrmt/master.

Ако по някаква причина искате да премахнете връзката (сменили сте сървъри или вече не използвате определено огледало, или може би сътрудникът вече не е активен), можете да използвате git дистанционно rm:

// echo get_the_post_thumbnail(get_the_ID(), "свързано миниатюрно изображение"); // показване на моя размер на миниатюрата?>

Понякога, когато работим с локален и отдалечен клон, трябва да ги изтрием. Например този клон на отделна функционалност, която вече е обединена в develop или master. Или е клон за коригиране на грешки. Нека видим как можете лесно и бързо да изтриете локални (локални) и отдалечени (отдалечени) клонове.

Бърз отговор - Окончателно резюме

$ git push -d $ git клон -d

Имайте предвид, че в повечето случаи отдалеченото хранилище се записва като origin.

Изтрийте локалния клон

Да изтрия местенклон, използвайте една от следните команди:

$ git клон -D име на клон $ git клон -D име на клон

Обяснение:превключвателят -d е пряк път към командата --delete, която изтрива клон само ако последният е напълно слят в своя клон нагоре по веригата. Можете също да използвате командата -D, която е псевдоним на командата --delete --force, която изтрива клона „независимо от състоянието му на сливане“ (независимо дали сте го слели с клона нагоре или не).

Изтриване на отдалечен клон

Във версия на Git v1.7.0 можете да премахнете дистанционноклон използва

$ git push --Изтрий

което вероятно е по-лесно за запомняне от командата

$ git push :

който беше добавен в Git v1.5.0 "за премахване на отдалечен клон или маркер."

От Git v2.8.0 можете също да използвате git push с опцията -d като пряк път вместо --delete .

Нещо повече, версията на git, която сте инсталирали, ще определи кой синтаксис да използвате, независимо дали е по-лесен или по-сложен.

Изтрийте отдалечен клон

Цитат от 3-та глава на книгата Професионален GitСкот Чакон:

Премахване на отдалечени клонове

Предполагам, че сте приключили с работата по отдалечения клон, вие и вашият персонал сте готови с новата функция и сте я обединили във вашия mster клон на отдалеченото хранилище. Можете да изтриете отдалечен клон с помощта на доста тъп синтаксис git push:. Ако искате да изтриете своя клон за корекция на грешки на сървъра, изпълнете следната команда:

$ git push origin:serverfix До :schacon/simplegit.git - serverfix

Бум! И няма повече такъв клон на вашия сървър. Вероятно ще искате да маркирате тази страница, тъй като тази команда ще ви е необходима по-късно и вероятно ще забравите как се изписва. Начинът да запомните тази команда е да запомните последния git push: синтаксисът, който разгледахме малко по-рано. Ако си тръгнете, тогава буквално казвате следното: „Вземете нищо от мен и го направете“.

Използвах git push origin:bugfix и работи страхотно.

След това трябва да изпълните тази команда на други машини за разработка:

Git извличане --all --sune

за разпространение на промените.

Клонирах го в локално копие с помощта на Eclipse EGit.

След това създадох клон в оригиналното git хранилище на сървъра.

Как да копирам клон в моето локално копие с помощта на Eclipse EGit?

Когато отворя Git Repositories в EGit, виждам:

Local -- master - Remote Tracking -- origin/development -- origin/master

Как мога да получа произход/развитие в моя локална употреба с EGit?

Знам, че мога да създам нов клонинг, но не искам да го правя, тъй като смятам, че трябва да има начин да получа само новия клон.

Втори въпрос– къде е командата за изтегляне в EGit? Успях да намеря командата fetch, но когато я стартирам, тя казва, че нищо не е необходимо. Refspec:

Refs/heads/*:refs/remotes/origin/*

Трети въпрос- има ли начин за обработка на git команди от командния ред в Eclipse на моята Windows система? Мислех да се опитам да направя изхода от командния ред, но не мога да го намеря в моята локална система.

Вашият избор е актуализиран, защото вече имате всичко копирано във вашето локално хранилище. Pull ще обедини произхода/развитието в masters, което не е това, което искате. Искате да създадете нов клон с произход/развитие като отправна точка. Не знам как да направя това с egit, но в командния ред бихте направили:

Произход/разработка на Git checkout -b

Също така търсих с часове, за да разбера как да получа отдалечен клон в Eclipse EGit...

Решението е описано в този отчет за грешки. И е много лесно, ако знаете как - няма нужда да използвате версията на git на командния ред, която, дори и да работи в 99% от всички случаи, може да бъде рискована, тъй като вече имах проблеми, че пречеше на Eclipse и EGit.

Просто следвайте тези стъпки:

  1. Първо се уверете, че имате отворен изглед на EGit Repository. Ако все още не сте го отворили, отидете на „Прозорец → Покажи изглед → Друго...“ и от там изберете „Git → Git Repositories“.
  2. В изгледа на хранилището изберете клонове → Отдалечено проследяване. Трябва да видите вашите отдалечени клонове там (пример: origin/new_feature).
  3. Щракнете с десния бутон върху отдалечения клон, който искате да имате с локални клонове. Изберете "Създаване на клон"...
  4. Стойностите по подразбиране трябва да са наред. Обикновено не е нужно да променяте нищо тук.Моля, имайте предвид, че вие нетрябва да промените стратегията „Издърпване“ на нещо различно от „Сливане“, ако не знаете какво правите. В противен случай изтеглянето на промените нагоре по веригата може да доведе до загуба на данни.
  5. Щракнете върху "OK" и сте готови :)

Сблъсках се със същия проблем и ето как го реших:

    Отворете Git Perspective

    Първо трябва да имате клона, който искате да проверите във вашето хранилище дистанционно проследяване. Проблемът ми беше, че не можех да видя отдалечения клон тук, така че за да разрешите това - направете Издърпайтев хранилището и тази команда трябва да ви даде всички клонове под дистанционно проследяване

  1. щракнете с десния бутон (отдалечен) Клон, Check Out, проверете като нов локален клон

За да можете да си сътрудничите по всеки проект на Git, трябва да знаете как да управлявате отдалечени хранилища. Отдалечените хранилища са модификации на проекти, които се съхраняват в Интернет или някъде другаде в мрежата. Може да има няколко от тях, всеки от които по правило е достъпен само за четене или за четене-запис. Сътрудничеството включва управление на отдалечени хранилища и стая ( натискам) и получаване ( дръпнете) данни в и извън тях, когато е необходимо да се обменят резултатите от работата. Управлението на отдалечени хранилища включва възможността за добавяне на отдалечени хранилища, премахване на тези, които вече не са активни, възможността за управление на различни отдалечени клонове и определяне дали те се проследяват (проследяват) или не и т.н. Този раздел обхваща всички изброени умения за управление на отдалечени хранилища.

За да разбия примерите в тази глава, създадох отдалечено хранилище TestRemote на GitHub и след това сам го клонирах.

Показване на отдалечени хранилища

За да видите кои отдалечени сървъри вече сте конфигурирали, изпълнете командата git дистанционно. Той изброява списък със съкращения за всички вече посочени отдалечени дескриптори. Ако сте клонирали вашето хранилище, трябва поне да видите произход, което е името по подразбиране, което Git присвоява на сървъра, от който сте клонирали:

За да видите на кой URL адрес съответства краткото име на Git, можете да дадете на командата опцията -v:

Добавяне на отдалечени хранилища

За да добавите ново отдалечено Git хранилище със съкратено име, което е по-лесно за достъп, стартирайте git дистанционно добавяне [съкращение]:

Сега можете да използвате името в командния ред trвместо пълния URL адрес.

Например, направих някои промени във файла README.md и сега ще ги качим в нашето локално хранилище с командата git извличане:

Сега клонът на набора от промени от сървъра е достъпен локално като tr/mater. Можете да го обедините в един от вашите клонове или да проверите този клон, ако искате да го проверите.

Тук трябва да се отбележи, че между git-pullи git извличанеима разлика, но повече за това по-късно.

В момента, ако погледнем съдържанието на файла README.md в работната директория, то ще бъде точно същото, както е било преди командата git fetch. Това е така, защото в момента сме в главния клон на локалното хранилище, което не е променено.

За да видите всички съществуващи клонове, можете да издадете командата git клонс ключ , което ще покаже всички клонове на хранилището.

Тук активният клон е отбелязан със звездичка. И също така виждаме клона, който дръпнахме с екипа git извличанее клонът за дистанционно управление/tr/master. Всъщност за това към нас екипа git извличанеи се отчита след завършване.

Можете да превключите към клон с командата git checkout <имя ветки>

И така преминахме към клона, който изтеглихме с командата git fetch, за която получихме съобщение и казахме кои файлове са актуализирани. Това е файлът README.md. Сега в работната директория можем да видим модифицираното съдържание на този файл (променихме го директно в GitHub).

Можем също да се върнем обратно към нашия главен клон

Сега нека разгледаме разликата между извличами дръпнете.

Вземи и издърпай

Както току-що научихте, за да получите данни от отдалечени проекти, изпълнете:

$ git извличане[отдалечено име] сървъри]

Тази команда е свързана с посочения отдалечен проект и взема всички данни за проекта, които все още нямате. След като изпълните командата, трябва да имате връзки към всички клонове от този отдалечен проект. Сега тези клонове могат да бъдат прегледани или обединени (обединени) по всяко време.

Когато клонирате хранилище, екип клонингавтоматично добавя това отдалечено хранилище под името произход . По този начин, git извлича произходизвлича цялата подадена работа ( натискам) към този сървър, след като сте го клонирали (или сте изтеглили промените с извличам) . Важно е да се отбележи, че екип извличамизтегля данни във вашето локално хранилище, но не ги слива (слива) с никоя ваша работа и не променя това, върху което работите в момента . Трябва ръчно да обедините тези данни с вашите, когато сте готови.

Ако имате клон, конфигуриран да проследява отдалечен клон, тогава можете да използвате командата git-pull. Тя е автоматично извлича и след това обединява (слива) данните от отдалечения клон във вашия текущ клон. Този метод може да е по-лесен или по-удобен за вас. Освен това команда по подразбиране git клонингавтоматично конфигурира вашия локален клон майсторза проследяване на отдалечен клон майсторна сървъра, от който сте клонирали (ако приемем, че има главен клон на отдалечения сървър). производителност git-pull, обикновено екстракти ( извличам) данни от сървъра, от който първоначално сте клонирали, и автоматично се опитва да се слее (слие) ( се сливат) ги с кода, върху който работите в момента.

$ git push origin master

Тази команда работи само ако сте клонирали от сървър, където имате разрешения за писане и никой друг не е изпълнявал командата оттогава натискам. Ако вие и някой друг клонирате едновременно, тогава той изпълнява командата натисками след това командата натискамправиш, след това твоя натискамопределено ще бъде отхвърлен. Първо ще трябва да нарисувате ( дръпнете) техните промени и ги обединете с вашите. Само тогава ще ви бъде разрешено да изпълнявате натискам .

Изтеглих и обединих промените за файла README.md и след това ги бутнах към сървъра на GitHub. Екранната снимка е само за информация, за да можете да видите как се прави.

Повече подробности за това как да изпратите натискам) ще разгледаме данните към отдалечен сървър малко по-късно.

Отдалечена проверка на хранилището

Ако искате да получите повече информация за едно от отдалечените хранилища, можете да използвате командата git дистанционно шоу [отдалечено сървър]. Ако изпълните тази команда с някакво име като origin, ще получите нещо подобно:

Той дава URL адреса на отдалеченото хранилище, както и информация за проследяваните клонове. Тази команда любезно ви информира, че ако сте на клон майстор, направи git-pull, клон майсторот отдалечен сървър ще бъдат автоматично обединени във вашия веднага след получаване на всички необходими данни. Той също така връща списък с всички връзки, които е получил.

Тази команда също е показва кой локален клон ще бъде прехвърлен към отдалечения сървър по подразбиранедокато правиш git push . Той също така показва кои клонове от отдалечения сървър все още нямате, кои клонове все още имате, но вече са изтрити на сървъра.

Изтриване и преименуване на отдалечени хранилища

За да преименувате връзки в нови версии на Git, можете да стартирате git дистанционно преименуване, това ще промени краткото име, използвано за отдалеченото хранилище. Например, ако искате да преименувате tr на tstrmt, можете да го направите по следния начин:

Струва си да се спомене, че това също променя имената на отдалечени клонове вместо вас. Това, до което сте осъществили достъп като tr/master, стана tstrmt/master.

Ако по някаква причина искате да премахнете връзката (сменили сте сървъри или вече не използвате определено огледало, или може би сътрудникът вече не е активен), можете да използвате git дистанционно rm: