安装后测试
‘$’符号是在打开Git.bash后终端里有的,无需自己输入
Git.bash也是安装后就有的软件
本文是在Windows环境下的完成的,只是为了总结命令的使用 ps:教程来源
bash
复制代码
$ git config --global user.name "cfd" $ git config --global user.email "2909047212@qq.com"
- 注意
git config
命令的--global
参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
创建repository仓库
$ git init
- 创建了一个
.git
隐藏文件 - 没有看到
.git
目录,那是因为这个目录默认是隐藏的,用ls -ah
命令就可以看见。
$ git add
git add
后不跟文件名,视为全部添加- 跟文件视为只添加这些文件
$ git commit
ruby
复制代码
$ git commit -m "wrote a readme file"
-m
后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录- 如果没有-m后面的信息,自动进入一个弹窗要求输入解释信息,不输入自动取消提交
版本穿越
git log
- 命令显示从最近到最远的提交日志
git reset
- 上一个版本就是
HEAD^
,上上一个版本就是HEAD^^
- 往上100个版本写100个
^
比较容易数不过来,所以写成HEAD~100
git reset --hard commit_id
commit_id可以输入之前存在过的版本信息
git reflog
- 记录每一次命令的信息,包括commit_id,可以方便的版本穿梭
工作区和暂存区
- 关系如图
git status
- 查看状态
git checkout -- file
- 可以丢弃工作区的修改
readme.txt
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;readme.txt
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
git reset HEAD <file>
- 可以把暂存区的修改撤销掉(unstage),重新放回工作区
删除文件
用git rm <filename>
删掉,并且git commit
取消删除git checkout -- test.txt
- 用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”
远程仓库(GitHub)
前期准备
第1步:创建SSH Key
在用户主目录C:/Users/..
,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
perl
复制代码
$ ssh-keygen -t rsa -C "youremail@example.com"
然后一路回车,使用默认值即可.
如果一切顺利的话,可以在用户主目录里找到.ssh
目录,里面有id_rsa
和id_rsa.pub
两个文件,这两个就是SSH Key的秘钥对,id_rsa
是私钥,不能泄露出去,id_rsa.pub
是公钥,可以放心地告诉任何人。
第二步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
添加远程库
ruby
复制代码
$ git remote add origin git@github.com:<username>/<reponame>.git
- 添加后,远程库的名字就是
origin
,这是Git默认的叫法,也可以改成别的,但是origin
这个名字一看就知道是远程库。
perl
复制代码
$ git push -u origin master
- 把本地库的内容推送到远程,用
git push
命令,实际上是把当前分支master
推送到远程。 - 由于远程库是空的,我们第一次推送
master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。
perl
复制代码
$ git push origin master
只要本地作了提交,用上面命令把本地master
分支的最新修改推送至GitHub
删除远程库
- 此处的“删除”其实是解除了本地和远程的绑定关系,并不是物理上删除了远程库。远程库本身并没有任何改动。要真正删除远程库,需要登录到GitHub,在后台页面找到删除按钮再删除。
如果添加的时候地址写错了,或者就是想删除远程库,可以用git remote rm <name>
命令。使用前,建议先用git remote -v
查看远程库信息:
ruby
复制代码
$ git remote -v
然后,根据名字删除,比如删除origin
:
shell
复制代码
$ git remote rm origin
从远程库clone
$ git clone git@github.com:cfddd/test2.git
- 当在一个空目录下clone一个项目后,这个项目必然和远程仓库已经链接好了,直接操作即可(前提是远程仓库有权限,这也是为什么不可以clone别人仓库的原因)