git 原理学习

 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374027586935cf69c53637d8458c9aec27dd546a6cd6000
1.git与svn的区别就是git相当于svn服务端和客户端的集合,github这种服务就相当于很多个svn的server端互相同步,对于没有权限控制的git来说,更适合开源程序的开发。而svn等则适合公司内部商业软件的开发,毕竟权限这一条就足够让公司选择svn等集中式的版本控制系统了。
2.
3.常用名称
仓库(Respository)
仓库用来存放项目代码,每个项目对应一个仓库,多个开源项目则有多个仓库
star(收藏)
收藏项目到仓库,方便下次查看
fork(复制克隆项目)
完整复制别人的仓库到自己的仓库下,并且独立存在
pull request(发起请求给指定用户)
1.fork项目
2.修改自己仓库的项目代码
3.新建pull request
4.等到作者合并或者修改

Watch(关注) 可以查看对方的动态
Issue(事务卡片) 新问题大家一起讨论使用
4.qq邮箱需要设置白名单才能收到邮件

5.创建仓库后的主页:

6.git是免费的、版本管理软件
7.git 仓库:最终确定文件保存到仓库,成为一个新的版本,并且对他人可见
暂存区:暂存已经修改的文件最后统一提交到git仓库中
工作区:添加、编辑、修改文件等操作
git status : 查看文件的当前状态
git add aa.java : 将文件从工作区添加到暂存区
git commit -m "提交描述": 将文件从暂存区提交到git 仓库

配置git用户信息:
1.设置用户名:
git config --global user.name " linzhixian "
2.设置用邮箱
git config --global user.name " linzhixian@rk.com "
3.查看设置
git config --list
8.初始化git仓库:
    git init      会生成 .git 隐藏文件
9.提交文件
touch aa.java 或者vim aa.java
git add aa.java //将文件添加到暂存区
git commit -m "add file aa.java" //将文件添加到git 仓库
git status //查看当前工作区的提交情况

10.删除文件
rm .\test.java
git rm test.java
git commit -m "delete"

11.从git hub下载文件本机:
向服务端提交文件:
git push //有配置name和邮箱可以直接用


12.远程提交失败时可以使用
origin  https:// linzhixian@rk.com:yy6894713@github.com /linzx2015/linzxGitRepository.git (push)



git 解释:
2.1bisect Find by binary search the change that introduced a bug 相当于二分查找
例子: grep   1013  file .txt   得到一串文字,但是不够
  $ git bisect start   在使用start之后,没有找到想要的结果(没有任何输出)
      $ git bisect bad  标记为坏点
       $ git bisect good 7c0dcfa   标记为好值,并作提交 (效果等于右边)  git bisect start master 7c0dcfa

2.2clone Clone a repository into a new directory
    复制项目的两种方式:
      git  clone   robin.hu @ http://www.kernel.org/pub/scm/git/git.git
      如复制ota android项目:git clone ssh://git@10.10.10.29/rk/platform/packages/apps/RKUpdateService -b rk29/mid/4.0.1_r1/develop( 或rkplatform_4.1)
    也可以通过http 协议来访问:
     git clone http://www.kernel.org/pub/scm/git/git.git

2.3fetch Download objects and refs from another repository
    git fetch :相当于是从远程获取最新版本到本地, 不会自动merge
git fetch origin master(从分支获取最新的代码)
2.4 pull Fetch from and integrate with another repository or a local branch
git pull origin master 从远程获取最新版本 并merge 到本地
 
2.5init Create an empty Git repository or reinitialize an existing one
  如果在GitHub项目初始化之前,数据已经存在于本地版本库中,用
       mkdir project_dir
       cd project_dir
       git init
2.6 merge Join two or more development histories together
当前分支为master,合并sofia分支,方法1,方法2均可
1.git checkout master  
git merge sofia(如果没有冲突,直接merge完成;冲突就会有提示对应文件出错)。

2.git branch watch(watch为分支名)
git checkout watch
git checkout -b watch master(将watch和master进行合并)

2.7 mv Move or rename a file, a directory, or a symlink
  git mv aa.txt TEST 将aa.txt文件移动到TEST
相当于
mv aa.txt TEST
git rm aa.txt
git add TEST

  要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提
使用git rm aa.java 然后git status 查看 当前状态,再git comit

push Update remote refs along with associated objects rebase Forward-port local commits to the updated upstream head reset Reset current HEAD to the specified state rm Remove files from the working tree and from the index show Show various types of objects status Show the working tree status tag Create, list, delete or verify a tag object signed with GPG
2.没有安装git时用sudo git-apt install git 旧版git仓库:sudo git-apt install git -core,
非Ubuntu下的linux版本安装git: 先从Git官网下载源码,然后解压,依次输入: ./config make sudo make install 这几个命令安装即可。
3.建立自己的版本库(repository):
$ mkdir learngit   //创建目录用于作为自己的项目仓库
$ cd learngit      
$ pwd             //显示当前目录,我的为/data2/lzx
$git init         //初始化自己的版本库,正式完成版本库创建,在目录会出现一个 .git目录,但是隐藏的,可以通过ls -ah显示
4.提交自己的文件到版本库:
$vi read.java //添加自己要添加的内容
$git add read.java //添加文件到仓库,实际上是将文件存到暂存区
$git commit  -m "lzx:commit read.java"   //提交文件到仓库,字符串为说明的具体内容,可能会add多个文件,然后一次性提交。
  $git status                 //查看仓库当前的状态,这段时间提交了什么内容
  $git diff .                  //查看当前内容的有哪些新的修改,git diff read.java  查看read.java文件近期有哪些修改

