Хотя это не очень удобно, вы всегда можете передать его как переменную командной строки, например:
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"
Используйте следующее:
git checkout -b <new-branch>
Это оставит вашу текущую ветку как есть, создаст и проверит новую ветку и сохранит все ваши изменения. Затем вы можете сделать фиксацию с помощью:
git add <files>
и зафиксировать новую ветку с помощью:
git commit -m "<Brief description of this commit>"
Изменения в рабочем каталоге и изменения, внесенные в индекс, еще не принадлежат ни одной ветке. Это меняет место, где эти изменения заканчиваются.
Вы не сбрасываете исходную ветку, она остается как есть. Последняя фиксация на <старая ветка>
останется прежней. Поэтому вы checkout -b
, а затем фиксируете.
Я использовал ответ @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
Существует на самом деле действительно простой способ сделать это с Рабочим столом GitHub теперь, когда я не верю, была функция прежде.
Все, что необходимо сделать, переключиться на новое ответвление в Рабочем столе GitHub, и это предложит Вам оставлять свои изменения на текущем ответвлении (который спрячется), или внести Ваши изменения с Вами к новому ответвлению. Просто выберите вторую опцию, чтобы внести изменения в новое ответвление. Можно тогда фиксировать, как обычно.
Это может быть полезно для всех инструментов использования для МЕРЗАВЦА
ответвление Переключателя Команды
- оно переместит Ваши изменения в новом ответвлении. Тогда можно фиксировать изменения.
$ git checkout -b <new-branch>
TortoiseGIT
Щелкает правой кнопкой по Вашему репозиторию и затем использует TortoiseGit-> Переключатель/Контроль
Использование SourceTree
кнопка "Checkout" для переключения ответвления. Вы будете видеть кнопку "контроля" наверху после нажатия на ответвление. Изменения от текущего ответвления будут применены автоматически. Тогда можно фиксировать их.