以下是这样的情景:我正在分支机构A工作,但是紧急需要解决的问题,我怎样才能创建一个新的分支(说它的分支B)而不会带来当前的分支变化?
我不想查看分支A中的所有文件,因为如果分支B中的工作完成,我希望能够继续。
我不想推动分支机构A,因为它未完成。
答案 0 :(得分:2)
来自 $ git worktree add -b emergency-fix ../temp master
$ pushd ../temp
# ... hack hack hack ...
$ git commit -a -m 'emergency fix for boss'
$ popd
$ rm -rf ../temp
$ git worktree prune
(https://git-scm.com/docs/git-worktree)
你正处于重构阶段,你的老板进来了 并要求你立即修复一些东西。您 通常可以使用git-stash(1)暂时存储您的更改,但是,您的工作树处于这种状态 您不想冒险的混乱(使用新的,移动的和移除的文件,以及其他散落的碎片) 打扰任何一个。相反,您创建一个临时链接工作树来进行紧急修复,完成后将其删除, 然后恢复你之前的重构会话。
{{1}}
答案 1 :(得分:1)
您可以在A
中提交更改。然后结帐B
。完成B
后,返回A
并继续。
或者,如果您不想在“A'”,stash(保存其他地方)更改提交更改。结帐到B
,当您返回A
时,只需从stash pop
获取(stash
)更改。
Stashing
获取工作目录的脏状态 - 即修改后的跟踪文件和分阶段更改 - 并将其保存在一堆未完成的更改中,您可以随时重新应用
选项-1:提交
$ git checkout A # chekcout A
$ git commit -am 'tmp commit' # add & commit
$ git checkout B # checkout B
// fix your urgent changes here
$ git checkout A
// continue A
选项-2:藏匿
$ git checkout A
$ git add .
$ git stash # save unfinished changes
$ git checkout B # checkout B
// fix your urgent changes here
$ git checkout A # checkout A
$ git stash apply # retrieve the changes from stash
// you can clear the stash
$ git stash drop # remove the changes from stash
答案 2 :(得分:0)
选项1:您可以存储更改
如果您对分支A进行了更改: 在分支A中,做
func textFieldShouldReturn(textField: UITextField) -> Bool {
let fieldTextLength = textField.text!.characters.count
if fieldTextLength < 4 || fieldTextLength > 30 {
//do something about it
}
self.view.endEditing(true)
return true
}
要检索更改,
git stash save "hint_to_what_stash_contains"
如果您有多个藏匿处,可以列出它们并选择要应用的存储空间。
git stash apply
选项2:提交您的更改。
首先,在branchA中提交所有更改但不将其推送到原点,然后创建分支b来完成工作。 完成branchB后,您可以签出分支A以恢复工作。
恢复branchA的工作
git stash list
git stash apply stash@\{<STASH_NUMBER>\}
选项3:我不推荐,是补丁的东西..我看到有些人使用它。做一个git diff并将其保存在一个文件例如“branch_a_changes.patch”中,当你想恢复你的工作时就做了 git apply branch_a_changes.patch