Git

1Git

a.是什么?

  git是一个快速的,开源的,分布式的版本控制系统,也就是git有一个本地的仓库,也有一个远程的仓库。所以相对来SVN来说,更加高效,SVN是依赖与服务器端的,然而Git是有一个自己本地的仓库,即使远程的服务端出了问题,或者在没有联网的状态下也是可以正常工作的。

      所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。 由于Microsoft的Word格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动的。

b.能干什么?

  源码备份

  版本管理

  协同工作

  冲突解决

  分支管理

  里程碑管理

  。。。。。

c.特点

  分布式:不需要中心仓库,但是如果需要交互,那还是需要中心仓库的

  Git的版本号都是生成一个哈希值,这样可以保证每个人做的不一样

  性能好(因为其大部分的工作都是在本地完成),分支与合并比较简单,对比快,存储空间少

d.Git的安装

  git在不同的操作系统上安装是不一样的。

  windows下的安装,主要安装msyGit和TortoiseGit

  安装msysGit,到官网下载git对应的版本没然后一路安装下来即可。安装后,能执行Git的shell命令,如果ls  cd等,注意:忽略大小写,带命令行补全功能

    msysGit  Shell的中文支持

      修改/etc/inputrc

        #disable/enable 8bit input

        set meta-flag on

      在/etc/profile的最后,加上

        aias ls='ls --show-control-chars'

  ubuntu

    apt-get install git

  安装ssh

    ssh-keygen -t rsa -C "xxxx@qq.com"

    多个用户的配置,不同的用户提交至不同的官网,如一个提交至github.com,一个提交至其他的官网

    1.ssh-keygen -t rsa -C "xxxx@qq.com" 在执行一遍,但是起一个不同的名称

    2.在~/.ssh/下有 id_rsa  id_rsa.pub  osc  osc.pub

    3.在.ssh下配置创建一个config文件   

Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa

Host git.oschian.com
HostName git.oschian.com
User git
IdentityFile ~/.ssh/os

e.Git与Svn的区别

 

 

 

对于SVN它是记录文件的更改信息,对于未更改的信息它是不做记录的。然而git是记录更改后的真个文件,对于没有修改的文件它是有一个指针指向原来的那个文件的。

git是一个分布式的,也就是即使远程server端宕机了,我们也是一个在本地正常工作的。

2.常用命令

git init:初始化某个目录为git管理的目录,其中有一个.git的隐藏目录,那就是本地的版本控制

git add xxx 把文件xxx添加到仓库 git add .表示将所有未添加的文件添加到仓库

git commit 把文件提交到仓库 -m "输入本次提交说明" 是将仓库中所有的文件提交

git status 查看状态

git diff 查看文件修改内容

git log a.txt查看提交信息
git log --pretty=oneline a.txt

git reset --hard HEAD^回退(一个^表示回退一步,两个^^表示回退两步。。。。 也可以用git reset --hard HEAD~加数字n表示回退n步)
如果回退很多步,就不能叫回退啦,就是穿梭啦,就得用git reflog a.txt查看id再用git reset --hard加上id

对于未add的 git checkout -- a.txt是回撤,并不是回退
对于已add但是未commit git reset HEAD a.txt可以再用git checkout -- a.txt
对于已add并且已commit git reset -hard HEAD^/或id

 

远程仓库
  git remote add origin git@github.com:XXX/xxx.git(这条指令的意思相当于origin绑定一个远程的项目地址)
  需要将XXX替换成需要提交的远程仓库的账户名
  需要将xxx替换成提交的项目名
  远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库
  git push -u origin master 把本地仓库的所有内容推送到远程库上
  master表示把当前分支master推送到远程
  -u 由于远程库是空的,我们第一次推送master分支时, Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
  以后每次本地提交就是git push origin master
  git clone git@github.com:XXX/xxx.git  

  

  GitHub给出的地址不止一个,我们还可以使用https协议的地址,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。

使用https除了速度慢以外,还有个最大的麻烦就是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能使用https

 

分支
  查看分支 git branch
  新建分支 git branch dev
  切换分支git checkout dev
  合并分支git merge dev 当合并分区出现冲突时,别轻易删除文件,应进入文件对文件进行修改
  删除分支git branch -d dev

 

posted @ 2018-08-29 21:01  刘丽刚  阅读(105)  评论(0)    收藏  举报