你如何将整个存储库压缩到第一次提交?
我可以重新设置第一次提交,但这会让我有2次提交.有没有办法在第一个之前引用提交?
在帮助朋友解决git问题的同时,我不得不介绍一个需要与分支完全分离的master分支.这个分支的内容确实与master分支上开发的内容有不同的起源,但它们将master在以后合并到分支中.
我记得从底层向上阅读John Wiegley的Git,分支本质上是一个遵循某个约定的提交的标签,以及如何将提交绑定到文件树,并且可选地绑定到父提交.我们使用git的管道创建了对现有存储库的无父提交:
所以我们摆脱了索引中的所有文件......
$ git rm -rf .
Run Code Online (Sandbox Code Playgroud)
...从tarball中提取目录和文件,将其添加到索引中...
$ git add .
Run Code Online (Sandbox Code Playgroud)
...并创建了一个树对象......
$ git write-tree
Run Code Online (Sandbox Code Playgroud)
(git-write-tree告诉我们创建的树对象的sha1sum.)
然后,我们提交了树,没有指定父提交......
$ echo "Imported project foo" | git commit-tree $TREE
Run Code Online (Sandbox Code Playgroud)
(git-commit-tree告诉我们创建的提交对象的sha1sum.)
...并创建了一个指向新创建的提交的新分支.
$ git update-ref refs/heads/other-branch $COMMIT
Run Code Online (Sandbox Code Playgroud)
最后,我们回到master分公司继续在那里工作.
$ git checkout -f master
Run Code Online (Sandbox Code Playgroud)
这似乎按计划进行.但这显然不是我推荐给刚刚开始使用git的人的一种程序,温和地说.有没有更简单的方法来创建一个与目前存储库中发生的所有内容完全无关的新分支?
我目前正在开发一个Android项目,并学习如何使用git.我因为git问题而被阻止:我在我的android-manifest文件中声明了我的Google Maps api密钥:
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="HEREISMYKEY"/>
Run Code Online (Sandbox Code Playgroud)
现在,我想在github中推送我的代码,但是我无法推送我的AndroidManifest,因为它包含我的api密钥(它应该保密).
我想知道是否有一种方法可以在每次推送之前修改它,或者每次编译我的应用程序时都可以修改它?
谢谢您的帮助 !
我提交了一些我不应该提交的文件.然后我在.gitignore中添加了这些文件,我这样做了:
git rm -r --cached somefile
Run Code Online (Sandbox Code Playgroud)
我再次承诺
git status 说明:
# On branch experiment
nothing to commit, working directory clean
我这样做git ls-files并且没有列出这些文件.
但是当我这样做时git push origin somebranch,这些文件仍然被推送(它们太大而不能推送到github所以它失败了).
为什么是这样?我该怎么办?