1

这是场景

我在 GIT 中有 5 个版本的代码。

Commit 1
Commit 2
Commit 3
Commit 4
Commit 5

现在我在代码中有很多未提交的更改。我想say commit 3在不同的物理位置获取早期版本 ( ) 之一,而不会丢失未提交的更改。

换句话说,在开发最新版本的同时,我想给一些人提供更早的工作版本,而不需要对 GIT 存储库进行任何更改。

请不要问我,为什么我不想提交更改。

我的问题的简化版

我可以在 GIT 中做这样的事情吗?

svn export -r123 https://svnrepo C:/temp

其中 123 是版本,C:/Temp 是目标位置。我相信这不会对存储库进行更改!

4

3 回答 3

2

如果您真的只想让其他人分支并在您的存储库上工作,那么您可能正在寻找一个简单的git clone. 这不会强迫您提交任何工作更改。

git clone /path/to/local/git-repo /path/to/local/new-git-repo

这将克隆您的存储库,而无需您进行挂起的更改。这将在本地和远程工作。然后,想要从特定提交开始的人将获得该新克隆并使用checkout -b, resetor rebase(以最适合您的流程的为准)。

例如,以下是其他人在获得您的克隆后可能会做的事情:

cd /path/to/new-git-repo
checkout -b new-feature commit-1
# work work work
# commit

然后你会git pull /path/to/his/new-git/repo new-feature,或者也许fetchcherry-pick谁知道呢。

总之,您似乎需要一个共享的远程来源以避免被上述内容混淆并执行上述操作,这将是解决您的问题的最佳方法。

于 2012-12-05T09:54:39.267 回答
2

你想要的是把你的工作藏起来,然后再回来(不提交当前的更改)。

一般来说:

git stash
git checkout <commit>
- Do Something -
git stash apply

阅读内容以获取更多信息。

编辑:
正如@soulseekah 指出的那样,您可以将本地存储库克隆到其他位置,并且未提交的代码不会克隆。
至于获得第 n 次提交(例如 3 次之前的提交):

git checkout HEAD~3
于 2012-12-05T09:48:04.987 回答
0

似乎是 GIT 中缺少的功能。就像 SVN 中的“导出”一样。唯一的办法就是先检查nTh版本再拿,再检查一下大师!

于 2013-07-23T11:32:04.197 回答