Питання Як я можу натиснути нову локальну гілку на віддалений сховище Git і відстежувати це теж?


Я хочу зробити наступне:

  1. Створіть місцевий підрозділ на основі іншої (віддаленої або локальної) гілки (через git branch або git checkout -b)

  2. Натисніть місцеву гілку до віддаленого сховища (опублікувати), але зробити це відстежуваний так git pull і git push буде працювати негайно.

Як це зробити?

Я знаю про --set-upstream в Git 1.7, але це пост-створення дії. Я хочу знайти спосіб зробити подібну зміну, натискаючи гілку на віддалений сховище.


3657
2018-05-04 12:58


походження


можливий дублікат Як зробити існуючий гітарний гілок відстежувати віддалену гілку? - markus
лише наголосити, що -set upstream є -u - Baiyan Huang


Відповіді:


У Git 1.7.0 і пізнішої версії ви можете перевірити нову гілку:

git checkout -b <branch>

Редагувати файли, додавати та фіксувати. Потім штовхати з -u (короткий для --set-upstream) варіант:

git push -u origin <branch>

Git налаштує інформацію про відстеження під час натискання.


5762
2018-06-03 20:50



Варто також відзначити, що якщо у вас уже існує вже існуюча ветка відстеження, яку ви натискаєте, і push.default встановлено на upstream, це не буде робити те, що ви думаєте, що це буде робити. Вона намагатиметься просунути існуючу гілку відстеження. Використання: git push -u origin mynewfeature:mynewfeature або робити git branch --unset-upstream перший. - void.pointer
Я все ще мав потребу в "git branch - set-upstream-to origin / remote" для того, щоб "git status" правильно звітувати про статус філії щодо віддаленої гілки. - Paul Whipp
Для людей, які використовують Git від Visual Studio: Насправді це те, що "Publish Branch" в Visual Studio робить. Після виконання git push за допомогою параметра -u я, нарешті, зможу побачити мою гілку як опублікована у VS UI. - Puterdo Borato
Чи потрібні нам? -u варіант кожного разу, коли ми натискаємо гілку на свій пульт або просто потребуємо в перший раз? - Stephane
@ Стефан Вам потрібна лише -u один раз ініціювати відстеження Після цього просто використовуйте git push - Todd


Якщо ви не поділяєте свою репо з іншими, це корисно для натискання все Ваші філії до віддаленого, і --set-upstream відстеження правильно для вас:

git push --all -u

(Не зовсім те, про що прагнув О.П., але цей один-вкладиш досить популярний)

Якщо ви поділитесь своєю репо з іншими, це не дуже хороша форма, оскільки ви будете засмічувати репо з усіма вашими хитрими експериментальними галузями.


448
2018-01-20 11:36



і git pull --all тягне все це назад у інше місце? кив - commonpike
Ця команда встановлює відстеження до правильної гілки без необхідності натискати що-небудь. Дякую. - amey91
Gіt дозволяє робити філію, а не натискати її з дуже поважних причин. Лише за допомогою git push - все це як скидання фрагмента гітарної архітектури. Якщо це працює для вас, це чудово, добре, роби це назавжди. Але, БУДЬ ЛАСКА, не рекомендуйте іншим уникати вивчення гіт просто тому, що це швидкий спосіб зробити речі. - 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 У термінах Git HEAD (у верхньому регістрі) - це посилання на верхню частину поточної гілки (дерева).

    The -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
Любіть цю відповідь - набравши "HEAD" набагато простіше, ніж набирати повне ім'я назви філії (часто затягнутий або звивистий). - JKubecki


Я вважаю, що ви вже клонували проект, як:

git clone http://github.com/myproject.git
  1. Потім у вашій локальній копії створіть нову гілку і перевірте її:

    git checkout -b <newbranch>
    
  2. Припускаючи, що ви створили "git gare -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
> натискати локальну гілку на віддалене репо (опублікувати), але зробити його> відстежувати таким чином, щоб гіт-тягнути і git push буде працювати негайно. його що github робить автоматично, коли ви натискаєте свій код у свій репозиторій :-) - VP.
Це не відповідає на питання, <newbranch> оригінального репо не відслідковується (і перейменовано як <master> - це новий репо, який ви клонуєте в кроці 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