Kos*_*Kos 20 git branch git-branch
通常在分支机构工作时,我需要引入一些"临时"更改(例如额外的调试信息,或者让我更好地观察我实际工作的更改).
关于这些"临时"变化:
目前我只是将它们保持为未分级状态,并在暂存每次提交时手动跳过它们.但是我不能坚持这个解决方案,因为:
我该怎么处理呢?
gitignore
显然是不可能的,因为我不想忽略整个文件,我仍然对其他提交者的更改感兴趣(我需要不时地将分支重新绑定到主人).
Mar*_*air 13
我通常使用以下方法处理:
git add -p
Run Code Online (Sandbox Code Playgroud)
......以大块头的方式进行变革.然后你必须确保按下n你的调试更改.
如果我有更多涉及此类型的更改,我将创建一个名为类似于local-changes
提示的分支,其中介绍了调试代码.在创建了几个提交之后,我会使用:
git rebase -i master
Run Code Online (Sandbox Code Playgroud)
...重新排序它们,以便本地更改的提交再次提示.然后更新master并返回本地更改分支,你可以这样做:
git checkout master
git merge local-changes^
git checkout local-changes
Run Code Online (Sandbox Code Playgroud)
试试git update-index --assume-unchanged <file>
.这样git就不会在使用git add
或时将文件添加到索引中git commit -a
.
编辑:这不允许您处理具有临时和永久更改的文件的情况.
这里有一种方法可以解决这个问题,一旦设置,只需要你记住一个步骤来设置它,并且在每次推送之前记住一个步骤。
设置:
git branch tempChanges [branch for temporary changes]
[create your temporary changes]
git add -A
git commit
Run Code Online (Sandbox Code Playgroud)
请注意该提交的 sha。然后切换到您的工作分支,然后:
git cherry-pick shaOfTempChangesCommit
Run Code Online (Sandbox Code Playgroud)
现在你的工作分支有了变化。做你的工作并做出承诺。然后,在你推送之前:
git rebase -i
Run Code Online (Sandbox Code Playgroud)
你会看到这样的东西:
pick bfd4d2e This first commit is your temporary changes.
pick 186a99d Some stuff done on the working branch.
pick ec871c6 More stuff done on the working branch.
(etc.)
Run Code Online (Sandbox Code Playgroud)
删除带有临时更改的行。 然后保存退出。您的历史记录将被重写以排除临时更改。(更改仍将存在于tempChanges分支中。)完成后,进行任何您需要的测试,然后
git push
.
当您准备好再次工作时,您可以将临时更改拉回您当前的工作分支(或新的工作分支):
git cherry-pick shaOfTempChangesCommit
Run Code Online (Sandbox Code Playgroud)
所以,总而言之,在这个方法中你只需要记住
创建工作分支后
git cherry-pick shaOfTempChangesCommit
在你完成工作并准备好推送之后
git rebase -i
[在推送之前删除临时更改]
归档时间: |
|
查看次数: |
4661 次 |
最近记录: |