目录
关于Git与GitHub的安装与使用网上的信息太多太杂乱,有很多都是不能用的,在经过了几天的摸索之后终于发现了正确的操作方法,特此记之。
本篇博客记录的是在windows下Git以及GitHub的安装及初始配置,不做Git和GitHub的使用教程,其他的平台大同小异。
1 安装Git(Git for Windows)
1.1 准备安装文件
- 下载最新的Git:
- 在Git官网下载
- 如果官网下载困难,可以在 https://github.com/waylau/git-for-win 上下载
- 下载文本编辑器NotePad++(Linux系统等可以用vim):
- 在Notepad++管网上下载
1.2 安装
- 先安装NotePad++,如果不清楚安装过程中的设置选项的作用,所有的选项都默认即可。
安装完成后在设置->首选项->新建中设置新建文档的编码为UTF-8(无BOM) - 再安装下载下来的Git(我的版本是:Git-2.20.1-64-bit.exe)。
同样,如果不清楚安装过程中的设置选项的作用,选择默认安装即可。
注意在下面这步选择**NotePad++**为默认编辑器。
1.3 查看安装结果
返回目录
如果安装成功,会在开始菜单的Git文件夹里面找到Git Bash,打开之后是这个样子:
其中的两个命令
$ pwd #查看当前目录
$ git --version #查看Git版本
1.4 配置Git
返回目录
运行如下命令配置Git:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
#配置中用了 --global 参数表示这台机器上的所有Git仓库都会使用这个配置。
#进入到某一指定文件夹,用去掉--global参数的设置表示当前库用这个配置。
2 Git的简单使用
2.1 建仓
在需要建仓的文件中单击右键->Git Bash Here;或者在开始菜单中找到Git Bash打开,然后用如下命令进行文件夹操作:
$ cd D:/07-TempFiles #跳转目录(目录无空格)
#输入目录时可以只输入 07 然后按 TAB 键自动补全
$ cd "D:/07-Temp Files" #跳转目录(目录带空格)
$ mkdir HelloGit #新建目录
$ rm -rf HelloGit #删除目录 -rf参数:删除嵌套目录
$ pwd #查看当前所在目录
$ ls #查看当前目录包含的文件(包括目录)
$ ls -ah #查看当前目录的文件(包括隐藏文件)
跳转到指定目录后运行如下命令新建一个Git版本库:
$ git init
#将当前目录初始化为Git可以管理的仓库
#用 $ ls -ah 命令可以看到目录下多了个.git文件夹
#这是Git用来管理版本库的,不要修改此目录,以免破坏仓库
用Notepad++在当前文件夹下建一个HelloGit.txt文件,后用如下命令将其添加到Git版本库中:
$ git add HelloGit.txt
$ git commit -m "新建HelloGit.txt文档"
2.2 Git指令
返回目录
图片来自https://www.git-tower.com/windows(侵删)
2.3 版本控制
返回目录
图片来自https://www.git-tower.com/windows(侵删)
3 GitHub远程仓库与Git本地仓库的初始配置
3.1 GitHub Desktop
GitHub Desktop(官网下载)是GitHub的桌面版应用,不需要复杂设置且功能强大,不过貌似只可以在MacOS和Windows上使用,使用Linux系统和喜欢自己动手的小伙伴可以接着往下看。
3.2 Git本地版本库与GitHub版本库关联
3.2.1 创建SSH Key
参照Connecting to GitHub with SSH
- 查看SSH Key是否已经存在 ,打开Git Bash输入如下命令:
$ ls -al ~/.ssh
运行结果:
如果发现有id_rsa与id_rsa.pub两个文件则表示SSH Key已经存在了,id_rsa是私钥,不能泄露,id_rsa.pub是公钥。
此时可以跳过步骤2,直接到步骤3。
- 如果第1步中没有id_rsa与id_rsa.pub两个文件则需要创建,在Git Bash中运行如下命令:
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
#your_email@example.com 处填入自己的邮箱
然后根据提示操作,运行结果:
在生成过程中可以设置SSH Key的存储位置 :
Enter file in which to save the key (/c/Users/DemonHunter/.ssh/id_rsa):
此项直接回车采用默认即可。
可以设置SSH Key的密码:
Enter passphrase (empty for no passphrase):
此项如果不是重大涉密的项目直接回车不设密码即可,否则每次往GitHub版本库中提交的时候都需要输入密码,太麻烦。
然后我们还能在运行结果中看到SSH Key的存储位置:
Your public key has been saved in /c/Users/DemonHunter/.ssh/id_rsa.pub.
- 生成之后我们可以在提示的用户文件夹下找到id_rsa.pub,打开复制里面的所有文字。
如果不想一层一层目录找可以按Win+R调出运行输入cmd打开命令提示符,然后如下操作就可以快速打开文件夹(cmd中查看目录文件用dir命令):
- 登录GitHub将复制的文字按如下步骤粘贴:
3.2.2 从头创建与GitHub连接绑定的Git本地版本库
- 先在GitHub上创建版本库:
- 将版本库Clone到本地:
到GitHub上获取版本库的地址:
在你要放置版本库的文件夹中邮件打开Git Bash Here,运行命令:
$ git clone git@github.com:yourname/HelloGitHub.git
#将复制到的地址粘贴在clone之后即可
#首次运行会有一个提示
#The authenticity of host 'github.com (52.74.223.119)' can't be established.
#RSA key fingerprint is SHA256:********************************************.
#Are you sure you want to continue connecting (yes/no)?
#此处忽略掉直接输入 yes 回车即可
运行完之后你会在当前文件夹里面发现Git新建了一个与GitHub上版本库同名的文件夹,这个新建的文件夹就是本地的与GitHub绑定的版本库了。
运行结果:
进入这个文件夹,运行git status命令,会发现这么一句:
Your branch is up to date with ‘origin/master’.
说明当前的分支是 master , origin 作为别名代替GitHub上的版本库地址。
这之后可以用 git push 推送全部 或 git push origin master推送到 master 分支。
3.2.3 现有一个本地Git版本库,推送到GitHub并连接绑定
$ git remote add origin git@github.com:yourname/HelloGitHub.git
#origin为远程GitHub版本库的默认名字,也可以用一个其他的易于自己识别的名字
#git@github.com:yourname/HelloGitHub.git为获取到的远程版本库的地址
- 关联好之后将本地Git版本库推送到远程版本库:
$ git push -u origin master #往空的远程版本库origin的master分支进行第一次推送
# -u 参数会使Git将本地的master分支推送的远程版本库
#并且将本地的master分支与远程版本库中的master分支关联起来
#后续的推送就可以简化命令
$ git push origin master #第二次及以后的推送
- 第一次推送可能遇到的错误:
如果在GitHub上创建版本库的时候勾选了创建 README 或者添加了 .gitignore 等文件,那么在第一次推送的时候可能会遇到如下问题:
原因是本地的master分支与GitHub上的远程master分支有冲突,远程分支上的work本地分支上没有。
解决方法:
按照提示错误里面的提示, git push --help 查看帮助,会弹出一个网页,找到 Note about fast-forwards版块阅读发现这么一段:
Alternatively, you can rebase your change between X and B on top of A, with “git pull --rebase”, and push the result back. The rebase will create a new commit D that builds the change between X and B on top of A.
按照帮助里的说明,先 git pull --rebase ,可能还会报一个错:
根据提示用命令 git branch --set-upstream-to=origin/master master 关联本地库master分支与远程库master分支,之后再次 git pull --rebase ,接着 git push -u origin master 成功!并且GitHub远程库中的文件也会出现在本地库中。
4 Git与GitHub教程
- <<Git Docs>>–Git文档
- <<Pro Git>>–Git书籍,支持中文,在页面左边选择语言
- <<GitHub Help>>–GitHub帮助文档,以上所写基本上都可以在帮助文档里面找到
- <<Git简明指南>>