Який із цих рядків правильний?
git checkout 'another_branch'
Або
git checkout origin 'another_branch'
Або
git checkout origin/'another_branch'
git checkout 'another_branch'
Або
git checkout origin 'another_branch'
Або
git checkout origin/'another_branch'
Відповіді:
Якщо another_branchвже існує локально і ви не перебуваєте на цій гілці, тоді git checkout another_branchпереключаєтесь на гілку.
Якщо another_branchне існує, але є origin/another_branch, то git checkout another_branchвін еквівалентний git checkout -b another_branch origin/another_branch; git branch -u origin/another_branch. Це потрібно створити another_branchз origin/another_branchі встановити origin/another_branchяк верхній потік another_branch.
Якщо жодного з них немає, git checkout another_branchповертається помилка.
git checkout origin another_branchповертає помилку в більшості випадків. Якщо originце редакція і another_branchє файлом, то вона перевіряє файл цієї редакції, але, швидше за все, це не те, що ви очікуєте. originв основному використовується в git fetch, git pullі git pushяк пульт дистанційного керування, псевдонім URL - адреса в віддаленому сховище.
git checkout origin/another_branchдосягає успіху, якщо origin/another_branchіснує. Це призводить до того, що він знаходиться в окремому стані HEAD, а не на будь-якій гілці. Якщо ви робите нові зобов’язання, нові коміти недоступні для жодних існуючих гілок, і жодна з гілок не буде оновлена.
ОНОВЛЕННЯ :
Оскільки вийшла 2.23.0, ми також можемо використовувати git switchдля створення та перемикання гілок.
Якщо fooіснує, спробуйте перейти на foo:
git switch foo
Якщо fooне існує , і origin/fooіснує, намагаються створити fooз , origin/fooа потім перейти до foo:
git switch -c foo origin/foo
# or simply
git switch foo
Більш загально, якщо fooцього не існує, спробуйте створити fooз відомого списку чи ввести, а потім перейдіть до foo:
git switch -c foo <ref>
git switch -c foo <commit>
Якщо ми підтримуємо сховище в Gitlab та Github одночасно, локальне сховище може мати два віддалених, наприклад, originдля Gitlab та githubGithub. У цьому випадку сховище має origin/fooі github/foo. git switch fooпоскаржиться fatal: invalid reference: foo, бо невідомо, з якої реф. origin/fooабо github/foo, щоб створити foo. Нам потрібно вказати його git switch -c foo origin/fooабо в git switch -c foo github/fooвідповідно до необхідності. Якщо ми хочемо створити гілки з обох віддалених гілок, краще використовувати відмінні назви для нових гілок:
git switch -c gitlab_foo origin/foo
git switch -c github_foo github/foo
Якщо fooіснує, спробуйте відтворити / примусити-створити fooз (або скинути fooна) відомий реф або виконувати, а потім переключіться на foo:
git switch -C foo <ref>
git switch -C foo <commit>
які еквівалентні:
git switch foo
git reset [<ref>|<commit>] --hard
Спробуйте переключитися на відокремлену ГОЛОВУ відомої посилання або виконувати:
git switch -d <ref>
git switch -d <commit>
Якщо ви просто хочете створити гілку, але не перейти на неї, скористайтеся git branchнатомість. Спробуйте створити відділення з відомого списку або виконувати:
git branch foo <ref>
git branch foo <commit>
git checkoutкоманда робить занадто багато речей, на мою думку. Ось чому тут так багато режимів роботи. Якщо єдине, що git checkoutбуло зроблено, - це перемикання гілок, відповідь була б простою, але вона також може створювати гілки та навіть витягувати файли з певних комітетів без перемикання гілок.
git switchдля переходу до гілки.
git checkoutнатомість для старих версій, що також працює в сучасних версіях.
Перехід до іншої гілки в git. Відверта відповідь,
git-checkout - Переключення гілок або відновлення робочих файлів дерев
git fetch origin <----this will fetch the branch
git checkout branch_name <--- Switching the branch
Перш ніж переключити гілку, переконайтеся, що у вас немає змінених файлів; у такому випадку ви можете ввести зміни або зберегти їх.
[ git checkout "branch_name"]
ще один спосіб сказати:
[ git checkout -b branch_name origin/branch_name]
у випадку, якщо "ім'я гілки" існує лише віддалено.
[ git checkout -b branch_name origin/branch_name] корисний у випадку, якщо у вас є кілька віддалених.
Щодо [ git checkout origin 'another_branch'] Я не впевнений, що це можливо, AFAK ви можете це зробити за допомогою команди "fetch" - [ git fetch origin 'another_branch']
Що для мене спрацювало наступне:
Перехід до потрібної гілки:
git checkout -b BranchName
І тоді я потягнув "майстра" за:
git pull origin master
Корисні команди для роботи в повсякденному житті:
git checkout -b "branchname" -> creates new branch
git branch -> lists all branches
git checkout "branchname" -> switches to your branch
git push origin "branchname" -> Pushes to your branch
git add */filename -> Stages *(All files) or by given file name
git commit -m "commit message" -> Commits staged files
git push -> Pushes to your current branch
Якщо ви хочете, щоб гілка відстежувала віддалену гілку, яка дуже імпортується, якщо ви збираєтеся внести зміни до гілки та витягнути зміни тощо, вам потрібно використовувати Додати -t для фактичної реєстрації, наприклад:
git checkout -t branchname
Перевірка: git branch -a
Якщо ви отримуєте лише одну гілку. Потім виконайте нижче кроки.
git config --listgit config --unset remote.origin.fetch git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*depthпарам), і тепер задаєтесь питанням, чому ви не можете отримати інші віддалені гілки, error: pathspec 'another_branch' did not match any file(s) known to gitвикористовуючи команди, запропоновані вище. Це, звичайно, не те, про що було в первісному питанні, але це може допомогти іншим почухати голову.
Я використовую це для переключення однієї гілки на іншу, будь-хто, кого ви можете використовувати, працює для мене як шарм.
git switch [відділенняName] АБО git checkout [branchName]
напр .: git перемикач розробляти АБО
git checkout розробити
git checkout [branch]для більшості користувачів, які приходять до цього питання