Git常用的指令和方法
命令介绍
添加ssh秘钥
执行 ssh-keygen -C “1056585823@qq.com”,然后两次回车
$ ssh-keygen -C "1056585823@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Zero/.ssh/id_rsa):
Created directory '/c/Users/Zero/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/Zero/.ssh/id_rsa
Your public key has been saved in /c/Users/Zero/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:P27o6Znw5L5+hhmMPA4PdXaPNLJA2nQdfPXIi0uAwog 1056585823@qq.com
The key's randomart image is:
+---[RSA 3072]----+
| o.. .. |
| . oo ..o .. o |
| E .=o.. .. o .|
| . +.+ +. . . |
| o *S= +o . |
| o + +..... |
| =...=o . |
| o=+=+. |
| =%=. |
+----[SHA256]-----+
生成的秘钥在/c/Users/Zero/.ssh/id_rsa.pub 打印出来
$ cat /c/Users/Zero/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCxI4P93fRQbAz9MR4JUfTOZShuoqxrH9yZgC5Z98nQFMvVv+JGgqBUnm3EW41sRn1/M5b3+G+7vuDct/U4k1KqR+wck0ewWZwcRpoJfg5Q3SU8JzXTADy3eeJ3mZ5C5jh7NT8zUhQVxo8DqQpxlQr1Vy1FmQrNT+KXNBNObnreDCEzZ5/DBgNs11SYT/sD+7XSRnmJK4wqBendpBHI28OcSx36IJb1Ib/dDqQtonoQc/q7fb7b5eQffkSD/j4j8uCd54XURUHvXM7uZl5WUpM+f0xHjb8UW66khS6jXkVBGwqqqPV9KFocpbzyvYzEAAimUPitHWpfIbEI0PJ24y5cHHYXDa0ncdO1/lHMd50jpFZiFi48CPUY2Eb5lfoVcvYeWDYqpeemM1kHEg7Y7CQ/iyhvC9onRNzgVx948x5gMGFGrRCbFympnuPg2/MceC/U5BXBcHRd8pBJJvj/B8tXbVmBEA9UhrIfSJ2qj2a/n2IK0LwuDHARgBWtUFqpIq0= 1056585823@qq.com
复制公钥添加到git上面 如下
一.Linux超级用户指令无法补全
source /etc/bash_completion.d/git
# or
source /usr/share/bash-completion/completions/git
二.一下常用命令
1.查看当前登录用户邮箱信息和修改登录用户
获取当前登陆用户:
git config user.name //获取当前登录的用户
git config user.email //获取当前登录用户的邮箱
修改登陆用户:
git config --global user.name 'userName' // 修改登陆账号,userName为你的git账号
git config --global user.email 'email' // 修改登陆邮箱,email为你的git邮箱
git config --global user.password 'password' // 修改登陆密码,password为你的git密码
2.查看远程仓库git remote -v
root@yyc-virtual-machine:/home/windShare/gitZero/master# git remote -v
master https://gitee.com/wulnet/master (fetch)
master https://gitee.com/wulnet/master (push)
origin https://gitee.com/wulnet/master (fetch)
origin https://gitee.com/wulnet/master (push)
二.Git使用案例
1.从远程下载仓库的方法
1.创建远程仓库,以gitee为例
创建新的仓库
设置仓库名称和路径
2.将创建好的仓库下载到本地
设置登录的账号和邮箱
root@yyc-virtual-machine:/home/windShare/gui/LinuxSrc# git config --global user.name "wul**"
root@yyc-virtual-machine:/home/windShare/gui/LinuxSrc# git config --global user.email "10***3@qq.com"
下载仓库地址来来自下面这里
建的是私有仓库 所以需要输入账号密码
root@yyc-virtual-machine:/home/windShare/gui/LinuxSrc# git clone https://gitee.com/wulnet/project
正克隆到 'project'...
Username for 'https://gitee.com':
下载完成后 "project " 目录是下载下来的
root@yyc-virtual-machine:/home/windShare/gui/LinuxSrc# ls
Led project Recorder Recorder.zip Route Update
3.上传文件夹到远程仓库
将Recorder 整个目录上传到project 上面
因为是目录所以需要在里面建一个隐藏文件表面他是目录,建空的文件".deep"(如果是文件则不存在这个问题)
然后吧整个文件夹移动过去
root@yyc-virtual-machine:/home/windShare/gui/LinuxSrc# mv Recorder project/
root@yyc-virtual-machine:/home/windShare/gui/LinuxSrc# ls
Led project Recorder.zip Route Update
root@yyc-virtual-machine:/home/windShare/gui/LinuxSrc/project# ls
README.en.md README.md Recorder
查看远程仓库,没有的话需要添加才行
root@yyc-virtual-machine:/home/windShare/gui/LinuxSrc/project# git remote -v
origin https://gitee.com/wulnet/project (fetch)
origin https://gitee.com/wulnet/project (push)
添加方法(可以理解为添加到本地仓库 origin是本仓库名字 "https://gitee.com/用户地址/gitcode.git"是远程仓库地址)
$ git remot add origin https://gitee.com/用户地址/gitcode.git //添加远程仓库
4. 上传命令
将项目添加到仓库中去:git add .,如果添加某个文件,可以使用git add xxx
root@yyc-virtual-machine:/home/windShare/gui/LinuxSrc/project# git add .
git status 查看被更新过的文件
git add .执行出现错误
1.文件输入输出错误
解决方法1:可以重复执行git add .
解决方法2:重复执行git add . ,然后执行git status 然后再执行git add . ,可以尝,有些时候可以解决
error: unable to create temporary file: Input/output error
error: build-TreeDemo14-Desktop_Qt_5_14_1_MinGW_32_bit-Debug/moc_predefs.h: failed to insert into database
error: unable to index file build-TreeDemo14-Desktop_Qt_5_14_1_MinGW_32_bit-Debug/moc_predefs.h
fatal: adding files failed
将添加的文件提交到仓库:git commit -m “可以给本次上传所有文件添加一个备注”
把文件推送到github仓库:git push -u origin master,下次推送时,可以把-u去掉
5.执行推送出现错
Counting objects: 30, done.
Delta compression using up to 4 threads.
fatal: loose object 0106e249455c18488e7d58fb1c6187da30659c7f (stored in .git/objects/01/06e249455c18488e7d58fb1c6187da30659c7f) is corrupt
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
fatal: write error: Bad file descriptor
解决方法一
解决参考链接: GIT,致命的:远端意外挂断.
本文中执行了git config http.postBuffer 524288000就解决了
root@yyc-virtual-machine:/home/windShare/gui/LinuxSrc/project# git config http.postBuffer 524288000
解决方法二
关闭电脑的所有防火墙,这里可能是因为我使用了linux SMB的方式挂载windows共享文件导致的,git的数据都在共享文件目录
再次执行
root@yyc-virtual-machine:/home/windShare/gui/LinuxSrc/project# git push origin master
Username for 'https://gitee.com': wulnet
Password for 'https://wulnet@gitee.com':
枚举对象: 363, 完成.
对象计数中: 100% (363/363), 完成.
使用 8 个线程进行压缩
压缩对象中: 100% (358/358), 完成.
写入对象中: 100% (362/362), 8.90 MiB | 1.92 MiB/s, 完成.
总共 362 (差异 56),复用 0 (差异 0)
remote: Resolving deltas: 100% (56/56), done.
remote: Powered by GITEE.COM [GNK-5.0]
To https://gitee.com/wulnet/project.git
1539b06..8e2ef2a master -> master
root@yyc-virtual-machine:/home/windShare/gui/LinuxSrc/project#
root@yyc-virtual-machine:/home/windShare/gui/LinuxSrc/project#
三.git clone ****下载时出现输入输出错误
在该目录执行 git init
四.更新远程代码到本地,远程代码覆盖本地
这种方式比较简单也好理解,如果本地代码没有修改,只需要执行中间两行就可以。
git stash # 暂存本地的修改
git fetch --all # 拉取项目更新
git pull # 下载覆盖
git stash pop # 释放本地修改
五.windows使用mysmgit的git bash命令卡顿
解决方法:网络上说是要设置显卡,我这个win10的关闭360杀毒软件就解决了
六.将从别人那里下的git仓库导入到自己的仓库
解决方案https://www.oschina.net/question/82993_133520
方案1:
从原始地址clone一份bare仓库
$ git clone --bare https://gitee.com/Barryda/QtScrcpy.git(例子)
在Git@OSC上创建一个项目(http://git.oschina.net/projects/new),这里注意,不要勾选使用Readme初始化项目,不要选择项目的授权协议和.gitignore 文件,因为这些会导致项目有第一个提交。
记下新建项目后的地址,推荐使用http或者ssh方式皆可,大项目推荐ssh方式。
$ cd qt-scrcpy.git
$ git push --mirror https://gitee.com/wulnet/qt-scrcpy.git
此命令执行完成后即完成导入,删除 impress.js.git 文件夹即可。
七.git 强制远程仓库覆盖本地代码
1.连接远程仓库 git remote add origin 远程地址
2.git强制覆盖:
git fetch --all
git reset --hard origin/master
git pull
八.下载历史版本
步骤一:首先git clone 当前项目至文件夹
步骤二:cd 进入clone下来的项目文件夹内
步骤三:在git 仓库查看SHA,或输入命令git log 查看提交的历史commit
步骤四:复制需要回退版本到的commit后面序列,命令如下即可回退到指定版本
git checkout xxxxxxxxxxxxxxx