常用操作
1、Git查看远程仓库路径
git remote -v
2、添加本地仓库到远程仓库
git remote add origin root@192.168.1.101:/path
3、修改SSH端口
git remote set-url origin ssh://root@192.168.1.101:26126/path
4、git子模块
添加子模块
git submodule add <submodule_url>
初始化本地.gitmodules文件
git submodule init
同步远端submodule源码
git submodule update
获取主项目和所有子项目源码
git clone --recurse-submodules <main_project_url>
拉取所有子模块
git submodule foreach git pull
5、更改git子模块的远程存储库
编辑.gitModule文件,然后重新生成并更新:
通过git命令或直接编辑文件:
git config --file=.gitmodules -e
或者只是:
vim .gitmodules
然后重新同步并更新:
git submodule sync
git submodule update --init --recursive --remote
6、git关于文件权限修改引起的冲突及忽略文件权限的办法
git中可以加入忽略文件权限的配置,具体如下:
git config core.filemode false
这样就设置了忽略文件权限。查看下配置:
$ cat .git/config
7、Git中查看单个提交的更改文件列表
git show --stat 1268afe676e
git log --stat
或
git log --stat COMMIT
8、Git 本地创建分支并提交远程分支
在本地git checkout -b xxx 创建分支之后
想要提交分支到远程, 直接git push是不行的, 除非原来的分支里面就有这个分支.
需要先使用:git push origin xxx:xxx
例如:
git push origin test :test
9、git删除分支
先切换到别的分支: git checkout xxx
删除本地分支: git branch -d yyyy
如果删除不了可以强制删除,git branch -D
10、git提取出两个版本之间的差异文件并打包
git diff 608e120 4abe32e --name-only | xargs zip update.zip
错误记录
1、错误 RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received
error: RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received.
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
VLC sources: git clone failed
解决方法:
git config --global http.sslVerify false
git config --global http.postBuffer 1048576000
2、无法push到远程仓库
To 192.168.3.6:/mnt/xxxx
! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'root@192.168.1.101:/mnt/xxxx'
解决方法
config添加
[receive]
denyCurrentBranch = ignore
3、refusing to update checked out branch: refs/heads/master
这是由于git默认拒绝了push操作,需要进行设置,修改.git/config文件后面添加如下代码
[receive]
denyCurrentBranch = ignore
4、git clone error port 443: Timed out
git clone 一些谷歌资源的时候,出现类似的错误:
fatal: unable to access 'https://aomedia.googlesource.com/aom/': Failed to connect to aomedia.googlesource.com port 443: Timed out
尽管此时,我们的电脑已经可以翻墙了,将https://aomedia.googlesource.com/aom/ 复制到浏览器时可以访问,git clone却不行,原因在于git 也需要配置代理:
git config --global http.proxy http://127.0.0.1:8889