git学习笔记(一)

来源:互联网 发布:逆袭网络剧第5集 编辑:程序博客网 时间:2024/05/22 00:40

安装

windows版的git,下载

国内镜像

安装完成后设置全局参数

$ git config --global user.email "you@example.com"$ git config --global user.name "Your Name"

创建版本库

选择一个合适的地方创建本地版本库(路径不要包含中文),pwd命令用于显示当前目录

$ cd /d/Tools/Repositories/gitReposiroty$ mkdir learngit$ cd learngit$ pwd/d/Tools/Repository/learngit

通过git init命令把这个目录变成git可以管理的仓库

$ git initInitialized empty Git repository in D:/Tools/Repositories/gitRepository/learngit/.git/

完成后会在当前目录下创建一个.git目录,默认隐藏,建议不要手动修改此文件,以免破坏仓库。

提交文件

至此git版本库已经创建好,建议为每个版本库创建一个readme文件,不要使用windows系统自带的记事本,因为它会在每个UTF-8编码的文件开头默认加一个0xefbbbf(十六进制)的字符,使用Notepad++时,编码设置为UTF-8 without BOM

添加文件到git版本库需要两步,先添加文件到暂存区git add <filename>,然后提交到分支git commit -m "comment"-m后面是提交的说明注释,可以多次添加,一次性提交,在add和commit后,分别执行git status命令,可以查看仓库当前的状态。

$ git add readme.txt$ git commit -m "add a readme file"[master (root-commit) abb5369] add a readme 1 file changed, 1 insertion(+) create mode 100644 readme.txt

版本的修改

工作原理

工作区—-add—->>版本库.stage—-commit—->>版本库.branch<<—-HEAD

git diff    #是工作区(work dict)和暂存区(stage)的比较git diff --cached    #是暂存区(stage)和分支(master)的比较git diff HEAD  #查看工作区和版本库里面最新版本的区别

查看版本

当我们多次提交到仓库,我们可以通过git log查看提交的版本记录,包括版本号、作者、日期、注释说明

$ git logcommit 2621e3c4bd39d1fa65bc06991e3b77e2ac131f31Author: Echo <oldechochuan@gmail.com>Date:   Sat Jun 10 15:27:43 2017 +0800    modifycommit abb5369a3a0a8779c05e069d49e594ece81c14d7Author: Echo <oldechochuan@gmail.com>Date:   Sat Jun 10 15:23:10 2017 +0800    add a readme

git log --pretty=oneline只显示版本号、注释说明

$ git log --pretty=oneline2621e3c4bd39d1fa65bc06991e3b77e2ac131f31 modifyabb5369a3a0a8779c05e069d49e594ece81c14d7 add a readme

退回版本

git中使用HEAD表示当前版本,上一个版本HEAD^,上上个版本HEAD^^,前100个版本HEAD~100

退回到上一个版本

$ git reset --hard HEAD^

查看文件内容

$ cat readme.txt

查看使用过的命令

$ git relog

通过这条命令可以看到各版本号,如果我们从版本3退回到版本2,现在想要再恢复到版本3,git log命令则不能查看版本3的版本号,我们就可以使用git relog

撤销修改

$ git checkout -- readme.txt

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

  • readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态
  • readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态

总之,就是让这个文件回到最近一次git commitgit add时的状态。

$ git reset HEAD readme.txt

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

删除文件

删除也应当看成是修改操作

现在的情况是:工作区中的文件被我们删除了,但是版本库中还存在,我们可能面临两种选择

  • 将版本库中的文件也删除

    $ git rm test.txt$ git commit -m "remove test.txt"
  • 误操作,需要从版本库中将文件恢复到工作区中

    $ git checkout -- test.txt

远程仓库

远程仓库关联本机

我们使用GitHub作为远程仓库

  • 生成SSH key

    $ ssh-keygen -t rsa -C "youremail@example.com"
  • 将SSH公钥添加到GitHub账号中

    只有在GitHub账号中添加了本地SSH公钥才能向仓库中推送文件

添加远程仓库

在码云上创建一个名为learngit的空的仓库,然后连接到该仓库

$ git remote add origin git@git.oschina.net:oldEchoChuaN/learngit.git

使用git push命令将本地当前分支master推送到远程

$ git push -u origin master

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送到远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

此后本地再做提交,可以通过命令

$ git push origin master

SSH警告

第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告,这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可,此后就不会再次出现。

从远成仓库克隆

当已经有人讲项目基础推送在远程仓库上,而我们本地应该是从零开始,则使用git clone命令从远程获取

$ git clone git@git.oschina.net:oldEchoChuaN/learngit.git
原创粉丝点击