我在OS X服务器上有一个git存储库,以前工作正常.我能够添加文件,提交它们,并将内容提取到我的笔记本电脑.
现在,当我进入服务器并执行git commit或git status在存储库中时,我在命令行中看到的只是bus error.
git log 仍然可以正常工作,并给我通常的输出.
我猜的东西是错误与资源库,因为在同一服务器上其他回购git commit和git status做仍然可以工作.
我该如何调试/修复此问题?
更新:我在问题发生之前重新创建了我上次创建的目录.这让我再做git status一次!
git commit -a但是,在此之后直接运行会出现以下错误:
fatal: Unable to create '/path/to/repo/.git/index.lock': File exists.
If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.
Run Code Online (Sandbox Code Playgroud)
然后我手动删除了index.lock文件,现在问题解决了..
我不知道出了什么问题.有任何想法吗..?
在使用git gc和git repack(有各种选项)后,我仍然在文件夹中有4825个松散的提交.git/objects.我想将所有这些文件包含在包文件中,其余包含在其他包文件中.
我正在进行大量的提交重写(修改+ rebase),因此有很多无法提交的提交是完全正常的.我的.gitconfig包含这些参数,可以长时间保持reflogs和unreachable提交.
[gc]
reflogExpire = 300 days
reflogExpireUnreachable = 200 days
pruneExpire = 90 days
Run Code Online (Sandbox Code Playgroud)
您可能想知道它是否有意义,但我已经需要并恢复了几个月前提交的一些提交.我们在一组新的优先级更高的分支机构上开发了很多个月,之后继续在较低优先级的分支机构上继续开发.
这个问题的主要原因是git gui继续抱怨压缩我的数据库despites我做了很多次.如果我们无法打包那些松散的提交,那么这个"抱怨"可能是一个错误git gui.
当我将文件添加到暂存时,我可以
$ git add my_file -p
Run Code Online (Sandbox Code Playgroud)
并选择我想要的舞台.
有没有办法合并/樱桃选择提交并应用块的差异块?
谢谢
我使用git review命令发送了一个提交(名为"A commit")来审查(Gerrit).
现在,我进行了一次新的提交(名为"B commit"),我也希望将其发送给审查,但我不想重新发送"A commit".彼此之间没有依赖关系.
如何将评论发送给gerrit进行特定提交?
更新:
$ git add --all
$ git status
# On branch delete_role
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: path/to/file.ext
$ git status
# On branch delete_role
nothing to commit (working directory clean)
$ git branch
*delete_role
master
$ git log --graph --decorate --oneline -n13
* 531bd84 (HEAD, delete_role) commit 3
* df68f1a (master) commit 2
* 4ce2d8d commit 1
* …Run Code Online (Sandbox Code Playgroud) 在每个关于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有时会将从原始主数据中提取的更改放在本地工作目录或索引中,就像它们是本地更改一样?
我和同事在同一个分支机构工作.现在我已经提交了一些文件并发送给代码审查,因此还有其他一些同事.现在他在我之前推送他的代码.我现在需要撤回他的更改,然后添加我的更改.但它已经承诺了.
如何获得他的更改,然后添加我的更改,而不会让历史看起来很糟糕,我不得不跳槽?我对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但它们仍然存在于其外部.
最后给出的是从SourceTree分支树视图中提取的屏幕截图(屏幕截图中间有一个间隙)
在那里,#1指向曾经是分支的行1.7.6.14.X并#2指向同一分支的当前状态.
由#3该行引用的提交和之前的8次提交之前已附加到分支1.7.6.14.X.然后另一个开发人员据说检查了同一个分支并完成了修复指向#4.这个#4提交已经从分支中删除了前9个提交1.7.6.14.X并让它们悬空.
因此,分支1.7.6.14.X现在从原始分支点开始,而不是仅从提交延伸#3.
跑步git fsck用--unreachable,--dangling等不给任何错误.我也试过--lost-found了.
然而,git fsck <hash of commit #3>产生了五个悬空提交和一大堆悬空标签:
Checking object directories: 100% (256/256), done.
Checking objects: 100% (3148/3148), done.
dangling commit ec213...
dangling commit ab82a...
dangling commit 7d262...
dangling commit a6f06...
dangling commit 6674a...
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
什么可能导致这种情况(即分支#1分离)?
如何检测其他存储库中是否存在类似问题?(无需知道分离提交的哈希值#3)
更新:
我们找到了问题(1)的答案.这种情况是由一个拥有旧分支快照的开发人员向中心裸仓库推动的.
我想在浏览器中使用编辑器并保存在没有服务器的github中.就像github/bitbucket中的文本编辑器可以新文件一样保存
我想知道这两个服务的REST api是否可以轻松提交这样的文件
或者js中的git库可以在不需要将所有文件拉入我们的机器的情况下工作
git-commit ×10
git ×9
git-pull ×2
bitbucket ×1
bus-error ×1
commit ×1
diff ×1
gerrit ×1
git-dangling ×1
git-diff ×1
git-gui ×1
git-log ×1
git-merge ×1
git-review ×1
git-status ×1
github ×1
github-api ×1
macos ×1