git +repo使用技巧

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/WEINILUO/article/details/48266581
                                        <div class="markdown_views">
            <h1 id="git"><a name="t0"></a>git</h1>

1 git 使用

1.1 git 安装

~$: sudo apt-get install git
  
  
  • 1

1.2 git 初始化

~$: git init
~$: git remote add origin https://github.com/username/xxxx.git 
~$: git config --global user.name "yourname"
~$: git config --global user.email youremail@example.com

  
  
  • 1
  • 2
  • 3
  • 4
  • 5

1.3 git 常用命令

    git status        查看仓库状态,显示上次递交之后本地的文件变动以及临时递交,注意这里比较的是同一节点间的变动。
    git diff         尚未缓存的改动
    git diff  --cached 查看已缓存的改动
    git diff  HEAD     查看已缓存的与未缓存的所有改动
    git log          查看历史记录
    git log origin/<branch-name> 查看远程分支递交记录
    git stash        把当前的工作隐藏起来 等以后恢复现场后继续工作
    git stash list   查看所有被隐藏的文件列表
    git stash apply  恢复被隐藏的文件,但是内容不删除
    git stash drop   删除文件
    git stash pop    恢复文件的同时 也删除文件
    git remote       查看远程库的信息
    git fetch        更新远程数据到本地
    git merge        合并本地分支
    git pull <remote> <localbranch>   同步远程代码到本地
        实际上git fetch+git merge=git pull动作
    git push origin master  Git会把master分支推送到远程库对应的远程分支上
        push -u origin master 注意-u参数,表示选择upstream,一个branch可以对应多个upstream,-u参数是选择你的默认upstream,以后使用git fetch/git pull/git rebase时就可以不用加参数了,一般是使用在第一次git push时 。官方文档表示参考git config的branch.<name>.merge的相关内容
    git add -A .     所有变更文件添加到缓存区
    git commit       将缓存区的变更更新到仓库
    git show <commit checksum>   显示commit校验和对应的修改
    git reset  HEAD^ 撤销至上个递交记录
    git reset  --hard <commit checksum> 
                     撤销/回退到相应checksum的commit,注意当前代码的备份,该操作会覆盖当前的代码
    git rm           将文件从缓存区移除

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

2.git 本地使用流程

    git clone git@github.com:username/uboot.git //克隆远程代码到本地
    git add -A . //将本地代码的变更添加到git缓存中
    git commit -m "add uboot" //提交变更到本地git
    git push origin master //同步到远程主机
    在远程仓库为空,且本地仓库有新文件的情况下可以使用一下方式:
    git init
    git add .
    git commit -m "xxxx"
    git remote add origin git@github.com:username/uboot.git
    git push -u origin master
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3.fork项目相关操作

1.更新自己 Fork 的代码项目和原作者的项目进度一致的方法:
    原项目地址:https://github.com/gozfree/libraries.git
    1)将fork到github上的项目clone到本地
        git clone https://github.com/feisonzl/libraries.git
        cd libraries
    2)添加 gozfree 项目的地址,也就是主项目的 remote 地址
        git remote add gozfree https://github.com/gozfree/libraries.git
        git fetch gozfree
        git merge gozfree/master
    3)将原作者的项目跟新到我的github中
        git commit -m '更新到原作者的主分支的进度'
        git push origin
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

4.git patch生成和使用

    1.git diff方法
    git diff > name.patch  生成patch
    git diff --cached > name.patch
    git diff branch-name --cached > name.patch
    git apply name.patch 应用patch

    2.git format-patch
    git format-patch -M master 生成patch
    git am ***.patch 应用patch
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

5.git status问题:

clone到用户端的文件被更改权限后,git status会爆出很多modify
解决方法:更改.git\config文件中的filemode=true改为false

  
  
  • 1
  • 2
  • 3

6.git 使用详细教程

Git 使用详细教程

repo

1.repo常用命令

1.repo init –u URL [OPTIONS] //检出清单版本库
    options:
        -u:指定一个URL,其连接到一个maniest仓库
        -m:在manifest仓库中选择一个xml文件
        -b:选择一个maniest仓库中的一个特殊的分支
    例:repo init -u 172.16.16.121:manifest -b msm8909 -m qcom_msm8909.xml 
2.repo sync //同步版本库
3.repo start  <newbranchname> [--all | <project>…]  //创建并切换分支
4.repo checkout     //切换分支
5.repo branches     //查看分支
6.repo diff         //查看工作区文件差异
7.repo stage        //把文件添加到index表中
8.repo status       //查看文件状态

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

2.repo常用操作流程

    repo init -u gitserver:manifests.git -m xxx.xml (xxx.xml文件决定初始化的项目)
    repo sync 
    repo start xxx --all //创建xxx项目对应的分支 (--all意为将所有模块都归为当前xxx分支下)
    git add xxx
    git commit -m "xxx"
    repo upload
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.repo切换分支

    cd .repo/manifests
    ls //查看xxx.xml文件
    cd .. //回到上级目录
    ln -s  manifest.xml manifests/QK_CM298_EXER.xml //更换manifest.xml的软连接
    cd ..
    repo sync //同步代码
    repo start xxx--all//建立本地分支
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4. 自己踩过的坑

1.部分子目录中的文件push后,远程依然没有的情况 

    最近在使用git push时,发现怎么push,远程都无法同步本地子目录下的文件,困扰了我两天时间,最后发现是因为子目录中也有.git文件夹,因为该目录是我之前pull的别人的,一直没注意。这种情况,push是不会同步含有.git文件夹的子目录的。
  
  
  • 1
  • 2



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值