5.版本控制:
  $git  log                     //查看旧版提交的历史记录,简略显示提交内容,git log  --pretty=oneline  单行显示提交记录
  $git  reset --hard   HEAD^      //HEAD对应的版本号,可以根据版本号,退回之前版本,也可以返回最新版本
   lzx@ubuntu:~/pinwang-sofiaGms/cts/vendor/intel$ git  reset --hard  HEAD^2(第3个)
  git reset --hard HEAD  回退到当前点      git reset --hard HEAD  回退到上一个点
  $cat  read.java          // 显示当前文件版本   
  $git  reflog               //查看未来执行的命令,被修改掉,想反悔的
6.暂存区
 1.add内容到暂存区:
     
  2.$  git commit -m "understand how stage works" //将文件提交
  3.提交后文件的状态   
            
4.对文件read.java而言,第一次修改->git add->第二次修改->git commit,仓库只负责将第一次修改的add提交到仓库。第二次修改没有提交。

7.撤销修改:
$git checkout --read.java //checkout单个文件, git checkout . 将当前目录的修改checkout
&git add read.java //提交文件到暂存区,这时需要git reset    HEAD  read.java 来将单个文件恢复到之前状态。HEAD代表最新的版本

8.删除文件:
$rm read.java //直接删除文件
$git rm read.java //使用git完成删除
$git commit -m "lzx:delete read.java" //提交修改的内容说明

9.远程仓库:
  1.在winscp上登陆,准备好自己的帐号(最好跟公司邮箱帐号相同),然后在winsct上输入openssl passwd生成你的加密密码,向黄涛申请。
  2.申请完后,在帐号kaka下的.ssh目录中找到id_rsa.pub文件,打开复制公钥(全部), $ ssh-keygen -t rsa - C "youremail@example.com" //创建SSH Key, 用户主目录里找到 .ssh 目录,里面有 id_rsa id_rsa.pub 两个文件,这两个就是SSH Key的秘钥对, id_rsa 是私钥,不能泄露出去, id_rsa.pub 是公钥。
  3.登陆https://10.10.10.19网站,输入向黄涛申请好的帐号,然后配置preference下的full name和公司邮箱,将公钥复制到对应的public key下
  4.以配置好的帐号登陆,从服务器上下载最新的代码。

10.添加远程仓库
1.根据GitHub的提示,在本地的 learngit 仓库下运行命令:
$ git remote add origin git@github.com:lzx/learngit.git      //蓝色字体要改成自己的
   2.  git push -u origin lzx        //将本 地服务器lzx内容推送到远程服务
   3. $ git clone git @github . com: michaelliao/gitskills.git //克隆一个本地库,然后进入自己的目录看是否有read.md文件
              
11. git checkout -b dev      创建dev分支,然后切换到dev分支, 相当于git branch dev       git checkout dev
     查看分支: git branch
    创建分支: git branch <name>    //切换分支,当出现什么问题都解决不了的时候,可以考虑切换分支,回到最开始的点
  git          
    切换分支: git checkout <name>
    创建+切换分支: git checkout -b <name>
    合并某分支到当前分支: git merge <name>   //git merge --no-ff -m "beizhu" hebingneirong
   lzx@ubuntu:~/pinwang-sofiaGms/cts/build$ git merge --no-ff android-cts-5.1_r2
   GNU nano 2.2.6        File: /data2/lzx/pinwang-sofiaGms/cts/build/.git/MERGE_MSG  

    删除分支: git branch -d <name>
12.git merge  aa      将aa分支合并到当前分支
    git branch -d aa  将aa分支删除掉
  git log --graph --pretty=oneline --abbrev-commit  查看分支情况
  git stash 保存当前工作现场         git stash list 显示保存区有哪些文件
13. git stash apply 恢复文件等,stash内容并不删除,用 git stash drop 来删除stash文件的内容。
git stash pop //恢复同时删除内容
14. $ git stash apply stash@{ 0 } //恢复指定的stash
git remote  查看远程库的信息   git remote -v  显示详细的信息  
     git push origin master   把本地分支提交到远程仓库,origin为远程仓库,master为本地仓库

15. git tag v1. 0 //打上标签,类似备注
git tag v 0 . 9 6224937 //6224937为对应的日志号,对该日志加标签
  git push origin <tagname> 可以推送一个本地标签;
  git push origin --tags 可以推送全部未推送过的本地标签;
  git tag -d <tagname> 可以删除一个本地标签;
  git push origin :refs/tags/<tagname> 可以删除一个远程标签。

16.从具体地址克隆项目: git clone git@github.com:michaelliao/bootstrap.git(具体地址)
   git config --global color.ui true 修改文件颜色

git revert HEAD                  撤销前一次 commit
    * git revert HEAD^               撤销前前一次 commit
    * git revert commit (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值