如何将更改添加到以前的版本并将其保存到分支主文件

时间:2016-12-28 02:23:15

标签: git

如果我有 a> b> c 版本。我想回到 b 并添加一些更改所以我现在拥有的是 a>主分支上的b> b + newChanges ,我希望这是有道理的。

4 个答案:

答案 0 :(得分:1)

如果您没有将提交推送到遥控器,请尝试以下操作:

  1. 从b commit
  2. 结帐新分支
  3. 进行更改并提交新分支
  4. 从新分支到上一分支的git rebase
  5. 命令如下:

    git checkout <b commit hash> -b <new branch name>
    #make changes 
    git add .
    git commit
    git rebase <new branch name> <previous branch name>
    

    如果你已经推动了a&gt; b> c到远程,您不应该更改提交历史记录,只需进行更改并提交。

答案 1 :(得分:1)

在git中,分支基本上只是修订的友好名称 - 请记住,git修订版还包含有关其历史记录的信息。分支优于修订哈希的主要优点是您可以更改分支引用的修订;例如,当您提交一些新代码时,git会更新当前签出的分支以引用您刚刚创建的全新修订。

因此,在您的情况下,您(至少)有三次修订, a b c 。修订版 a b 的父级,后者又是 c 的父级,分支引用修订 c 。你需要做的是

  1. 确保您已检出分支。

    git checkout master
    
  2. (可选)如果您想继续访问 c ,则应创建另一个引用 c 的分支。您可以通过运行以下命令来执行此操作:

    git branch newbranch
    

    这将创建一个名为 newbranch 的分支,它引用修订版 c

  3. 重置分支,使其引用修订 b 。要执行此操作,请选中,然后运行

    git reset --hard HEAD^
    

    符号HEAD^表示“HEAD之前的版本”,而HEAD是当前已检出版本的简写。 (有点像特殊的分支名称。)在您的情况下,HEAD c ,但在运行此命令后,HEAD b 。如果您跳过第2步,则您现在无法访问修订版 c 1

  4. 进行所需的新更改。

  5. 将您的新更改提交到新版本。

    git commit -a
    

    提交已经被git或

    跟踪的所有已更改文件
    git add [files]
    git commit
    

    显式指定要提交的文件。您现在已经创建了一个新版本 d ,其父级为 b ,其中包含新的更改。

  6. 1 好吧,不是真的,但这是高级用法。

答案 2 :(得分:0)

试试这个,

git reset HEAD~1
# make changes
git commit -a --amend 

这会将bc的所有更改以及新更改合并到一个新的b提交中。如果您想要从c使用reset --hard

中删除更改

答案 3 :(得分:0)

我在这里找到了答案 stackoverflow.com/questions/5772192我的所作所为

git reset HEAD~1

添加了一些更改并将它们添加到舞台区域

git branch -f master temp

git checkout master