我有一个主存储库,只有一个主分支和一个包含master分支和dev分支的个人存储库。如果我正在从个人/ dev分支到主/主分支,请git记录个人/ dev分支中发生的每个单独的更改(例如,包含密码的临时代码可以是发现在主/主)?或者它会将个人/ dev更改合并为一个合并更改(以便在main / master中找不到包含passowords的临时代码)?
行为是否依赖于主机软件? FWIW,我正在使用Stash。
答案 0 :(得分:1)
Stash和GitHub在这种情况下具有相同的行为。原始的单个提交集将永久保持并可见,即使您已合并拉取请求并删除了所有远程功能分支。如果您在项目的分支机构中查看SourceTree并进行合并,则很容易看到所有细粒度的提交仍然很容易检查,对于任何有权访问git的人来说,可以使用repo。
如果您将它们推送到Stash等远程git服务器,那么早期提交的秘密就不安全了。
答案 1 :(得分:0)
我假设你在谈论git merge
?默认方式将保留备用分支的所有中间历史记录,但是您可以在合并之前重写dev分支的历史记录(即git rebase -i
,或者,您可以执行git merge --squash
来创建新的提交在master上使用分支的更改(没有中间提交)
本SO答案稍微讨论了这两个选项的区别:https://stackoverflow.com/a/2427520/504685
编辑添加:您可能正在谈论git pull
,我只是偏执并经常不使用它,但似乎有一个--squash
选项可能会引起关注还有你:https://www.kernel.org/pub/software/scm/git/docs/git-pull.html
答案 2 :(得分:0)
当您将master
推送到Stash时,唯一提交给主机的提交是可以从master
访问的提交。如果您已将dev
合并到master
,那么这将包括合并前的所有dev
提交。这种行为是git存储库模型的一部分,无论你使用什么类型的主机,都应该是相同的。
使用图形差异查看器最容易看到。签出master
后,在命令提示符下键入gitk
。这将显示可从master
到达的所有提交。如果您执行gitk --all
,您还可以查看remote/master
点的位置,它会告诉您Stash仓库中已有哪些提交。
如果您想追溯删除任何隐私信息,请查看GitHub上的removing sensitive information guide结束信息。