如果 Git 提交哈希有多个与之关联的标签和/或多个分支的头部,是否有一种列出所有这些标签的好方法?
我已经通过选项看了git name-rev,git describe和git symbolic-ref,但还没有发现,似乎做我想做的任何选项。git name-rev令人沮丧的是,可以--tags选择只列出标签,但没有明显的机制来只列出分支(而且git name-rev对我来说似乎总是喜欢标签而不是分支)。
$ git checkout -b branch1
$ git checkout -b branch2
$ git tag tag1
$ git tag tag2
$ git name-rev HEAD
HEAD tags/tag1
$ git describe --all HEAD
HEAD tags/tag1
$ git symbolic-ref HEAD
refs/heads/branch2
Run Code Online (Sandbox Code Playgroud)
要映射提交哈希所有的符号名,我将需要运行git tag --list和git branch --all --list,然后运行git rev-parse在所有的结果?
我只是一个git启动器,基本上我克隆了一个git存储库,现在我想提交我在文件中所做的更改.当我运行命令时,git commit它说not a git repository,
所以作为git的首发我只是想问我是否需要先运行此命令 - git init然后git commit呢?或者在这些提交文件后要遵循的更多步骤之间?
我需要在Bitbucket上提交文件.
Screenshot-

在每个关于git对象的教程网站上,我将看到一个示例,其中git cat-file显示提交对象本身的样子,它通常类似于以下内容:
tree 552acd444696ccb1c3afe68a55ae8b20ece2b0e6
parent 6a1d380780a83ef5f49523777c5e8d801b7b9ba2
author John Doe <john.doe@exampler.com> 1326496982 -0600
committer John Doe <john.doe@exampler.com> 1326496982 -0600
Some commit message here.
Run Code Online (Sandbox Code Playgroud)
如果顶部有其他(单行)数据字段,这会混淆git工具吗?我假设即使没有,这些字段也不会出现在git log中.
如果它可以有其他字段,哪个git plumbing命令可以让你创建它?git commit-tree似乎不灵活.
在Gitk中,我可以看到团队成员的提交(X)有两个父母,第一个父母是他自己的先前提交(A),另一个父母包含许多其他人提交(1到5).合并后,其他人(1到5和其他人)所做的所有更改都不再出现在X,B,C等...
A------------
\
X - B - C
/
1--2--3--4--5
/
e--r--j--k
/
l--m
Run Code Online (Sandbox Code Playgroud)
如果我提交X提交A它没有显示差异,如果我将X提交X提交5它显示所有缺少的更改.此外,在提交X,B或C时,git日志不会显示对提交1到5中的文件所做的更改.但是,如果我执行git log --full-history,则历史记录会显示在1中进行的更改到5,但这些更改仍未出现在实际文件中,并且历史记录未显示它们正在撤消.所以git log --full-history似乎与当前文件内容相矛盾.
我与提交X的用户进行了交谈.他说他没有进行重置或拒绝,他说他在相关时间内没有恢复任何提交.然而,他说他确实有时会做一个拉原点大师,导致其他人的变化被放入他的索引或工作树中,好像他已经做出了这些改变而不是这些改变的实际作者.他说,当这种情况发生时,他会做一个新的克隆,并且不会将任何东西从当地的回购推送给主人,因为他认为Git做错了什么.
这两件事是否相关(坏拉和坏合并)?
我怎样才能确切地说出发生了什么,以便我们将来可以避免这种情况?
是什么原因导致Git有时会将从原始主数据中提取的更改放在本地工作目录或索引中,就像它们是本地更改一样?
我有一个bitbucket存储库,具有以下结构:
Directory-A->
directory a
directory b
file a
file b
file c
Run Code Online (Sandbox Code Playgroud)
现在我想将文件"b"和文件"c"移动到"目录a"
当我在本地机器上执行此操作并通过git add提交时.我在目录a中获取文件b和文件c但它们仍然存在于其外部.
我想在浏览器中使用编辑器并保存在没有服务器的github中.就像github/bitbucket中的文本编辑器可以新文件一样保存
我想知道这两个服务的REST api是否可以轻松提交这样的文件
或者js中的git库可以在不需要将所有文件拉入我们的机器的情况下工作
我们的团队正在决定在我们的存储库中使用什么合并策略。我们正在研究压缩合并以获得干净的提交历史记录的能力。但是,如果我们想要特定提交的更多详细信息,我们希望能够查看中间更改 - 特别是被压缩的 PR 的中间提交。
通常,压缩和删除分支将删除引用日志中对这些中间提交的所有引用,并且 git 垃圾收集可以清理这些引用。然而,在查看其他存储库时,GitHub 似乎仍然保留了这些中间提交。
我们正在寻找的是确认 GitHub 是否在引用日志中保留了这些提交 ID,并且我们保证它们会保留下来。或者,告诉我们不能保证的信息也是好的。
~我正在阅读有关在 git 中使用vs运算符的区别^,我遇到了这个问题What's the Difference between HEAD^ and HEAD~ in Git?
在谷歌搜索后,我在网上找不到一个很好的解释,那就是 git 如何区分合并提交的第一个父级和第二个父级?
有经验法则吗?
以这个示例为例,其中一个feature分支被合并到另一个develop分支中,创建合并提交G。
develop feature/foo
A D
| |
B E
| |
C F
\ /
G <- develop(HEAD)
Run Code Online (Sandbox Code Playgroud)
哪个是 的第一个父母G?C或者F?为什么它是第一个父母?
注意:这不是请求 git 命令来确定第一个或第二个父级。我知道可以使用git show G^1和来实现git show G^2。我看到这C是第一个父母G,F也是第二个父母。但是,我不明白为什么会这样。是不是像进行合并提交的分支决定了第一个父级?
这是我尝试提交任何文件时得到的输出。我尝试再次安装 git 并在 youtube 上观看了一些教程以重新启动它,但它不起作用。仍然遇到同样的错误:
错误:无法生成 C:\Program Files (x86)\GnuPG\bin\gpg.exe:没有这样的文件或目录 错误:gpg 未能对数据进行签名 致命:写入提交对象失败
我创建了一个提交,目的是取消隐藏某个功能,代码更改是仅取消注释某些代码行并显示该功能,因此现在该功能将显示给用户。
\n这个提交类型应该是feator 吗chore?
我想应该是chore因为它没有\xe2\x80\x98将该功能添加到代码中,只允许显示,但从用户POV来看这是一个新功能,您对此有何看法?
git-commit ×10
git ×8
bitbucket ×2
git-merge ×2
github ×2
commit ×1
conventions ×1
git-branch ×1
git-clone ×1
git-hash ×1
git-log ×1
git-pull ×1
git-sign ×1
git-squash ×1
github-api ×1
gnupg ×1