Відповіді:
Це майже спрацює.
При натисканні на гілку, що не використовується за замовчуванням, вам потрібно вказати вихідний номер та цільовий номер:
git push origin branch1:branch2
Або
git push <remote> <branch with new changes>:<branch you are pushing to>
<remote>/<branch>
git push origin :branch2
думаючи, що це просто натисне поточну локальну гілку на пульт branch2
, що вона замість цього видалить пульт branch2
! Правильний шлях git push origin HEAD:branch2
.
Звичайно, хоча це буде працювати лише в тому випадку, якщо це швидко вперед BRANCH2 або якщо ви змусите його. Правильний синтаксис робити таке - це
git push <remote> <source branch>:<dest branch>
Дивіться опис "refspec" на сторінці git push man для отримання більш детальної інформації про те, як це працює. Також зауважте, що і натискання сили, і скидання - це операції, які "переписують історію", і їх не слід намагатись слабким серцем, якщо ви абсолютно не впевнені, що знаєте, що ви робите стосовно будь-яких віддалених сховищ та інших люди, у яких є вилки / клони одного проекту.
git push --force remote local-branch:remote-branch
.
Це дуже просто. Припустимо, що ви внесли зміни до своєї філії А, яка знаходиться як локально, так і віддалено, але ви хочете перенести ці зміни на відділення B, яке ніде не існує.
Крок-01: створити та перейти на нову гілку B
git checkout -b B
Крок 02: Додайте зміни до нової локальної гілки
git add. // або конкретні файли
Крок-03: Введіть зміни
git commit -m "посилання_повідомлення"
Крок 04: Натисніть зміни в новій гілці B . Команда нижче створить нову гілку B також віддалено
git push origin B
Тепер ви можете перевірити з BitBucket , що гілка B матиме один більш ніж здійснювати гілки А . І коли ви витягаєте філіальну А ці зміни не будуть там , як вони були витіснені в галузі B .
Примітка: Якщо ви внесли свої зміни до гілки A і після цього хочете змінити ці зміни в нову гілку B, вам доведеться спочатку відновити ці зміни. #HappyLearning
У моєму випадку у мене був один місцевий комітет, на який не підштовхували origin\master
, а передавали в місцеве master
відділення. Цей місцевий комітет зараз слід перенести на інше відділення.
За допомогою Git Extensions ви можете зробити щось подібне:
Ви також можете це зробити в командному рядку GIT . Приклад скопійований з Девіда Крістенсена :
Я думаю, що ви знайдете
git cherry-pick
+,git reset
щоб бути набагато швидшим робочим процесом:Використовуючи той же самий сценарій, коли "функція" є гілкою, в якій найбільше помилок невірно, зробити це буде набагато простіше:
git checkout master
git cherry-pick feature
git checkout feature
git reset --hard HEAD^
Економить досить багато роботи, і це сценарій, який
git cherry-pick
був розроблений для обробки.Я також зазначу, що це також спрацює, якщо це не найголовніший прихильність; вам просто потрібна фіксація аргументу на вибір вишні через:
git checkout master
git cherry-pick $sha1
git checkout feature
git rebase -i ... # whack the specific commit from the history
Я отримав поганий результат за допомогою git push origin branch1:branch2
команди:
У моєму випадку branch2
видалено та branch1
оновлено з деякими новими змінами.
Тому, якщо ви хочете тільки зміни натисніть на branch2
від branch1
, спробуйте процедури нижче:
branch1
:git add .
branch1
:git commit -m 'comments'
Увімкнено branch1
:git push origin branch1
Увімкнено branch2
:git pull origin branch1
Увімкнено branch1
: поверніться до попереднього комітету.
git init
#git remote remove origin
git remote add origin <http://...git>
echo "This is for demo" >> README.md
git add README.md
git commit -m "Initail Commit"
git checkout -b branch1
git branch --list
****add files***
git add -A
git status
git commit -m "Initial - branch1"
git push --set-upstream origin branch1
#git push origin --delete branch1
#git branch --unset-upstream
Ви взяли на себе зобов’язання BRANCH1 і хочете позбутися цього зобов’язання, не втрачаючи змін? git reset - те, що вам потрібно. Зробіть:
git branch BRANCH2
якщо ви хочете, щоб BRANCH2 була новою гілкою. Ви також можете з’єднати це наприкінці з іншою гілкою, якщо хочете. Якщо BRANCH2 вже існує, залиште цей крок.
Потім зробіть:
git reset --hard HEAD~3
якщо ви хочете скинути комісію на гілку, яку ви здійснили. Це потребує змін останніх трьох комітетів.
Потім виконайте наступне, щоб повернути скинуті комісії до BRANCH2
git checkout BRANCH2
Це джерело було корисним: https://git-scm.com/docs/git-reset#git-reset-Undoacommitmakingitatopicbranch
branch1
іbranch2
потрібно бути на пульті? Що робити, якщо ви хочете натиснути з локальногоbranch1
на віддаленийorigin branch2
?