问题:子模块
git submodule init
git submodule update
问题:(ubuntu从18升级到20后)
unable to negotiate with *.*.*.*: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
解决方法:
export GIT_SSH_COMMAND='ssh -o KexAlgorithms=+diffie-hellman-group1-sha1'
还有一种方法就是,打开.bashrc文件,在终端输入:$ vim ~/.bashrc ,然后向.bashrc文件写入:保存并关闭,执行source ~/.bashrc。
这样就不需要每次打开终端时都重新输入export GIT_SSH_COMMAND了。
export GIT_SSH_COMMAND='ssh -o KexAlgorithms=+diffie-hellman-group1-sha1'
还有一种方法就是在/etc/ssh/ssh_config文件的最后一行加入:
KexAlgorithms +diffie-hellman-group1-sha1
还有一种方法:
/.ssh/ 目录下新建一个 config 文件,无扩展名。然后使用写字板等工具打开,输入并保存以下内容:
Host *
KexAlgorithms +diffie-hellman-group1-sha1
问题:在Ubuntu下使用$ git clone时出现server certificate verification failed. CAfile:/etc/ssl/certs/ca-certificates.crt CRLfile: none
解决方法:在执行$ git clone 之前,在终端输入:
exportGIT_SSL_NO_VERIFY=1
问题:有时将GitHub中的项目clone到Windows时,执行"git status"时,有时会提示有些文件被改动,其实这些文件并未做任何改动,执行"git checkout -- ."也不起作用,导致当再次pull项目时,提示"error: Your local changes to the following files would be overwritten by merge",无法正常执行pull操作。
解决方法,假如当前的分支是master,依次执行如下两个命令,当执行完如下两条命令后,再次执行"git pull"就会提示"Already up-to-date.":
git fetch origin master
git reset --hard FETCH_HEAD
问题:将文件夹从主分支复制到另一个分支
git checkout 来源分支 -- 文件路径
例如我想 将master分支上的utils文件夹复制到 work分支
git checkout master -- utils
复制master上的utils文件夹到work分支
#切换到work分支
$ git checkout work
Switched to branch 'work'
#将master上的utils文件夹复制到work分支
$ git checkout master -- utils
#保存修改
$ git add utils
#提交修改
$ git commit -m "Adding 'utils' directory from 'master' branch."
[work 9fcd968] Adding 'utils' directory from 'master' branch.
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 utils/file
删除master上utils文件夹(可选)
#切换到master分支
$ git checkout master
Switched to branch 'master'
#递归删除utils目录
$ git rm -r utils
rm 'utils/file'
#提交
$ git commit -m "Removing 'utils' directory."
[master c786f95] Removing 'utils' directory.
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 utils/file
问题:git push review报错
解决办法:
git config remote.review.pushurl ssh://$YourName@.....git
git config remote.review.push refs/heads/*:refs/for/*
操作 git
查看当前本地分支 git branch
查看所有分支 git branch -a
查看远程origin分支 git branch -r
创建新的分支 git branch master2
切换到新分支 git checkout master2
对比两个分支的区别 git diff master…master2
将master2分支合并到当前分支 git merge master2
重命名 git branch -m bugfix bugfix-1
删除 git branch -d bugfix-1
场景:
假设远程有一个dev分支,你如何切换到dev分支 开发代码 并提交到git
这个dev分支不是你创建的,是别人创建的,然后提交到gitlab上的, 然后你要在这个dev分支上开发
1. 获取远程仓库的所有信息
git fetch
2. 查看所有分支信息
git branch -r / git branch -a
3. 切换到需要开发的分支dev上
git checkout dev
4. 进行开发
5. 将所作操作全部添加至本地git暂存区
git add .
6. 提交修改
git commit -m 'commit信息'
7. push
git push -u origin dev
这样就将远程的分支拿到本地进行开发并提交至gitlab
参考链接: