在我当地的git repo上,我有很多提交,包括'秘密'连接字符串: - )
当我把它推到那里时,我不希望这个历史在github上。
基本上我想推动我拥有的一切,但想要摆脱一大堆历史。
也许我会更好地在我的所有开发人员的分支中运行,然后在提交之前合并回master ...然后master的历史将只是我想要的提交。
我尝试过运行rebase:
git rebase –i HEAD~3
返回3次提交,然后我可以删除提交。
然而遇到自动樱桃选择失败了,它变得相当复杂。
任何想法都非常感激......历史可以没什么大不了的,如果这太难了就重新开始: - )
答案 0 :(得分:57)
您可以分支当前的工作,回放主人,然后挑选最新的提交给主人:
git branch secret
git reset --hard HEAD~3
git cherry-pick secret
在图片中,
A--B--C--D--E (master)在
git branch secret
之后:
A--B--C--D--E (master, secret)在
git reset --hard HEAD~3
之后:
A--B (master) \ C--D--E (secret)在
git cherry-pick secret
之后:
A--B--E' (master) \ C--D--E (secret)
最后,如果你git checkout secret; git rebase master
,你可以得到:
A--B--E' (master) \ C--D (secret)
答案 1 :(得分:3)
你克隆了一个项目并为一个新功能做了大量的提交,现在是开源或分享它以供审查的时候了。你不希望任何人看到你的提交混乱!
原始分支是half.each { |x| array << x count+=1 }
,您的杂乱提交位于;
分支上,您希望在 half.each { |x| array << x; count+=1 }
分支上发布您的干净工作。
{
"site": {
"listing":{
"nbpage":10,
"lengthcorps":320
},
"detail":{
"sim":{
"active":true,
"nb":10
}
},
"tri":{
"default": {
"type":"item",
"sens":"item"
},
"options": ["options1","options2"]
},
"cc": {
"nb": 0,
"active":1
},
"hasreferencement":false
}
}
上:SHA0:实施X和Y.(作者:authorA)
SHA1:已实施Z.(作者:authorA)
SHA2:已实施W.(作者:authorA)
export interface site {
model: string;
listing:listing;
detail:detail;
contact:contact;
tri:tri;
cc:cc;
hasselection?:boolean;
hasreferencement?:boolean;
}
export interface listing {
nbpage?:number;
type?:number;
lengthcorps?:number;
}
export interface detail {
type?:number;
sim?:sim;
lengthcoprs?:number;
gallery?:boolean;
}
export interface tri {
default?:defaulttri;
options?:string[];
}
export interface cc {
nb?:number;
active?:number;
}
export interface sim{
active?:boolean;
nb?:number;
}
export interface defaulttri{
type?:string;
sens?:string;
}
分支并推送了一些提交:SHA3:尝试实现Q功能。
SHA4:狗屎,我不工作 SHA5:搞砸了! :(
SHA6:GOT工作!!!!
SHA7:清理!
<ul *ngFor="let item of uploadFile.site | JsonPipe3; let i=index">
<li>{{ item.key }} => {{item.value }}</li>
</ul>
export class JsonPipe3 implements PipeTransform {
transform(value, args:string[]) : any {
let keys = [];
let keys2 =[];
for (let key in value) {
keys.push({key: key, value: value[key]});
/*
if(this.isAnyObject(value[key])){
for (let key2 in value[key]) {
keys2.push({key: key2, value:value[key2]});
}
}
*/
}
//return [keys,keys2];
return keys;
}
isAnyObject(value) {
return value != null && (typeof value === 'object' || typeof value === 'function');
}
}
:cloned_branch
分支dev
和public_branch
保持不变,而cloned_branch
分支包含:
SHA0:实施X和Y.(作者:authorA)
SHA1:已实施Z.(作者:authorA)
SHA2:已实施W.(作者:authorA)
SHA8:已实施Q.(作者:我)