我有一个存储库,其中包含分支主服务器和A以及两者之间的大量合并活动.当基于master创建分支A时,如何在我的存储库中找到提交?
我的存储库基本上是这样的:
-- X -- A -- B -- C -- D -- F (master)
\ / \ /
\ / \ /
G -- H -- I -- J (branch A)
Run Code Online (Sandbox Code Playgroud)
我正在寻找修订版A,这不是git merge-base (--all)找到的.
使用git branch --all显示所有远程和本地分支.什么时候git刷新这个列表?在拉/推?以及如何刷新它git branch --all?
非常感谢你们!
如果有一个我只有git://访问权限的存储库(并且通常只是push + pull),有没有办法以与我本地相同的方式重命名该存储库中的分支git://?
假设我有以下本地存储库,其中包含如下提交树:
master --> a
\
\
develop c --> d
\
\
feature f --> g --> h
Run Code Online (Sandbox Code Playgroud)
master是我的这是最新的稳定版本代码,develop是我的这个'下一个'版本代码,feature是一个正在准备的新功能develop.
我希望能够使用钩子在我的远程仓库上做什么,feature除非提交f是developHEAD 的直接后代,否则推送被拒绝.即提交树看起来像这样,因为功能已经git rebase打开d.
master --> a
\
\
develop c --> d
\
\
feature f --> g --> h
Run Code Online (Sandbox Code Playgroud)
那么有可能:
feature?f是后代的?从那里我将检查父分支的HEAD是什么,并查看f前任是否与父分支HEAD匹配,以确定该特征是否需要重新定位.
假设我已经使用错误修复分叉了一个节点模块,我想在功能分支上使用我的固定版本,直到错误修复被合并和发布.
我怎么会引用我的固定版本在dependencies我的package.json?
我有一个跟踪远程/主分支的本地分支.运行后git-pull和git-log,日志将显示在远程追踪分支的所有提交以及当前分支.但是,因为对远程分支进行了如此多的更改,我只需要查看对当前本地分支的提交.
用于仅显示特定分支的提交的Git命令是什么?
笔记:
配置信息:
[branch "my-branch"]
remote = origin
merge = refs/heads/master
Run Code Online (Sandbox Code Playgroud) 我刚刚删除了错误的分支,我需要进行一些实验性修改git branch -D branchName.
我如何恢复分支?
我尝试为此寻找一个特殊的git命令,但找不到一个.任何人都可以提出更短或更快的建议:
git branch | awk '/\*/ { print $2; }'
Run Code Online (Sandbox Code Playgroud) 我们正在使用git存储库来存储我们的项目.我们的分支机构从原始分支机构出发.但现在我们想要创建一个小型新项目来跟踪一些文档.为此我们想要创建一个新的空分支来开始存储我们的文件,我希望网络的其他用户克隆该分支.
我们怎么做?
我试了一些东西,但他们没有用.
$ mkdir proj_doc; cd proj_doc
$ git init
$ git add .
$ git commit -m 'first commit'
$ git br proj_doc
$ git co proj_doc
$ git br -d master
$ git push origin proj_doc
Run Code Online (Sandbox Code Playgroud)
它似乎推动分支正常,但当我进行提取或拉取时,它从其他分支下载信息,然后我还从其他项目获得一些额外的文件.什么是最好的解决方案?
在帮助朋友解决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的人的一种程序,温和地说.有没有更简单的方法来创建一个与目前存储库中发生的所有内容完全无关的新分支?
branch ×10
git ×10
git-branch ×4
dependencies ×1
git-log ×1
git-tag ×1
github ×1
npm ×1
rename ×1