一、常用操作
1、Git 如何查看和修改用户名、邮箱?
当在GitHub中更改用户名时,git中并没有随之修改,需要自己进行修改,下面给出查看和修改用户名以及邮箱
- 查看用户名以及邮箱,使用git config命令
git config user.name git config user.email
- 修改用户名以及邮箱,使用git config 命令的–global参数
git config --global user.name "your name" git config --global user.email "your emails"
2、git - 查看本地公钥ssh-key
(1)文件夹方式查看
window系统打开目录文件:
C:/Users/user/.ssh/id_rsa.pub
复制该文件中全部内容为ssh-key。
(2)git bash方式查看
$ cd ~/.ssh //如果该命令无效的话,则本地没有ssh-key公钥,需要创建本地公钥 $ ls $ cat id_rsa.pub
3、如何生成SSH key?
检查是否存在SSH key
在控制台输入:
git config --global user.name "你的用户名" git config --global user.email "你的邮箱"
查看已配置信息:
git config --global --list • 1
执行下列命令生成密钥:
ssh-keygen -t rsa -C "你的邮箱"
中途需要进行3次或4次确认:
秘钥的保存路径,不更改则直接回车
是否覆盖上一次生成的密钥(若之前已经生成过)
密码(若不设置则直接回车)
确认密码
建议路径使用默认配置,密码不设置。这样每次git push等操作都不需要输入密码,比较方便。
若是用默认路径则在~/.ssh路径下将得到两个文件:id_rsa和id_rsa.pub。
打开~/.ssh/id_rsa.pub文件,复制其中的内容。
4、git删除本地分支和删除远程分支
我现在在dev20181018分支上,想删除dev20181018分支
1. 先切换到别的分支: git checkout dev20180927
2. 删除本地分支: git branch -d dev20181018
3. 如果删除不了可以强制删除,git branch -D dev20181018
4 有必要的情况下,删除远程分支(慎用):git push origin --delete dev20181018
5. 在从公用的仓库fetch代码:git fetch origin dev20181018:dev20181018
6. 然后切换分支即可:git checkout dev20181018
注:上述操作是删除个人本地和个人远程分支,如果只删除个人本地,请忽略第4步
二、深度操作
1、回退代码
查找到某个commit 的版本号git log --stat
本地执行回滚命令,回滚到某个commit版本 git reset --hard 版本号
远端同步回滚git push origin HEAD --force
2、版本穿梭
3、git 删除中间某次commit,重新提交到远程
4、git重新提交
撤销最近n个提交,变成add状态,可以重新commit git reset --soft HEAD~n
强制推送到远程 git push -f
三、git submodule的使用
开发过程中,经常会有一些通用的部分希望抽取出来做成一个公共库来提供给别的工程来使用,而公共代码库的版本管理是个麻烦的事情。今天无意中发现了git的git submodule命令,之前的问题迎刃而解了。
添加
为当前工程添加submodule,命令如下:
git submodule add 仓库地址 路径
其中,仓库地址是指子模块仓库地址,路径指将子模块放置在当前工程下的路径。
注意:路径不能以 / 结尾(会造成修改不生效)、不能是现有工程已有的目录(不能順利 Clone)
命令执行完成,会在当前工程根路径下生成一个名为“.gitmodules”的文件,其中记录了子模块的信息。添加完成以后,再将子模块所在的文件夹添加到工程中即可。
删除
submodule的删除稍微麻烦点:首先,要在“.gitmodules”文件中删除相应配置信息。然后,执行“git rm –cached ”命令将子模块所在的文件从git中删除。
下载的工程带有submodule
当使用git clone下来的工程中带有submodule时,初始的时候,submodule的内容并不会自动下载下来的,此时,只需执行如下命令:
git submodule update --init --recursive
即可将子模块内容下载下来后工程才不会缺少相应的文件