Переместить существующую, незафиксированную работу в новую ветку в Git

Хотя это не очень удобно, вы всегда можете передать его как переменную командной строки, например:

package blah_test

import (
    "flag"
    "fmt"
    "os"
    "testing"
)

var (
    cwd_arg = flag.String("cwd", "", "set cwd")
)

func init() {
    flag.Parse()
    if *cwd_arg != "" {
        if err := os.Chdir(*cwd_arg); err != nil {
            fmt.Println("Chdir error:", err)
        }
    }
}

func TestBlah(t *testing.T) {
    t.Errorf("cwd: %+q", *cwd_arg)
}

Затем запустите его, как:

┌─ oneofone@Oa [/tmp]                                                                                             
└──➜ go test . -cwd="$PWD"
--- FAIL: TestBlah (0.00 seconds)
        blah_test.go:16: cwd: "/tmp"
2917
задан Cœur 9 October 2017 в 05:01
поделиться

4 ответа

Используйте следующее:

git checkout -b <new-branch>

Это оставит вашу текущую ветку как есть, создаст и проверит новую ветку и сохранит все ваши изменения. Затем вы можете сделать фиксацию с помощью:

git add <files>

и зафиксировать новую ветку с помощью:

git commit -m "<Brief description of this commit>"

Изменения в рабочем каталоге и изменения, внесенные в индекс, еще не принадлежат ни одной ветке. Это меняет место, где эти изменения заканчиваются.

Вы не сбрасываете исходную ветку, она остается как есть. Последняя фиксация на <старая ветка> останется прежней. Поэтому вы checkout -b , а затем фиксируете.

3481
ответ дан 22 November 2019 в 19:47
поделиться

Я использовал ответ @Robin & список всего, что я сделал,

git status                               <-- review/list uncommitted changes
git stash                                <-- stash uncommitted changes
git stash branch <new-branch> stash@{1}  <-- create a branch from stash
git add .                                <-- add local changes
git status                               <-- review the status; ready to commit
git commit -m "local changes ..."        <-- commit the changes
git branch --list                        <-- see list of branches incl the one created above
git status                               <-- nothing to commit, working tree (new-branch) is clean
git checkout <old-branch>                <-- switch back

! , Если repo имеет больше чем один притон, посмотрите который относиться к новому ответвлению:

git stash list  
  stash@{0}: WIP on ...  
  stash@{1}: WIP on ...

и осматривают отдельный притон,

git stash show stash@{1}

Или осматривают все притоны сразу:

git stash list -p
0
ответ дан 22 November 2019 в 19:47
поделиться

Существует на самом деле действительно простой способ сделать это с Рабочим столом GitHub теперь, когда я не верю, была функция прежде.

Все, что необходимо сделать, переключиться на новое ответвление в Рабочем столе GitHub, и это предложит Вам оставлять свои изменения на текущем ответвлении (который спрячется), или внести Ваши изменения с Вами к новому ответвлению. Просто выберите вторую опцию, чтобы внести изменения в новое ответвление. Можно тогда фиксировать, как обычно.

GitHub Desktop

0
ответ дан 22 November 2019 в 19:47
поделиться

Это может быть полезно для всех инструментов использования для МЕРЗАВЦА

ответвление Переключателя Команды

- оно переместит Ваши изменения в новом ответвлении. Тогда можно фиксировать изменения.

 $ git checkout -b <new-branch>

TortoiseGIT

Щелкает правой кнопкой по Вашему репозиторию и затем использует TortoiseGit-> Переключатель/Контроль

enter image description here enter image description here

Использование SourceTree

кнопка "Checkout" для переключения ответвления. Вы будете видеть кнопку "контроля" наверху после нажатия на ответвление. Изменения от текущего ответвления будут применены автоматически. Тогда можно фиксировать их.

enter image description here

0
ответ дан 22 November 2019 в 19:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: