提醒:github中一个远程仓库对应本地一个项目,不要将多个项目塞到一个远程仓库中,否则会出现很多bug!!!
配置 GitHub
-
如果页面里已经有一些 key,就点「delete」按钮把这些 key 全删掉。如果没有,就往下看
-
点击 New SSH key,你需要输入 Title 和 Key,但是你现在没有 key,往下看
-
打开 Git Bash
-
复制并运行
rm -rf ~/.ssh/*把现有的 ssh key 都删掉,这句命令行如果你多打一个空格,可能就要重装系统了,建议复制运行。 -
运行
ssh-keygen -t ecdsa -b 521 -C "你的邮箱",注意填写你的邮箱! -
按回车三次
-
打开这个文件
/c/Users/Administrator/.ssh/id_ecdsa.pub,得到一串东西,完整的复制这串东西 -
回到上面第 3 步的页面,在 Title 输入「我的第一个 key」
-
在 Key 里粘贴刚刚你你复制的那串东西
-
点击 Add SSH key
-
回到 Git Bash
-
运行
ssh -T git@github.com,你可能会看到这样的提示,按yes回车 -
然后如果你看到
Permission denied (publickey).就说明你失败了,请回到第 1 步重来,是的,回到第 1 步重来;如果你看到Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.就说明你成功了!至此就配置好了SSH key
备注:
-
一台电脑只需要一个 SSH key
-
一个 SSH key 可以访问你的所有仓库,即使你有 1000000 个仓库,都没问题
-
如果你新买了电脑,就在新电脑上重新生成一个 SSH key,把这个 key 也上传到 GitHub,它可以和之前的 key 共存在 GitHub 上
-
如果你把 key 从电脑上删除了,重新生成一个 key 即可,替换之前的 key
配置 git
git config --global user.name 你的英文名 #此英文名不需要跟GitHub账号保持一致
git config --global user.email 你的邮箱 #此邮箱不需要跟GitHub账号保持一致
git config --global push.default matching
git config --global core.quotepath false
git config --global core.editor "vim"
五句话,依次在命令行中运行(其中前两句要把中文改成对应的内容)。
一定要执行这五行!!!
使用 git
使用 git 有三种方式,请按照你的需求选择
-
只在本地使用
-
将本地仓库上传到 GitHub
-
下载 GitHub 上的仓
1. 只在本地使用
1.1 初始化
-
创建目录作为我们的项目目录:
mkdir git-demo-1 -
进入目录
cd git-demo-1 -
git init,这句命令会在 git-demo-1 里创建一个 .git 目录 -
ls -la你就会看到 .git 目录,它就是一个「仓库」 -
在 git-demo-1 目录里面添加任意文件,假设我们添加了两个文件,分别是 index.html 和 css/style.css(github不支持提交空文件夹)
touch index.htmlmkdir csstouch css/style.css
-
运行
git status -sb可以看到文件前面有 ?? 号## Initial commit on master ?? css/ ?? index.html这个 ?? 表示 git 一脸懵逼,不知道你要怎么对待这些变动。
-
使用 git add 将文件添加到「暂存区」
-
你可以一个一个地 add
git add index.htmlgit add css/style.css
-
你也可以一次性 add
git add .意思是把当前目录(.表示当前目录)里面的变动都加到「暂存区」
-
-
再次运行
git status -sb,可以看到 ?? 变成了 A## Initial commit on master A css/style.css A index.htmlA 的意思就是添加Add,也就是说你告诉 git,这些文件我要加到仓库里
-
使用 git commit -m "信息" 将你 add 过的内容「正式提交」到本地仓库(.git就是本地仓库),并添加一些注释信息,方便日后查阅
-
你可以一个一个地 commit
git commit index.html -m '添加index.html'git commit css/style.css -m "添加 css/style.css"
-
你也可以一次性 commit
git commit . -m "添加了几个文件"
-
-
再再次运行
git status -sb,发现没有文件变动了,这是因为文件的变动已经记录在仓库里了。 -
这时你使用 git log 就可以看到历史上的变动:
commit f0d95058cd32a332b98967f6c0a701c64a00810a Author: frankfang <frankfang1990@gmail.com> Date: Thu Sep 28 22:30:43 2017 +0800 添加几个文件 -
以上就是 git add / git commit 的一次完整过程。原则上,你错了任何一步,就给我从头来一遍,做到你不会再手抖为止。
1.2 文件变动
如果我想继续改文件,应该怎么做呢?
-
start css/style.css会使用默认的编辑器打开 css/style.css(macOS 上对应的命令是open css/style.css) -
然后我们在 css/style.css 里写入
body {background: red},保存退出 -
运行
git status -sb发现提示中有一个 M## master M css/style.css这个 M 的意思就是 Modified,表示这个文件被修改了
-
此时你如果想让改动保存到仓库里,你需要先
git add css/style.css或者也可以git add .
注意,由于这个 css/style.css 以前被我们 add 过,你往文章上面看,我们是 add 过 css/style.css 的,所以此处的 git add 操作可以省略,但建议不要省略 git add。换句话说,每一次改动,都要经过 git add 和 git commit 两个命令,才能被添加到 .git 本地仓库里。
-
再次运行
git status -sb发现 M 有红色变成了绿色,红色和绿色有啥区别呢?别管它们的区别,记住,先 add,再 commit,等熟练之后再去理解区别。 -
运行
git commit -m "更新 css/style.css",这个改动就被提交到 .git 本地仓库了。 -
再次运行
git status -sb,会发现没有变更了,这说明所有变动都被本地仓库记录在案了。
这里来透露一下git status -sb是什么意思:git status 是用来显示当前的文件状态的,哪个文件变动了,方便你进行 git add 操作。-s 的意思是显示总结(summary),-b 的意思是显示分支(branch),所以 -sb 的意思是显示总结和分支。
1.3 总结
至此,我们来总结一下用到的命令
-
git init,初始化本地仓库 .git
-
git status -sb,显示当前所有文件的状态
-
git add 文件路径,用来将变动加到暂存区
-
git commit -m "信息",用来正式提交变动,提交至 .git 仓库
-
如果有新的变动,我们只需要依次执行 git add xxx 和 git commit -m 'xxx' 两个命令即可。别看本教程废话那么多,其实就这一句有用!先 add 再 commit,行了,你学会 git 了。
-
git log 查看变更历史
2. 将本地仓库上传到 GitHub
以上我们只是在操作本地的git仓库,如何将我们这个git-demo-1本地仓库上传到 GitHub 呢?
- 在 GitHub 上新建一个空仓库,名称随意,一般可以跟本地目录名一致,也叫做 git-demo-1
按照截图所示,除了仓库名,其他的什么都别改,这样你才能创建一个空仓库
- 点击创建按钮之后,GitHub 就会把后续的操作全告诉你,如图
-
看图,点击 SSH 按钮,点击 SSH 按钮,点击 SSH 按钮,我想你现在肯定不会忘了点击 SSH 按钮了吧~~~~如果不点击这个按钮,你就会使用默认的 HTTPS 地址。但是千万不要使用 HTTPS 地址,因为 HTTPS 地址使用起来特别麻烦,每次都要输入密码,而 SSH 不用输入用户名密码。
为什么 SSH 不用密码呢,因为你已经上传了 SSH public key。还记得吗?如果不记得,翻到本文第一部分「配置 GitHub」章节。 -
由于我们已经有本地仓库了,所以看图,图中下面半部分就是你需要的命令,我们一行一行拷贝过来执行
-
找到图中的「…or push an existing repository from the command line」这一行,你会看到
git remote add origin https://github.com/xxxxxxxxxx/git-demo-1.git, 如果你发现这个地址是 https 开头的,那你就做错了,还记得吗,我们要使用 SSH 地址,GitHub 的 SSH 地址是以 git@github.com 开头的。 -
一定不要忘了点击 SSH 按钮
-
得到新的命令
git remote add origin git@github.com:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/git-demo-1.git,复制并运行它 -
复制第二行
git push -u origin master,运行它 -
刷新当前页面,你的仓库就上传到 GitHub 了!是不是特别简单?只要按照步骤复制粘贴别手敲,一丝不苟,即可
-
3. 直接在 GitHub 创建一个仓库,然后下载到本地
上面两步讲了
- 在本地创建仓库
- 将本地仓库上传到 GitHub
这里将第三种用法,那就是直接在 GitHub 创建一个仓库,然后下载到本地
- 在GitHub 上新建一个仓库 git-demo-2,这次就不创建空仓库了,而是自带 README 和 Lisence 的仓库,创建截图如下:
请按图中所示,填写一模一样的内容,然后点击创建按钮。
- 这样一来,这个仓库就会自动拥有三个文件:
- 这三个文件的作用自行了解:.gitignore 的作用、README.md 的作用 以及 LISENCE 的作用
- 好了,现在远程仓库已经创建好了,怎么下载到我们的本地呢?答案是使用 git clone 命令
- 点击页面中唯一的绿色按钮「Code」,会看到一个弹出层
-
请确保弹出层里的地址是 SSH 地址,也就是 git@github.com 开头的地址,如果不是,就点击 Use SSH 按钮,就点击 Use SSH 按钮,就点击 Use SSH 按钮。然后复制这个地址。
-
打开 Git Bash,找一个安全的目录,比如 ~/Desktop 桌面目录就很安全:
cd ~/Desktop。运行。 -
运行
git clone 你刚才得到的以git@github.com开头的地址,运行完了你就会发现,桌面上多出一个 git-demo-2目录。 -
进入这个多出来的目录,对的,你肯定会忽略这一步。
-
好了你进入了这个目录了,运行
ls -la你会看到,远程目录的所有文件都在这里出现了,另外你还看到了 .git 本地仓库。这时你就可以添加文件,git add,然后 git commit 了。
三种方式都说完了,它们分别是:
-
在本地创建仓库
-
将本地仓库上传到 GitHub
-
下载 GitHub 上的仓库到本地
以上就是git的基本使用方法,还有其他高级使用方法,至此我们已经能通过 Git 命令使用 GitHub了
-
git clone git@github.com:xxxx,下载仓库
-
git init,初始化本地仓库 .git
-
git status -sb,显示当前所有文件的状态
-
git add 文件路径,用来将变动加到暂存区
-
git commit -m "信息",用来正式提交变动,提交至 .git 仓库
-
如果有新的变动,我们只需要依次执行 git add xxx 和 git commit -m 'xxx' 两个命令即可。别看本教程废话那么多,其实就这一句有用!先 add 再 commit,行了,你学会 git 了。
-
git log 查看变更历史
如何上传更新
你在本地目录有任何变动,只需按照以下顺序就能上传:
-
git add 文件路径
-
git commit -m "信息"
-
git pull (相信我,你一定会忘记这一个命令)
-
git push
下面是例子
cd git-demo-1touch index2.htmlgit add index2.htmlgit commit -m "新建 index2.html"git pullgit push
然后你去 git-demo-1 的 GitHub 页面,就能看到 index2.html 出现在里面了。是不是很……简……单……呢……
git ignore
在项目目录创建 .gitignore 文件就可以指定「哪些文件不上传到远程仓库」,比如
.gitignroe
/node_modules/
/.vscode/
这样就可以避免 node_modules/ 和 .vscode/ 目录被上传到 github 了。
记住一句话:永远都不要上传 node_modules 到 github。
如果你想防止自己手贱上传 node_modules 到 github ,可以:
- 在项目根目录 touch .gitignore
- 在 .gitignore 里添加一行
/node_modules/ - git add .gitignore; git commit -m 'ignore'
其他
还有一些有用的命令
git remote add origin git@github.com:xxxxxxx.git将本地仓库与远程仓库关联git remote set-url origin git@github.com:xxxxx.git上一步手抖了,可以用这个命令来挽回git branch新建分支git merge合并分支git stash通灵术git stash pop反转通灵术git revert后悔了git reset另一种后悔了git diff查看详细变化
学 git 命令都够学一周的,所以别妄想现在就掌握它,切记。
git分支
1.查看所有分支
git branch -a
2.创建分支
git branch 分支名称
3.切换分支
git checkout 分支名称
4.添加修改代码到缓存(注意最后的"."前面有个空格)
git add .
5.添加提交代码的备注
git commit -m "xxx"(xxx为本次提交代码的备注)
6.提交代码到指定的分支
git push origin xxx
7.删除远程你所创建的分支
git push origin --delete xxx (xxx为你想删除的远程分支名称)
8.删除本地分支
git branch -D xxx(xxx为你想删除的本地分支名称)
9.拉取指定分支的代码
git clone -b 分支名称 远程仓库地址