Git 基本操作
Git本地库基本操作
创建版本库
git init # 初始化仓库
添加文件到暂存区
git add <file> # 向暂存区添加文件或者目录
查看修改状态
git status # 查看上次提交之后是否有修改
git status -s # 查看精简的状态
需要注意的是,如果使用git status -s指令,那么输出的状态简记:
??:表示文件未被trackD:表示文件被删除M:表示文件被修改
查看具体的修改
git diff # 查看尚未缓存的改动
git diff --cached # 查看已缓存的改动
git diff HEAD # 查看已缓存的与未缓存的所有改动
git diff --stat # 显示摘要而非整个
配置用户名和邮箱
Git 为每一个提交都记录用户名与邮箱,所以在提交之前需要先配置用户名与邮箱。
git config --global user.name xxx
git config --global user.email xxx@xxx.com
提交暂存区到本地仓库
git commit -m "comment" # 将当前暂存区中的内容提交到本地库
查看提交的历史记录
git log # 查看历史提交记录
git log --oneline # 查看简洁版的提交记录
git log --graph # 查看历史中什么时候出现了分支、合并
git log --reverse # 逆向查看历史记录
git log --author=Linus --oneline -5 # 查看指定用户最新提交的5次记录
git reflog # 可以查看所有分支的所有操作记录
撤销工作区的修改
git checkout -- <file> # 注意-- 一定不能省,否则就是切换分支指令
这里需要注意,撤销工作区中的修改分为两种情况:
- 一种是文件自修改后还没有被放到暂存区,此时撤销修改就回到和版本库一模一样的状态。
- 一种是文件已经添加到暂存区后,又作了修改,此时撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
撤销暂存区的修改
git reset HEAD <file> # 把暂存区的修改撤销掉(unstage)
文件修改后,使用 git add 添加到了暂存区,如果想撤销暂存区的修改可以按照上面的步骤,重新放回工作区用HEAD时,表示最新的版本。
如果想进一步将工作区修改也撤销,可以参考撤销工作区的修改的步骤。
版本切换
git log --oneline # 先查看一下提交的历史记录
git reset --hard commit_id # 回退到某个历史版本,同时工作区也会被更新
注意到版本回退会导致工作区的文件更新。
如果回退版本之后,还想重新回到原来的版本,那么可以按照如下行操作进行:
git reflog # 查看git的历史操作记录,寻找到想要重新返回版本的commit_id
git reset --hard commit_id # 回退到指定的版本,同时工作区也会被更新
删除文件
假设先创建了一个新的文件,并且将其 git add 到暂存区,然后在本地删除了这个文件,那么此时的操作行为可以分为两种:
第一种是:确实想删除这个文件,那么需要将暂存区中的该文件删除掉,此时可以执行:
git rm <file> # 删除暂存区中的某个文件
第二种是:工作区的文件时误删的,想要从暂存区恢复这个文件到工作区,那么可以执行:
git checkout -- <file> # 从暂存区恢复工作区的修改
Git远程库基本操作
Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。
分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作。
仓库有很多种,这里常见的有如下几种:
创建github远程仓库
首先,需要申请 Github 账号。
添加 SSH KEY
创建 SSH Key
在用户主目录下,看看有没有 .ssh 目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。
如果没有,则需要创建 SSH Key:
ssh-keygen -t rsa -C "xxx@xx.com" # 需要输入自己的邮箱
如果创建成功,则可以在用户主目录下看到 .ssh 目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key 的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
cd ~ # 进入到用户主目录
ls .ssh -ah # 查看用户主目录下是否存在 .ssh 目录以及 .ssh 目录下的文件
添加 SSH Key
打开Github,添加 SSH KEY:

- 之所以需要添加
SSH KEY是因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。 - 当然,GitHub允许你添加多个
Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
创建远程库

远程仓库创建完成之后,会提示:

- 目前是一个空的仓库,此时可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
- 另外有
HTTPS和SSH两种协议可选择。
本地库推送到远程库
复制上面的 SSH 网址,然后将本地库与远程库关联:
git remote add origin git@github.com:XXX/testRep.git
添加后,远程库的名字就是 origin,这是Git默认的叫法,也可以改成别的,但是 origin 这个名字一看就知道是远程库。
添加远程仓库之后,可以查看本地仓库关联了哪些远程库:
git remote -v # 查看本地库关联的远程库
将本地库添加到远程库:
git push -u origin master # 第一次把当前分支master推送到远程
- 第一次添加的时候遇到
SSH警告:
这是因为Git使用 SSH 连接,而 SSH 连接在第一次验证GitHub服务器的Key 时,需要你确认GitHub的 Key 的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。
The authenticity of host 'github.com (13.229.188.59)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?
直接输入 yes之后就可以了。
- 由于远程库是空的,我们第一次推送
master分支时,加上了-u参数。 - Git不但会把本地的
master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。 - 推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样:

- 之后只要本地作了提交,就可以通过命令:
git push origin master # 本地库推送到远程库
从远程库clone
git clone git@github.com:XXX/testRep.git # 从远程库clone
git clone支持多种协议:HTTP(s),SSH、Git、本地文件协议等。
使用 https 除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放 http 端口的公司内部就无法使用 SSH 协议而只能用 https。
基于远程库的开发流程
个人开发流程

团队内部协作开发流程

跨团队协作开发流程


浙公网安备 33010602011771号