ReinH Git工作流程

jim*_*jim 5 git

我正在使用这个工作流程:

http://reinh.com/blog/2009/03/02/a-git-workflow-for-agile-teams.html

在他提到的地方:"首先,在你的主分支(git checkout master)中,拉入最近的变化:git pull origin master这永远不会创建合并提交,因为我们永远不会直接在master中工作."

哎呀,我刚刚做了.我不小心对我的主人(对我的主题分支)提交了一些文件的一些更改.然后我意识到我的错误 - 删除了我的主题分支.现在我想摆脱我承诺的变化(对主人来说),做什么是正确的?我还没有重新定位或将我的更改推送到repo,所以它都是本地的.

本质上,我想要下载最新版本的主代码,而忽略我对本地主代码所做的一切(实际上是一次提交).

Mik*_*ler 11

如果你只想把它扔掉,当你在你的主分支上时:

git reset --hard HEAD^
Run Code Online (Sandbox Code Playgroud)

此命令将主控器的HEAD指针重置为先前的提交.(你也可以说"HEAD~1",这意味着与HEAD ^相同.)更一般地说,你也可以将你的主人重置为与服务器相同:

git reset --hard origin/master
Run Code Online (Sandbox Code Playgroud)

无论master的状态如何(即5个提交源,或者30个提交),它都可以工作.--hard这些命令中的选项意味着工作树中的文件也将与分支头一起重置.

额外提示

如果您处于类似的情况,您实际上想要保留更改,您可以随时执行:

git fetch             # This grabs changes from the server without merging them
git rebase origin
Run Code Online (Sandbox Code Playgroud)

这将在服务器上的最新更改之上重播您在master中的所有工作.

另一种方法是为master上的工作创建一个主题分支:

git checkout -b newfeature
Run Code Online (Sandbox Code Playgroud)

然后你可以切换回master(git checkout master)并使用我给的第一个命令来回退master返回一个提交.请记住,分支实际上只是存储库中提交的便捷名称.例如,master它只是对该分支上最新提交的引用.你可以随意移动这些引用,随着git越来越高级,你会发现自己经常这样做.

我还建议你养成gitk --all在玩树枝时运行的习惯,这样你就可以直观地看到你在做什么.当我是git的新手时,我一直都在运行这个命令.我仍然...