git--sourcetree使用踩坑之insufficient permission for adding an object to repository database和迁移仓库及其他事项

在使用source的时候,遇到过一个很神奇的问题。开始能够好好的提交代码,有时候突然又提交不了,截图如下:
git--sourcetree使用踩坑之insufficient permission for adding an object to repository database和迁移仓库及其他事项_第1张图片

从图上可以看出,一直显示没有权限去操作这个当前的这个仓库。按照如下的步骤:
打开git bash

第一步:cd .git/objects  定位到git下的objects文件下
第二步: ls -al 查看git库的所有者(git用户 git组)
第三步: chown -R yourname:yourgrounp * 或者sudo chmod 777 -R .git/objects 提交

操作完以后,再次提交发现还是不行,心默默的凉了一大截。
最后问了下运维,才发现是服务器挂了,一直在阻止提交。我遇到了坑了啊

第二个问题:中途修改了ignore,然后让提交的文件生效
我们知道Git 代码管理中,我们在没有添加 .gitignore 文件的前提下提交了代码之后再提交 .gitignore 文件,或者是中途添加某一文件类型到 .gitignore 文件中,这二个情况下,提交的代码是没有被忽略掉的!所以我们需要进行如下的操作:对.ignore文件修改后
打开git bash

第一步: git rm -r --cached .(点前面有空格) 清除缓存
第二步: git add .   添加缓存
第三步: git commit -m "提交文字说明"

如果是中途从 .gitignore 文件中移除某一文件类型,想要这个文件类型重新被 track生效,需要通过以下命令行的方式,让 .gitignore 文件生效:
git add -f *.class –>强制提交
git commit -m “提交文字说明”

第三个问题:明明对git管理里面的文件进行了修改,同时ignoer里面也没有对文件进行忽略处理,但是sourcetree下就是显示不出来暂存文件。操作如下
打开git bash

1.git add. (将改动添加到暂存区)
2.git commit -m "提交说明"
3,git push 将本地更改推送到运程分支

但是经过上面的操作后,发现其操作还是不管用。是因为上面的操作中第一步都没有生效。所以要想办法让第一步生效。
直接使用 git add -f 决定路径文件(要忽略的文件路径) 发现报错 is outside repository
原来是路径中的斜杠弄错了。如图下
git--sourcetree使用踩坑之insufficient permission for adding an object to repository database和迁移仓库及其他事项_第2张图片

第四个问题:使用submouble 让一个app project 管理多个module(每个module对应的是不同的项目),操作步骤如下:
第一步:新建2个远程仓库,一个主app project项目仓库,另外一个module仓库
第二步:将远程仓库拉取到本地,同时在当前仓库目录下打开git bash,并输入如下命令
git submodule add module仓库地址 这样就可以将2个仓库绑定在一起了,如下图
git--sourcetree使用踩坑之insufficient permission for adding an object to repository database和迁移仓库及其他事项_第3张图片

第三步:查看本地文件,也会多了一个module仓库的地址,同时查看sourcetree仓库地址,发现是多了一个子模块
第四步:主仓库开始引用子模块项目,最后变化如下图:
这里写图片描述

第五步:提交项目,先提交子项目,然后再提价主项目。

又或者直接用sourcetree中 仓库–>添加子仓库也可以实现

第五个问题
我是直接通过as提交代码到给 github上的,路径为VCS—>import into version control—>share project on github时,确实是可以直接提交代码到github上的

但是我突然想到,我能不能直接通过git bash 客户端来提交代码呢!以前都是借助于工具sourcetree来完成的。答案是可以的
首先第一步:打开git bash ,然后初始化git
1,git init
如果不初始化,后面调用其他的命令都会出现如下的报错提示:
fatal: Not a git repository (or any of the parent directories): .git

第二步:将本地仓库与远程仓库相互关联
git remote add origin git@github.com:github的用户名/仓库名.git
一般,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。
然后再测试一下是否成功:输入 git remote 则会输出origin

第三步:添加到缓冲去
git add .(主语add后面有空格及点)

第四步:提交说明
git commit -m “提交说明”

第五步:推送到远程分支
git push -u origin master

第六:迁移仓库
开启git bash cd到需要迁移仓库的本地目录下
然后执行如下命令:

将以前的的远程仓库 重新命名
git remote rename origin old-origin

关联新的仓库地址 url为仓库地址
git remote add origin url

提交所有的仓库信息
git push -u origin –all

提交仓库上的标签信息
git push -u origin –tags

以上即可

你可能感兴趣的:(工具)