Git简介:Git是目前世界上最先进的分布式版本控制系统。
学习的目的主要用来连接GitHub仓库
Git安装
Linux安装:sudo apt-get install git就可以直接完成Git的安装;
MAC安装: 第一种方法安装homebrew,然后通过homebrew安装Git,具体方法 请参考homebrew的文档:http://brew.sh/。
第二种方法更简单,也是推荐的方法,就是直接从AppStore安装Xcode,Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单 “Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择 “Command Line Tools”,点“Install”就可以完成安装了。
windows安装:https://git-scm.com/downloads
基础配置
- 登录Github账号
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
注意git config命令的–global参数,用了这个参数,表示你这台机器上所有的Git仓库都 会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
创建版本库(repository)
1、建立空目录
$ mkdir learngit $ cd learngit $ pwd /Users/michael/learngit
2、变成版本库
git初始化
git init,通过这个命令将这个目录变成git可以管理的仓库,会在当前目录下多一个.git目录,用来跟踪管理库,该目录默认是隐藏的,可以使用ls -ah命令查看。$ git init # Initialized empty Git repository in /Users/michael/learngit/.git/
3、把文件添加到版本库
使用notepad++编写一个readme.txt文件于目录文件下(/learngit);
用命令git add告诉Git,把文件添加到仓库:
$ git add readme.txt
用命令git commit告诉Git,把文件提交到仓库:
$ git **commit** -m "wrote a readme file" #-m后面输入的是本次提交的说明,可以输入任意内容
上传文件流程汇总:
$ git add readme.txt
$ git commit -m "wrote a readme file"
$ git push -u origin master #第一次上传需-u,后续不需要
远程仓库绑定
本地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"
如果一切顺利的话,可以在用户主目录里找到.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文件的内容,点“Add Key”,你就应该看到已经添加的Key
注:
可以添加多个Key,即多台电脑提交
GitHub上免费托管的Git仓库,任何人都可以看到(但只有你自己才能改)
添加远程仓库
将本地已有文件推送到新建仓库步骤
- 创建新库
登录GitHub——Create a new repo——Repository name填入learngit—— Create repository
2. 已经连接好密钥的情况下,在需要推送的文件夹下初始化
git init
- 关联本地仓库
在本地的推送文件夹下运行命令:$ git remote add origin git@github.com:Sumsung524/learngit.git
如果连接远程仓库时连接仓库错误,需要解除连接关联的仓库:
删除关联的origin的远程库命令
git remote rm origin
- 把本地库的所有内容推送到远程库上(git push -u origin master)
$ git add *
$ git commit -u "first push"
$ git push -u origin master
- 一般提交 (git push origin master)
后续修改只需一般提交$ git add * $ git commit -u "提交描述" $ git push origin master
把本地master分支的最新修改推送至GitHub。
Git版本控制系统跟踪纯文本文件的每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而git无法跟踪二进制文件的变化,比如图片、视频、word文件等二进制格式文件。
从远程库克隆
1、登录GitHub,创建新的远程库。
2、本地库克隆
$ git clone git@github.com:Sumsung524/远程库名.git
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。
Git支持多种协议,包括https,但ssh协议速度最快。
我这里以码云为例,拉取同一仓库
ssh:
git clone git@gitee.com:ge_minglin/gitskill.git
https:
git clone https://gitee.com/ge_minglin/gitskill.git
版本回退
- 查看历史
$ git log #详细历史记录
$ git log --pretty=oneline #简短式历史记录
回退版本选择
版本退回Git中,HEAD表示当前版本,HEAD^表示上一版本,依次类推,回退版本次数较多时,可以使用HEAD回退次数,如HEAD100
- 回到上一版本
git reset --hard HEAD
只是在本地回退到上一次commit版本,并未推送至远程仓库。
可以使用git reflog
命令看到,HEAD指向上一个版本,也就是本地回到了上一个版本
但是origin/master,origin/HEAD还是指向的原来版本,也就是远程仓库还是原来的版本。
- 回到未来的版本
回到上一版本后后悔了怎么办,找到git log之前版本的commit id号 输入前五个字符即可
git reset --hard 1094a
如果之前没有使用git log命令,找不到commit id号,使用git reflog
,用来记录你的每一次命令,可以找到之前版本的commit id号
工作区和暂存区
工作区,就是你在电脑里能看到的目录
版本库,也就是工作区里面隐藏的目录.git,版本库中还有一个暂存区。
也就是git add添加文件的时候就是将文修改放到暂存区,然后用git commit提交更改,把版本库中暂存区的所有内容提交到当前分支。
常用命令
git status
git status 命令用于查看在你上次提交之后是否有对文件进行再次修改。
红色表示改动过但未上传文件,在工作区的文件;
绿色表示git add后本次新增文件。
git log
查看git commit历史记录
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上–pretty=oneline参数:
$ git log --pretty=oneline
git rm
1、使用rm命令将工作区的文件删除
2、使用git rm 文件名
和git commit
即可将与版本库同步删除。也可直接使用此步骤。
如果是误删,可以使用
git checkout
命令恢复。$ git checkout -- test.txt
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是 删除,都可以“一键还原”。
注意:从来没有被添加到版本库就被删除的文件,是无法恢复的!
git pull
把远程仓库修改的更新拉取下来。
将远程仓库的代码获取并合并,将远程仓库的文件获取下来,本地新增的文件不会删除。
如果远程仓库修改了,可以使用git pull下来保持更新,然后再将本地新增的文件push上去。
git reset –hard [commit id]
工作区文件回到某个版本,相比远程仓库的新增文件不会发生改变,但是远程仓库不会因命令而发生改变。
参考教程
学习教程:
Git Pro(中文版):https://git.oschina.net/progit/
Gitee帮助中心:https://gitee.com/help#article-header0
Github_Docs:https://docs.github.com/cn