文章目录
Part.I 准备工作
下面是一些传送门
Chap.I Windows Git Bash 软件安装及配置
Git Bash 下载安装大体步骤如下,详细看"小白教程"(上面)
- St1:进官网下载适合自己电脑的Git Bash,之后安装,一路next 完成安装;
- St2:准备一个文件夹用于存放 Git 项目;
- St3:运行Git Bash软件,进行一波终端操作
#1'首先进入刚才你创建的用于存放Git项目的文件夹
cd c:/gwork/Git # or cd c:\\gwork\\Git
#2'然后初始化
git init
#3'创建ssh key your_email@example.com 是你注册git的邮箱
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" #一路enter
#4'在终端复制ssh key
clip < ~/.ssh/id_rsa.pub
-
St5:上面最后一个命令已经复制(clip不就是复制嘛)了ssh key;
-
St6:浏览器登录Git账号,点击“头像右边下三角”->【Settings】->【SSH and GPG keys】->【New SSH keys】名字随便起,然后粘贴刚才复制的ssh keys到第二个框框中,之后点击【Add SSH keys】
-
St7:回到Git Bash 输入
ssh -T git@github.com
之后大功告成!
-
St8:简单设置:
git config --global user.name "your name" #最好和git账号名字一样
git config --global user.email "your_email@example.com" #你的git注册邮箱
Git Bash 配置到这里就行了,自己本地与网页端交互请看“实操小技巧”下面的“GitHb上传下载资源”部分。
Chap.II Useful Information
这部分记录一些重要的信息,主要是一些常识,虽然现在看起来有点冗余,但是当时的自己却如获至宝,不想删。
首先是以.gitxx
后缀的文件
文件 | 作用 |
---|---|
.gitkeep | 在了解这个文件之前,需要知道git是不能追踪空的目录的。如果你有一个空的目录,git会对它视而不见。如果你想git能够追踪到这个空目录,你可以在这个空目录中加一个文件,这个文件一般就是.gitkeep ,它既可以保证这个目录不是空的,也让其他合作伙伴看懂。 |
.gitignore | 与keep相反,它是ignore,忽视,它里面可以写一些东西,防止git对某些文件或文件夹进行跟踪。比如,对于python编译生成的.pyc 文件,可以在.gitignore 文件中写*.pyc 。另外,/ 表示项目根目录,前面不加. |
.gitattributes | 允许你指定由 git 使用的文件和路径的属性,其中的一个属性是 eol (end of line),用于配置文件的结尾。本文将会深入了解如何配置文件的结尾行,这样的话,即使在不同的机器、操作系统 上都可以使得每个开发者都可以使用相同的值。 |
Git 文件和存储库大小限制
- 单项目大小上限为1个G
- 单文件最大 100M
- 用户总仓库容量为5个G(总仓库定义为用户名下以及所创建的组织下面的所有项目)
- 单附件文件大小上限为 100MB
- 单项目附件总容量 1G
关于 git clone 的方式
参考:https://blog.csdn.net/fastjack/article/details/79757520
一般来讲,从git
上下载代码有以下几种方式。
比较容易产生混淆的两种(反正笔者在一段时间之内产生了这种混淆)是HTTPS
和SSH
,看了上面的文章,并在一定的实操基础上,笔者产生了下面的理解方式:
- 使用
https url
克隆对初学者来说会比较方便,复制https url
然后到git Bash
里面直接用clone
命令克隆到本地就好了,但是每次fetch
和push
代码都需要输入账号和密码,这也是https
方式的麻烦之处。 - 而使用
SSH url
克隆却需要在克隆之前先配置和添加好SSH key
,因此,如果你想要使用SSH url
克隆的话,你必须是这个项目的拥有者。否则你是无法添加SSH key
的,另外ssh
默认是每次fetch
和push
代码都不需要输入账号和密码,如果你想要每次都输入账号密码才能进行fetch
和push
也可以另外进行设置。
简单来讲,如果只是下载代码,用https
就行,但是如果要经常提交,就要先配公私钥,然后使用ssh
。
Part.II 实操小技巧
下面列一个表格,记录一些常用的 git
操作:
命令 | 含义 |
---|---|
git clone url | 克隆远程代码到本地 |
git pull | 拉取远程最新代码到本地 |
git add . | 添加新建的文件 |
git commit -m "some comments" | 将更改提交到本地仓库 |
git push | 把本地仓库推到远程仓库中 |
git status | 查看当前版本库状态 |
git log | 查看提交历史记录 |
git reflog | 查看你刚刚销毁提交的记录及其哈希值 |
git checkout -b newbranch ID | 将ID对应的版本搞到新的分支 newbranch 上 |
git log --decorate --oneline | git log 的简洁显示 |
git branch -a | 显示该项目本地的所有分支,其中当前分支的前面有* 号 |
git checkout -b feature | 在本地创建一个叫feature 的分支 |
git checkout master | 切回主分支 |
git branch -D feature | 强制删除 feature 分支,无法恢复 |
git push -u origin <本地分支名> | 将本地分支与远程同名分支相关联 |
git pull origin <远程分支名>:<本地分支名> | 将远程指定分支 拉取到 本地指定分支上 |
git pull origin <远程分支名> | 将远程指定分支 拉取到 本地当前分支上 |
git push origin <本地分支名>:<远程分支名> | 将本地当前分支 推送到 远程指定分支上,注意push 本地在前,pull 远程在前 |
git push origin <本地分支名> | 将本地当前分支 推送到 与本地当前分支同名的远程分支上 |
git reset --hard CommitID | 【本地代码回滚】回滚到CommitID ,将CommitID 之后提交的commit 都去除 |
git reset --hard HEAD~n | 【本地代码回滚】将最近n 次的提交回滚,换言之,不要最近n 次的commit |
git reset --hard HEAD^ | 【本地代码回滚】回到上一个版本,就是不要最近一次提交 |
git reset --hard HEAD^^ | 本地代码回滚】回到上上一个版本 |
git tag -a Vxx -m "这是备注信息" | 在本地加标签 |
git tag | 打印所有标签 |
git tag -d Vxx | 删除本地标签 |
git push origin Vxx | 将本地标签发布到远程仓库 |
git push origin --tags | 将所有本地标签发布到远程仓库 |
git push origin --delete Vxx | 删除远程标签 |
Chap.I GitHub 上传下载资源
一般来讲,步骤如下:
- 1.网站上点“+”新建一个库;
- 2.把此库克隆到本地文件夹中:
cd D:/MyWork/1_Git #将当前文件路径设成 D:/MyWork/1_Git
git clone your_repositories_URL
- 3.之后就会在相应路径看到自己的项目了,可以进行编辑,添加文件等。
- 4.编辑完成之后:
git pull # 多人协同,需要先把别人的拉下来
git add . # 新建文件要 add 一下
git commit -m 'a' # ''中是你的更新说明
git push origin master # 将本地当前分支 push 到远程 master 分支上
如此,大功告成!
git checkout -b 本地分支名 origin/远程分支名 #将远程git仓库里的指定分支拉取到本地(本地不存在的分支)
# 若上面的指令执行不成功,需要执行 git fetch 才可以执行上面的指令
Chap.II 实现免密 push
下面的操作是针对 Linux 系统的,其他系统操作可类比
首先是步骤
cd ~/.ssh/
进入.ssh
所在目录,生成公私钥ssh-keygen -t rsa
- 将公钥
*.pub
文件中的内容加到网站的SSH Keys
中,将公钥和私钥保存在一个合适的位置,比如~/.ssh/
文件夹下 - 检查
/etc/ssh/ssh_config
文件中是否有私钥的路径,如果没有加入:IdentityFile ~/.ssh/id_dsa
私钥文件名字根据自己的需求更改 - 使用
ssh -T git@gitxxx.com
检查是否可以连上,若出现welcom
则公私钥设置成功 - 在
git clone
的时候注意一定要选择SSH,而不是HTTP(自己在这个点上吃了不小的亏)
- 简单使用
# 把远程项目克隆到本地
git clone git@gitlab.com:hlgou/mxxxxx.git
# 本地已更改的项目提交到远程
git pull
git add .
git commit -m "the notes"
git push origin main # 将本地提交到 main 分支,一般用 git push 即可
Chap.III 回退代码版本
回退代码版本,
git reset --hard HEAD^
git reset --hard HEAD~n
Part.III 问题锦集
Chap.I Timed out 或 errno 10054
fatal: unable to access 'https://github.com/xxx/autowrite.git/':
Failed to connect to github.com port 443: Timed out
解决方法:
在项目文件夹的命令行窗口执行下面代码,然后再git commit 或git clone
# 取消http代理
git config --global --unset http.proxy
# 取消https代理
git config --global --unset https.proxy
取消git本身的https代理,使用自己本机的代理,如果没有的话,其实默认还是用git的
Chap.II Git 访问问题
最近(2021-06-12)访问github,但是访问失败。之前解决访问问题是用ipaddress查询git的ip,然后修改host文件,最后就可以访问了。但是这招好像不管用了。然后在查了下,又找到一个一劳永逸的方法:
- 首先下载Switchhosts
- 安装好并以管理员方式运行,
之后访问github就不用担心访问不了的问题了。值得注意的是,这样会把之前的hosts文件给覆盖掉,如果想保留最好做下备份。
Chap.III Git 下载东西慢
用浏览器从Git下东西真的超级慢,还有失败的风险,这块就是来解决这个问题的。
原链接:https://blog.csdn.net/qing666888/article/details/79123742
大佬在博文中提到了几个方法,现列表总结如下:
序号 | 方法 |
---|---|
1 | 更改host文件 |
2 | 使用IP Lookup 工具并更改hosts |
3 | 从码云导入github项目,然后从码云下载即可。 |
4 | 开启代理 |
5 | 没试 |
6 | 知乎上大佬分享的:用Git Bash的时候将 url 中的github.com 进行替换为github.com.cnpmjs.org 即可 |
上述方法的详细操作如下:
1'
在hosts文件中追加219.76.4.4 github-cloud.s3.amazonaws.com
, 将域名指向该IP即可2'
使用工具并追加hosts- St1: https://www.ipaddress.com/ 使用 IP Lookup 工具获得 github.com 和 github.global.ssl.fastly.net 对应的ip,
- St2: 打开的hosts文件中添加如下格式,IP修改为自己查询到的IP:
192.30.xx.xx github.com
151.101.xx.xx github.global.ssl.fastly.net
3'
从码云导入github项目:点击“头像左边加号”->粘贴要下的项目的url->【导入】->下载zip即可4'
开启代理,这个不懂,没试5'
这个也没试。6'
这个操作很简单,只需改url即可,现举例如下:
git clone https://github.com/Stray-Pig/Cnblogs-Theme-SimpleMemory.git #正常操作
git clone https://github.com.cnpmjs.org/Stray-Pig/Cnblogs-Theme-SimpleMemory.git #骚操作
前后对比:
总结:一般可以用码云那种,但是码云有容量限制(可能是1G),如果超出限制,可以用第六种方法。
有一个网站,可以很快下载github上的代码:
将github上zip的地址复制到"下载地址"栏中,点击提交即可,然后就会给你几个下载地址,你点击下载即可。