1. 初始化一个Git仓库,使用git init命令。
2. 添加文件到Git仓库,分两步:【Git天界文件需要add,commit 两步,因为commit可以一次提交很多wenjian】
-
第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;
-
第二步,使用命令git commit,完成。
-
如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
4. 版本回退:,每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失。
- git log命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是append GPL,上一次是add distributed,最早的一次是wrote a readme file。 如果嫌输出信息太多,看得眼花缭乱的,可以加上--pretty=oneline参数。
- 版本回退时,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。也可以直接使用commit id 回退到相应的版本。
- 使用git reset命令回退到以前的版本。
- 在Git中,总是有后悔药可以吃的。当你用$ git reset --hard HEAD^回退到之前版本时,再想恢复到之后版本,就必须找到该版本的commit id。Git提供了一个命令git reflog用来记录你的每一次命令。
- 工作区:即电脑中能看到的目录。
- 版本库Repository:工作区有一个隐藏目录.git,即Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
- 前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。
- 提交后,用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别
- 每次修改,如果不add到暂存区,那就不会加入到commit中。
- 撤销修改:git checkout -- file可以丢弃工作区的修改。(没有--,就变成了“切换到另一个分支”的命令)
这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态
- 命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区
7. 删除文件:使用命令rm file将工作区的文件删除时,
- 确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit
- 删错了,可以通过 git checkout -- file 很轻松地把误删的文件恢复到最新版本(因为版本库中还存在)
- 命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
二、远程仓库
Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。(只要注册一个GitHub账号,就可以免费获得Git远程仓库)
由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:
- 创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:$ ssh-keygen -t rsa -C "youremail@example.com"
然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
-
登陆GitHub,打开“Account settings”,“SSH Keys”页面,然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容
-
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
- 登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库learngit
- GitHub的提示,在本地的learngit仓库下运行命令:添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。
- $ git remote add origin your_github_account/learngit.git
- 把本地库的所有内容推送到远程库上:把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
$ git push -u origin master
- 从现在起,只要本地作了提交,就可以通过命令,把本地master分支的最新修改推送至GitHub
$ git push origin master
2. 从远程库克隆:
- 登陆GitHub,创建一个新的仓库,名字叫gitskills
- 下一步是用命令git clone克隆一个本地库
$ git clone git@github.com:yourAccountName/gitskills.git
下节介绍git分支管理和标签管理等内容
来源:oschina
链接:https://my.oschina.net/u/2260265/blog/636311