最近我们从TFS搬到了GIT,所以我还在学习如何使用这个神奇的工具。
目前我正在使用一个非常简单的结构,如下所示:
main -------------------------------------- 01 ----------
\ /
dev ----------------------- 01 ---------- 02 ----------
\ / /
feat/login ------ 01 --- 02 --- 03 --- 04 --- 05 ---
feature/something
工作,并且每次登记时都会工作并触发带有测试的构建dev
,其中包含来自feature/something
的一个或多个签到dev
中的功能合并到main
问题如下:
feat/login
开始工作,如果我git checkout dev
我没有从dev
获取最新代码,但我在feat/login
中更改了我的最新本地文件。 如何在不继续执行上一个分支机构提交的本地更改的情况下结帐dev
rollback
01
dev
之前的02
,并将其推送到最新办理登机手续if (minotos.length = 1)
{
minotos = "0" + minotos;
}
不再是最后一个了吗?答案 0 :(得分:3)
1)Stash您的更改,结帐到另一个分支,在那里进行一些更改并返回原始分支并应用/弹出您的存储。
$ git stash
$ git checkout dev
# do something in you dev branch
$ git checkout feat/login
$ git stash apply
您可以使用命令$ git stash list
2)好像你想要恢复变化。我建议你不要把git历史作为初学者。无论如何,如果你想在这里尝试一下,那么answer如何做到这一点很好。正如Lasse所说,创建另一个提交可以恢复要撤消的提交效果更好。
答案 1 :(得分:2)
您可以使用的另一个功能是git worktree
(https://git-scm.com/docs/git-worktree),它允许您同时拥有多个分支的工作副本,例如让我们假设你是主人:
git worktree add -b dev ../dev origin/dev
git worktree add -b feat_login ../feat_login origin/feat/login
将在../dev和../feat_login中为您提供2个额外的工作副本,其中包含dev和feat_login分支的工作副本。
我觉得这个功能在项目中特别有用,我必须经常在分支之间切换。