工欲善其事,必先利其器。
本文学习源为https://www.liaoxuefeng.com/wiki/896043488029600
一、创建本地仓库(提交新文件)
仓库可以理解为一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除、Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以还原。
创建版本库的步骤:
- 创建一个空目录
- 进入这个空目录,并打开终端执行
git init
即可初始化一个Git仓库 - 添加文件到Git仓库
使用命令git add <file>
(可以反复多次使用,添加多个文件)
使用命令git commit -m <message>
完成将文件添加到本地仓库
二、掌握工作区状态(提交修改)
如果在本地修改了文件,在提交之前可以
使用 git status
命令查看文件的修改状态,
使用 git diff
查看具体修改的内容。
提交修改的步骤:
- 使用命令
git add <file>
提交修改的文件 - 使用命令
git status
查看当前仓库状态,或使用命令git diff
查看具体修改内容 - 使用命令
git commit -m <message>
提交文件到仓库 - 再次使用
git status
查看查看仓库的当前状态,会输出
On branch master nothing to commit, working tree clean
三、版本回退
使用 git log
命令查看历史提交版本(使用 git log --pretty=oneline
简化查看数据)
使用 git reset --hard HEAD^
回退到上一个版本( HEAD
表示当前版本,HEAD^
表示上一个版本,HEAD^^
表示上上个版本, HEAD~100
表示往上100个版本)
使用 git reflog
查看命令历史,确定切回到未来的哪个版本
使用 git reset --hard commit_id
回退到指定版本,包括回退到未来版本
四、工作区和暂存区
工作区,就是本地创建的目录中除 .git
文件之外的内容
版本库在工作区中的一个隐藏目录 .git
文件中
版本库里存了很多东西,其中最重要的就是stage(就是暂存区),还有Git自动创建的第一个分支master,以及指向master的一个指针叫做HEAD
上述 git add
的过程实际上就是把文件修改添加到暂存区;git commit
提交实际上就是把暂存区的所有内容提交到当前分支
五、管理修改
Git跟踪并管理的是修改,而非文件。
每次修改都应该使用 git add
将修改添加到暂存区,如果修改后没有执行 git add
,执行 git commit
不会将本次修改提交。
规范的修改提交过程应为
修改1→ git add
→修改2→ git add
....→ git commit
六、撤销修改
修改了工作区的文件,想直接丢弃工作区的修改,使用 git checkout -- file
修改了工作区的文件并且使用 git add
添加到了暂存区,此时想丢弃修改,分两步:
使用 git reset HEAD <file>
使用 git checkout -- file
修改了工作去的文件并且使用 git commit
提交到了本地仓库,撤销修改方法参考版本回退
七、删除文件
使用命令 git rm
删除文件。
如果误删,并且误删文件已经提交到版本库,使用 git checkout -- file
恢复即可
八、配置SSH Key
1.创建SSH Key。在用户主目录下,查看是否有.ssh目录,查看目录中是否有id_rsa 和id_rsa.pub这两个文件,如果没有,打开终端或者Git Bash
使用 ssh-keygen -t rsa -C "email@example.com"
创建SSH Key
执行命令之后一路回车即可。
最后会在.ssh目录生成id_rsa 和id_rsa.pub两个文件,id_rsa是密钥,不能泄露出去;id_rsa.pub是公钥,可以放心地告诉任何人
2.登录GitHub 设置公钥
打开Account settings, "SSH Keys"页面,点击"Add SSH Key",填上任意title,在Key文本框里粘贴id_rsa.pub文件中的内容,点击"Add Key"即可
九、添加文件到远程仓库
本地创建了一个Git仓库之后,再在Github上创建一个Git仓库,使得本地的仓库和Github上的仓库远程同步操作步骤
登陆Github,创建一个新的仓库,仓库名称跟本地一致
在本地仓库下运行命令 git remote add origin git@server-name:pathe/repo-name.git
执行命令 git push -u origin master
把本地库的所有内容推送到远程库上,把本地仓库内容推送到远程,用 git push
命令,实际上是把当前分支master推送到远程加上-u参数,Git不但会把本地的master内容推送到远程新的master分支,还会把本地的master分支和远程master分支关联起来,在以后的推送或者拉取时就可以简化命令
自此之后,只要本地作了提交,就可以使用命令 git push origin master
把本地master分支的最新修改推送至Github
十、从远程库克隆
在Github上创建一个新的仓库
本地执行命令 git clone git@server-name:pathe/repo-name.git
Git 支持多种协议,比如https,ssh;但ssh协议速度最快。