本文简单介绍了git与github的配置,以及如何将本地仓库与github连接起来。还介绍了git常用的一些命令,以及如何简化git命令
参考资料: 饥人谷
菜鸟教程:Git教程
配置 GitHub (SSH Key)
- 进入 https://github.com/settings/keys
- 如果页面里已经有一些 key,就点「delete」按钮把这些 key 全删掉。如果没有,就往下看
- 点击 New SSH key,你需要输入 Title 和 Key,但是你现在没有 key,往下看
- 打开 Git Bash
- 按照 https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/ 的教程
- 运行
ssh-keygen -t rsa -b 4096 -C "你的邮箱"
,注意填写你的邮箱! - 按回车三次
- 运行
ll ~/.ssh
,可以看到生成了id_rsa(钥匙)和id_rsa.pub(锁) - 运行
cat ~/.ssh/id_rsa.pub
,得到一串东西,完整的复制这串东西 - 回到上面第 3 步的页面,在 Title 输入「win7上的ssh」
- 在 Key 里粘贴刚刚你你复制的那串东西
- 点击 Add SSH key
- 回到 Git Bash
- 运行
ssh -T git@github.com
,用你电脑上的钥匙打开上传到github的锁,你可能会看到这样的提示:
输入yes
回车 - 然后如果你看到 Permission denied (publickey). 就说明你失败了,请回到第 1 步重来,是的,回到第 1 步重来;如果你看到 Hi FrankFang! You’ve successfully authenticated, but GitHub does not provide shell access. 就说明你成功了!
- 一台电脑只需要一个 SSH key
- 一个 SSH key 可以访问你的所有仓库,即使你有 1000000 个仓库,都没问题
- 如果你新买了电脑,就在新电脑上重新生成一个 SSH key,把这个 key 也上传到 GitHub,它可以和之前的 key 共存在 GitHub 上
- 如果你把 key 从电脑上删除了,重新生成一个 key 即可,替换之前的 key
Git的配置与使用
配置Git
git --version
:查看当前git版本号
|
|
五句话,依次运行。不执行的话,电脑可能会爆炸你信不信。
git config -l
: 查看配置git config --global -l
:查看全局配置
只在本地使用Git
git --version
查看git Bash版本号
步骤
- 创建目录作为我们的项目目录:
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
123touch index.htmlmkdir csstouch css/style.css运行
git status -sb
查看文件状态, 可以看到文件前面有 ?? 号123## Initial commit on master?? css/?? index.html
这个 ?? 表示 git 一脸懵逼,不知道你要怎么对待这些变动。
- 使用
git add
将文件添加到「暂存区」
你可以一个一个地 add12git add index.htmlgit add css/style.css
你也可以一次性 addgit add .
意思是把当前目录(.表示当前目录)里面的变动都加到「暂存区」
- 再次运行
git status -sb
,可以看到 ?? 变成了 A123## Initial commit on masterA css/style.cssA index.html
A 的意思就是添加,也就是说你告诉 git,这些文件我要加到仓库里
- 使用
git commit -m "信息"
将你 add 过的内容「正式提交」到本地仓库(.git就是本地仓库),并添加一些注释信息,方便日后查阅
你可以一个一个地 commit12git commit index.html -m '添加index.html'git commit css/style.css -m "添加 css/style.css"
你也可以一次性 commitgit commit . -m "添加了几个文件"
建议使用git commit -v
来提交git commit -v
可进行多行描述,首行为title,次行开始description。
比如首行“做了一些更新”,次行“详细更新了xxxx和xxxx以及xxxx”
- 再再次运行
git status -sb
,发现没有文件变动了,这是因为文件的变动已经记录在仓库里了。 - 这时你使用
git log
就可以看到历史上文件的变动:12345commit f0d95058cd32a332b98967f6c0a701c64a00810aAuthor: xxxxxx <xxxxxxxx@gmail.com>Date: Thu Sep 28 22:30:43 2017 +0800添加几个文件
按↑ ↓键查看,按 Q 退出
- 运行
history
可以看到历史上输入过的命令 - 运行
start css/style.css
会使用默认的编辑器编辑style.css,保存 运行
git status -sb
,可以看到style.css前面一个红色的M(Modified),代表文件有过变动但未add到仓库12## masterM css/style.css运行
git add style.css
,可以看到红色的M变成了绿色的M,表示变动过的文件将添加到「暂存区」- 运行
git commit -m "改动style.css"
这个改动就被提交到 .git 本地仓库了 - 再再次运行
git status -sb
,会发现没有变更了,这说明所有变动都被本地仓库记录在案了。 - 删除文件
rm style.css
- 运行
git add style.css
,将删除结果add到仓库 git status -sb
,会发现前面有个绿色的D(Delete)- 运行
git commit -m "删除style.css"
总结
git init
,初始化本地仓库 .gitgit status -sb
,显示当前所有文件的状态git add 文件路径
,用来将变动加到暂存区git commit -m "信息"
,用来正式提交变动,提交至 .git 仓库- 如果有新的变动,我们只需要依次执行
git add xxx
和git commit -m 'xxx'
两个命令即可。别看本教程废话那么多,其实就这一句有用!先 add 再 commit,行了,你学会 git 了。 git log
查看变更历史
将本地仓库上传到 GitHub
如何将我们这个 git-demo-1 上传到 GitHub 呢?
步骤
- 在 GitHub 上New一个repository,名称随意,一般跟本地目录名一致
按照截图所示,除了仓库名,其他的什么都别改,其他的什么都别改,其他的什么都别改,其他的什么都别改,这样你才能创建一个空仓库 - 点击创建按钮之后,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 按钮,不管我强调多少遍,总会有人忘记点击 SSH 按钮,为什么呢?我也不知道,为了防止你忘了点击 SSH 按钮,我最后再说一遍,「点击 SSH按钮」,点击之后,整个世界就会变得美好起来。
- 得到新的命令
git remote add origin git@github.com:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/git-demo-1.git
,复制并运行它 - 复制第二行
git push -u origin master
,运行它 - 刷新当前页面,你的仓库就上传到 GitHub 了!是不是特别简单?只要你按照我说的做,一丝不苟,即可。
- 找到图中的「…or push an existing repository from the command line」这一行,你会看到
直接在 GitHub 创建一个仓库,然后下载到本地
步骤
- 在GitHub 上新建一个仓库 git-demo-2,这次就不创建空仓库了,而是自带 README 和 Lisence 的仓库,创建截图如下:
请按图中所示,填写一模一样的内容,然后点击创建按钮。 - 这样一来,这个仓库就会自动拥有三个文件:
- 这三个文件的作用请自行了解:.gitignore 的作用、README.md 的作用 以及 LISENCE 的作用
- 运行
git clone 以git@github.com开头的地址
运行完了你就会发现,桌面上多出一个 git-demo-2 目录。 cd git-demo-2
进入这个多出来的目录- 运行
ls -la
你会看到,远程目录的所有文件都在这里出现了,另外你还看到了 .git 本地仓库。这时你就可以添加文件,git add
,然后git commit
了。
总结
- 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 查看变更历史
如何上传更新
你在本地目录有任何变动,只需按照以下顺序就能上传到github:
下面是例子
然后你去 git-demo-1 的 GitHub 页面,就能看到 index2.html 出现在里面了。是不是很……简……单……呢……
其他Git命令
- 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操作偷懒技巧
通过~/.bashrc 文件可以简化git操作
自动运行
- 首先
touch ~/.bashrc
创建一下这个文件
start ~/.bashrc
选用编辑器编辑这个文件,内容为echo 'Hi'
- 你也可以用命令行编辑文件
echo "echo 'hi'" >> ~/.bashrc
- 关闭退出 Git Bash,然后打开 Git Bash,是不是看到了 Hi,这说明每次进入 Git Bash,就会优先运行 ~/.bashrc 里面的命令
- 重新编辑 ~/.bashrc,内容改为
cd ~/Desktop
,重启 Git Bash,有没有发现默认就进入桌面目录了?
你可以用 ~/.bashrc 在进入 Git Bash 前执行任何命令,十分方便。
alias(简写)
- 在 ~/.bashrc 里新增一行
alias f="echo 'frank is awesome'"
,等于号两边不能有空格,你最好一个字都不要错。
- 运行
source ~/.bashrc
,作用是执行 ~/.bashrc - 运行
f
,就会看到 frank is awesome
也就是说,现在 f 就是 echo ‘frank is awesome’ 的缩写了,利用这个技巧,我们可以把很多常见的命令缩写一下,比如
保存退出,然后运行 source ~/.bashrc
- 这样一来,你的 Git 操作就会简单很多:12345ga 1.txtga .gc 1.txtgc.gst
永久alias
上面的方法需要每次运行source ~/.bashrc
,改用bash_profile可以配置永久alias
- touch ~/.bash_profile
- start ~/.bash_profile
- 用编辑器打开
.bash_profile
- 填入alias
!注意:等于号两边不能有空格
环境变量
还可以在 ~/.bashrc 里面设置一些环境变量,比如你可以在 ~/.bashrc 里面添加一行
export SASS_BINARY_SITE="https://npm.taobao.org/mirrors/node-sass"
那么以后你安装 node-sass 的时候就不会因为被墙而报错了。以后会用到的,现在先说一下。
设置 PATH
export PATH="目录的绝对路径:$PATH"
可以在 PATH 里添加一个目录,不要运行,等用到的时候再来查。
其他
命令1 && 命令2 :命令1执行成功后才会执行命令2
命令1 || 命令2 :命令1执行失败时,执行命令2
命令1 ; 命令2 : 命令1执行完后,执行命令2