美文网首页
Git的使用

Git的使用

作者: 疯狂的蜗牛Dianna | 来源:发表于2018-06-06 17:32 被阅读0次

    1.Git是什么?

    Git是目前世界上最先进的分布式版本控制系统(没有之一)。

    2.CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢?

    集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
    集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟。

    分布式版本控制系统与集中式版本控制系统有何不同呢?首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
    和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
    在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
    当然,Git的优势不单是不必联网这么简单,后面我们还会看到Git极其强大的分支管理,把SVN等远远抛在了后面。

    CVS作为最早的开源而且免费的集中式版本控制系统,直到现在还有不少人在用。由于CVS自身设计的问题,会造成提交文件不完整,版本库莫名其妙损坏的情况。同样是开源而且免费的SVN修正了CVS的一些稳定性问题,是目前用得最多的集中式版本库控制系统。
    除了免费的外,还有收费的集中式版本控制系统,比如IBM的ClearCase(以前是Rational公司的,被IBM收购了),特点是安装比Windows还大,运行比蜗牛还慢。
    微软自己也有一个集中式版本控制系统叫VSS,集成在Visual Studio中。由于其反人类的设计,连微软自己都不好意思用了。
    分布式版本控制系统除了Git以及促使Git诞生的BitKeeper外,还有类似Git的Mercurial和Bazaar等。这些分布式版本控制系统各有特点,但最快、最简单也最流行的依然是Git!

    3.什么是版本库呢?

    版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

    4.配置github

    1.打开github网页,点开,如果你还没注册 那么此时你需要注册完成再进行下面的操作

    git1.jpg
    2.如果页面里已经有一些 key,就点「delete」按钮把这些 key 全删掉。如果没有,就往下看
    git2.jpg
    3.点击 New SSH key,你需要输入 Title 和 Key
    git3.jpg
    4.打开gitbash,复制并运行 rm -rf ~/.ssh/* 把现有的 ssh key 都删掉,这句命令行如果你多打一个空格,可能就要重装系统了,建议复制运行
    5.运行 cat ~/.ssh/id_rsa.pub,得到一串东西,完整的复制这串东西
    这就是公钥了
    6.回到上面第 3 步的页面,在 Title 输入「我的第一个 key」
    在 Key 里粘贴刚刚你你复制的那串东西(也就是公钥)
    7.点击 Add SSH key
    8.回到 Git Bash
    9.运行 ssh -T git@github.com,你可能会看到这样的提示:
    git4.png
    点击yes,然后回车
    10.然后如果你看到 Permission denied (publickey). 就说明你失败了,请回到第 1 步重来,是的,回到第 1 步重来;如果你看到 Hi chenyinjuan! You've successfully authenticated, but GitHub does not provide shell access. 就说明你成功了!
    • 一台电脑只需要一个 SSH key
    • 一个 SSH key 可以访问你的所有仓库,即使你有 1000000 个仓库,都没问题
    • 如果你新买了电脑,就在新电脑上重新生成一个 SSH key,把这个 key 也上传到 GitHub,它可以和之前的 key 共存在 GitHub 上
    • 如果你把 key 从电脑上删除了,重新生成一个 key 即可,替换之前的 key

    5.配置git

    git config --global user.name 你的英文名
    git config --global user.email 你的邮箱
    git config --global push.default matching
    git config --global core.quotepath false
    git config --global core.editor "vim"


    git5.png

    依次运行

    6.使用git

    使用 git 简单的有三种方法
    1.只在本地使用
    2.将本地仓库上传到 GitHub
    3.下载 GitHub 上的仓库
    1.本地使用

    1.1初始化

    1.创建目录作为我们的项目目录:mkdir git-demo-1
    2.进入目录 cd git-demo-1
    3.git init,这句命令会在 git-demo-1 里创建一个 .git 目录


    git6.png

    4.ls -la 你就会看到 .git 目录,它就是一个「仓库」,不要进去看
    5.在 git-demo-1 目录里面添加任意文件,添加了两个文件,分别是 rresumec.html 和 cssc/style.css

    • touch resumec.html
    • mkdir cssc
    • touch cssc/style.css
      6.运行 git status -sb 可以看到文件前面有 ?? 号


      git8.png

      Initial commit on master
      ?? css/
      ?? index.html
      这个 ?? 表示 git ,不知道你要怎么对待这些变动。
      7.使用 git add 将文件添加到「暂存区」
      你可以一个一个地 add
      a.git add index.html
      b.git add css/style.css
      你也可以一次性 add
      git add . 意思是把当前目录(.表示当前目录)里面的变动都加到「暂存区」
      8.再次运行 git status -sb,可以看到 ?? 变成了 A


      git9.png

    A 的意思就是添加,也就是说你告诉 git,这些文件我要加到仓库里
    9.使用 git commit -m "信息" 将你 add 过的内容「正式提交」到本地仓库(.git就是本地仓库),并添加一些注释信息,方便日后查阅
    你可以一个一个地 commit
    a.git commit index.html -m '添加index.html'
    b.git commit css/style.css -m "添加 css/style.css"
    你也可以一次性 commit
    a.git commit . -m "添加了几个文件"


    git10.png

    10.再再次运行 git status -sb,发现没有文件变动了,这是因为文件的变动已经记录在仓库里了。
    11.这时你使用 git log 就可以看到历史上的变动:
    commit f0d95058cd32a332b98967f6c0a701c64a00810a
    Author: dianna 970405352@qq.com
    Date: Thu Jun 28 22:30:43 2018 +0800
    12.以上就是 git add / git commit 的一次完整过程,可以看到,挺复杂的。原则上,你错了任何一步,就给我从头来一遍,做到你出错为止。

    1.2 文件变动

    如果我想继续改文件,应该怎么做呢?
    1.start cssc/style.css 会使用默认的编辑器打开 cssc/style.css(macOS 上对应的命令是 open cssc/style.css 在windows用户下是start cssc/style.css)
    2.然后我们在 cssc/style.css 里写入代码保存退出
    3.运行 git status -sb 发现提示中有一个 M


    git11.png

    这个 M 的意思就是 Modified,表示这个文件被修改了
    4.此时你如果想让改动保存到仓库里,你需要先 git add cssc/style.css 或者也可以 git add .注意,由于这个 css/cstyle.css 以前被我们 add 过,你往文章上面看,我们是 add 过 cssc/style.css 的,所以此处的 git add 操作可以省略,但我建议你使用 git 的前一个月,不要省略 git add。每一次改动,都要经过 git add 和 git commit 两个命令,才能被添加到 .git 本地仓库里。
    5.再次运行 git status -sb 发现 M 有红色变成了绿色别管它们的区别,记住先 add,再 commit


    git12.png
    6.运行 git commit -m "更新 cssc/style.css",这个改动就被提交到 .git 本地仓库了。
    7.再再次运行 git status -sb,会发现没有变更了,这说明所有变动都被本地仓库记录在案了。 git status -sb 是什么意思:git status 是用来显示当前的文件状态的,哪个文件变动了,方便你进行 git add 操作。-sb 选项的意思就是,-s 的意思是显示总结(summary),-b 的意思是显示分支(branch),所以 -sb 的意思是显示总结和分支。
    8.可以通过git log来查看历史提交记录
    git13.png

    1.3总结

    至此,我们来总结一下用到的命令
    1.git init,初始化本地仓库 .git
    2.git status -sb,显示当前所有文件的状态
    3.git add 文件路径,用来将变动加到暂存区
    4.git commit -m "信息",用来正式提交变动,提交至 .git 仓库
    5.如果有新的变动,我们只需要依次执行 git add xxx 和 git commit -m 'xxx' 两个命令即可。别看本教程废话那么多,其实就这一句有用!先 add 再 commit,行了,你学会 git 了。
    6.git log 查看变更历史

    2.将本地仓库上传到 GitHub

    如何将我们这个 git-demo-1 上传到 GitHub 呢?
    1.在 GitHub 上新建一个空仓库,名称随意,一般可以跟本地目录名一致,也叫做 git-demo-1


    git14.jpg
    git15.jpg

    除了仓库名,其他的什么都别改,其他的什么都别改,其他的什么都别改,其他的什么都别改,这样你才能创建一个空仓库

    2.点击创建按钮之后,GitHub 就会把后续的操作全告诉你,如图

    git16.png
    3.点击 SSH 按钮,不点击这个按钮,你就会使用默认的 HTTPS 地址。尽量不要使用 HTTPS 地址,因为 HTTPS 地址特别麻烦,每次要输入密码,而 SSH 不用输入用户名密码。为什么 SSH 不用密码呢,因为你已经上传了 SSH public key。还记得吗?不记得,翻到「配置 GitHub」章节。
    4.我们已经有本地仓库了,所以看图,图中下半部分就是你需要的命令,我们一行一行拷贝过来执行
    5.复制者两行代码:
    git remote add origin git@github.com:xxxxxxxxxxxxxxxxxxxx/git-demo-1.git
    git push -u origin master
    git17.png

    刷新当前页面,你的仓库就上传到 GitHub 了!

    git18.jpg

    3. 直接在 GitHub 创建一个仓库,然后下载到本地

    第三种用法,那就是直接在 GitHub 创建一个仓库,然后下载到本地。
    1.在GitHub 上新建一个仓库 git-demo-2,这次就不创建空仓库了,而是自带 README 和 Lisence 的仓库,创建截图如下:

    git19.png
    请按图中所示,填写一模一样的内容,然后点击创建按钮。
    2.这个仓库就会自动拥有三个文件:
    git20.png
    3.现在远程仓库已经创建好了,怎么下载到我们的本地(也就是我们的电脑上)呢?答案是使用 git clone 命令
    4.点击页面中唯一的绿色按钮「clone or download」,会看到一个弹出层
    git21.png
    5.打开 Git Bash,找一个安全的目录,比如 ~/Desktop 桌面目录就很安全:cd ~/Desktop。运行
    运行 git clone 你刚才得到的以git@github.com开头的地址,运行完了你就会发现,桌面上多出一个 git-demo-2 目录。
    git22.png
    我是以demo-11为例
    6.运行 ls -la 你会看到,远程目录的所有文件都在这里出现了,另外你还看到了 .git 本地仓库。这是你就可以添加文件,git add,然后 git commit 了
    三种方式它们分别是

    在本地创建仓库
    将本地仓库上传到 GitHub
    下载 GitHub 上的仓库到本地

    1. git clone git@github.com:xxxx,下载仓库
    2. git init,初始化本地仓库 .git
    3. git status -sb,显示当前所有文件的状态
    4. git add 文件路径,用来将变动加到暂存区
    5. git commit -m "信息",用来正式提交变动,提交至 .git 仓库
    6. 如果有新的变动,我们只需要依次执行 git add xxx 和 git commit -m 'xxx' 两个命令即可。别看本教程废话那么多,其实就这一句有用!先 add 再 commit,行了,你学会 git 了。
    7. git log 查看变更历史

    如何上传更新

    你在本地目录有任何变动,只需按照以下顺序就能上传:

    git add 文件路径
    git commit -m "信息"
    git pull (相信我,你一定会忘记这一个命令)
    git push
    下面是例子

    cd git-demo-1
    touch index2.html
    git add index2.html
    git commit -m "新建 index2.html"
    git pull
    git push
    然后你去 git-demo-1 的 GitHub 页面,就能看到 index2.html 出现在里面了。

    还有一些有用的命令

    git remote add origin git@github.com:xxxxxxx.git 将本地仓库与远程仓库关联
    git remote set-url origin git@github.com:xxxxx.git 上一步手抖了,可以用这个命令来挽回
    git branch 新建分支
    git merge 合并分支
    git stash 通灵术
    git stash pop 反转通灵术
    git revert 后悔了
    git reset 另一种后悔了
    git diff 查看详细变化
    学 git 命令都够你们学一周的,所以别妄想现在就掌握它,切记。

    相关文章

      网友评论

          本文标题:Git的使用

          本文链接:https://www.haomeiwen.com/subject/aaymdftx.html