0

没有玩过 git,所以这更像是一个“git 是否支持这样的东西”的问题。

你在工作……工作……你刚刚做了一个很大的改变,它构建了,你做了一个提交,然后立即开始着手下一个大特性。对文件进行了一些更改,但不足以提交,并且铃声响了。您想继续在家工作,但又不想通过部分提交弄脏历史树。

理想情况下,您可以将历史树上传到 GitHub 和工作树的内容,然后继续在家工作。

git 支持这样的东西吗?

我总是可以将整个内容上传到 USB 并从那里继续,但这破坏了整个想法。

4

3 回答 3

4

提交并推送您的部分更改(最好在故事分支上),然后将中间提交压缩为最终提交,如下所述:http: //gitready.com/advanced/2009/02/10/squashing-commits-with- rebase.html

于 2012-12-06T07:23:36.643 回答
1

只需提交您的更改,然后在家中撤消最后一次提交(在您拉出之后):

git reset HEAD^

但是你将不得不进行强制推送(push -f),如果其他人在这个分支上工作,你就会遇到麻烦。有两种解决方案:

  1. 提交到不同的分支:

    git checkout -b my-temp-branch
    git commit -am "dirty state"
    git push origin my-temp-branch
    

    然后在家里,检查正确的分支,将其移动到 temp 分支,还原最后一次提交并删除 temp 分支:

    git checkout **branch**
    git pull origin my-temp-branch
    git reset HEAD^
    git push --delete origin my-temp-branch
    
  2. 提交到不同的回购。如果您不想在临时分支中乱扔中央存储库,只需在 github 上创建自己的存储库(如果我们谈论的是公司代码,则为私有存储库),将其设置为另一个远程并执行与步骤 1 相同的操作。

    git remote add private **repo**
    

    这需要做一次,然后当你回家时:

    git commit -am "dirty state"
    git push private **branch**
    

    然后在家里,你只需从你的私人仓库中提取并重置脏提交

    git checkout **branch**
    git pull private **branch**
    git reset HEAD^
    
于 2012-12-06T07:45:14.240 回答
0

Git 是一个分布式版本控制和源代码。

因此,无论何时,我们都会进行更改,但它们还没有准备好进行最终提交,因此为了避免整个返回并开始工作,请切换到新分支并提交您的工作。

git checkout -b <new-branch>
git add .
git commit 

检查这个:将现有的、未提交的工作移动到 Git 中的新分支

于 2012-12-06T07:25:26.537 回答