在帮助朋友解决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的人的一种程序,温和地说.有没有更简单的方法来创建一个与目前存储库中发生的所有内容完全无关的新分支?
我对Git有点新鲜.我想将一些文件推送到我的git源(远程).
我做了什么:我有我的主人 - >我创建了一个分支来做一些工作 - >之后我将我的分支合并到我的主人.在我的工作中,很多二进制文件和项目文件在本地被更改/添加.我只想添加更改为远程服务器的.java文件.(我相信当我在我的分支上工作时,我尝试了提交.只是为了检查它是如何工作的)
我的主人是最新与我的原点(即得到什么,当我这样做git pull也是我做git fetch origin我总是得到:(当我跑git status)
On branch master Your branch is ahead of origin/master by 12 commits.
(use "git push" to publish your local commits)
nothing to commit, working directory clean`
Run Code Online (Sandbox Code Playgroud)
我试图添加,提交这些文件,但运行git status没有改变.我试图在New branch上添加,提交
On branch NewBranch nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)
我试图重置Head.我没有在git教程或Stack中找到我的问题的解决方案.
当然,我可以将所有文件推送到远程源,但我不认为这是一个很好的解决方案.我发现了一些重复的问题: 如何推送单个文件,如何推送仅对某些文件所做的更改?, 如何只提交一些文件?
非常感谢.