git之复合指令和submodule

1.

别名设置在路径C:\Program files\Git\etc\profile.d\aliases.sh里面

通过alias设置了一个复合指令 alias gsync='date;git pull m master;git add .;git commit -m "sync-desk"; git push m master'

修改后在git bash里面运行 source  'C:\Program files\Git\etc\profile.d\aliases.sh' 生效

 

2.

在git仓库中有submodule,但是不知从什么时候开始,在一台机器上gsync后,在另一台机器gsync第一次总是出现 ![rejected],第二次gsync后成功了,然后第一台机器啥都没干再次gsync会发现submodule目录会有 2 +-,同时git status发现submodule的目录显示 modified。

解决方法:

参考 https://git-scm.com/book/fa/v2/Git-Tools-Submodules

在上述第一台机器显示modified的状态下,运行

git checkout --recurse-submodules

 git submodule update --init --recursive

两条命令后,git status发现变为干净的了,之后两台随意 gsync不会有问题了

---2024.5.27, 又一次不起作用了,根据 https://stackoverflow.com/questions/58309538/what-does-upload-pack-not-our-ref-mean-when-fetching-git-refs-via-tags  解决

在发生reject 的机器上,执行 

   git submodule deinit -f dashboard (最后是submodule名字)

  git submodule summary 
  git pull --prune --recurse-submodules --force 
解决

 

 

 

3. 

在一台机器上 add submodule  xxx 后,会发生

(1)在仓库中创建xxx目录。

(2)在.gitmodules里面增加entry。

(3)在.git/modules中创建目录

(4)在(1)的xxx目录里运行git remote -vv可以看见子模块路径。

然后,这时候同步到中心仓库,再在另一台机器上同步过来后,上述的(3)和(4)不会生效,需要在另一台机器重新add submodule,方式

(1) 删除目录xxx,  rm -rf xxx

(2) git删除, git rm -rf xxx

(3)添加子模块,git submodule add xxxx.git

 

添加后拉代码

git submodule init

git submodule update

 

4.  "no url found for submodule path in .gitmodules"

错误添加了一个sumbodule,删除后,git update 会报这个错,是因为删除的操作没有add  看 git status 是有一个new file 记录和一个delete 记录,git add .后就干净了,就可以update了

 

posted on 2023-10-25 17:03  longbigfish  阅读(16)  评论(0编辑  收藏  举报

导航