Git与Repo理解与常用指令使用整理

Git

Git是分布式的版本管理器与集中式的版本管理器有很大区别。

集中式版本管理器的版本是集中存放在中央服务器的,所以工作时要先从中央服务器中下载最新版本,工作结束后再将版本上传到中央服务器,因此对工作网速有极高要求,且因为所有版本都存放在中央服务器中安全性较低。

分布式版本管理器没有中央服务器(为了方便推送修改可以设置一台充当中央服务器的电脑),每一个人的电脑上都有一个完整的版本库,这样工作时可以不连接网络,而且即使电脑出了问题数据不能回复,也可以从别人那里去拷。除此之外,Git还有强大的分支管理。

 

一、管理修改:

git init  将当前目录初始化为Git管理的版本库

版本库内所有文件的修改与删除都会被Git追踪

 

添加文件到版本库有俩个步骤:

1)git add filename    将文件从工作区提交到暂存区

2)git commit –m “” 将文件从暂存区提交到版本库里的当前分支  –m后添加的是对本次commit的说明

需要注意:一次添加过程中add可以多次使用,commit只能使用一次如果在commit之后在add修改 该次add无法被commit提交

 

git status 查看当前版本库状态 文件被修改没有add 文件被add没有commit

git diff   查看修改内容

需要注意如果是之前没有被add过的新文件 gitstatus无法知道它的状态

 

git log  查看提交历史与各版本的版本号

git reset --hard commit_id 回到版本号为commit_id的那个版本

git reflog 查看命令历史 用于回到找不到版本号的版本

需要注意:head指针指向的是当前版本 转换版本只是移动了头指针的指向

 

git checkout --filename 撤销工作区的修改  回到最近一次add 或者 commit 之后

git reset – filename    撤销暂存区的修改 即把撤回add操作 注意撤销了暂存区的修改后要对工作区再次进行修改

 

git rm file name       用于删除文件删除之后要commit

git checkout –filename 用最新版本库里的文件恢复被删除的文件

注意:checkout的实质是用最新版本库里的版本替代工作区的版本

 

二、远程库:

1.现有本地库添加远程库

首先创建一个仓库

1)登录GitHub

2)找到右上角中的按钮“create a newrepo”

3)在Repository name中填入远程库名

4)最后点击下方的按钮“Createrepository”

1)git remote add origin git@github.com:GitHub账号名/远程库.git  关联远程库

2)git push –u origin master 在第一次把本地库的内容推送到远程库时要使用-u参数 让本地的master分支与远程库的master分支关联起来,为以后的推送提供便利。在以后本地的版本库进行了修改并提交了只要通过指令git push master就可以进行内容推送

需要注意:第一次进行clone和push操作时,会受到警告:已经将这个GitHub的公钥加入本机的信任列表。这个公钥用于SSH连接。(1.远程主机收到用户的登录请求,把自己的公钥发给用户。2.用户使用这个公钥,将登录密码加密后,发送回来。3.远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。)

 

2.没有本地库,就先创建远程库,再克隆一个本地库。

创建远程库流程:

1)登录GitHub

2)找到右上角中的按钮“create a newrepo”

3)在Repository name中填入远程库名

4)将下方勾选放到Initialize thisrepository with a README(使GitHub自动创建一个README。md)

5)最后点击下方的按钮“Createrepository” 

 git clone git@github.com:GitHub账号名/远程库.git (只开放http端口可以使用https://github.com/GitHub账号名/远程库.git  )克隆一个本地仓库

 

三、分支管理:

 

git checkout –b branchname 创建并切换到创建的分支

git branch branchname     创建分支

git checkout branchname  切换分支

git branch    查看当前分支(所有分支都会被列出,当前分支前面会有一个*)

git merge branchname 将分支的操作结果合并到master分支上去

git branch –d branchname 删除分支

当master分支也被修改,git无法自动合并分支时需要手动修改分支合并冲突

1)用git merge branchname 尝试合并

2)如果提示有冲突,先用git status 找出有冲突文件

3)  在打开该文件手动修改冲突

4)修改完成后用add和commit提交

 

分支合并的记录:

git merge --no-ff  –m ””branchname 在合并分支后生成一个新的commit –m后面添加的是对本次提交的说明 –no-f表示禁止使用Fast forward目的是为了留下合并的历史

需要注意:在实际开发过程中不应该在master上面操作,应该建立自己的分支来进行操作以保证master分支的稳定。     

 

  Bug的临时分支:

当前分支的任务还没完成时,需要在其他分支修复bug,可以用git stash 保存分支当前工作内容然后切换到需要修复bug的分支为bug创建临时分支。当bug修复合并bug的临时分支后,再次切换一开始工作的分支,用gitstash pop恢复现场

Repo

Repo 是为了管理多个Git库而开发的Python脚本,是以Git为基础的代码管理工具,其目的是为了让Android开发者更有效的利用gitRepo 命令是一段可执行的 Python脚本,用于既能保证庞大项目的子项目之间相互独立,避免子项目之间的相互影响。  

相关概念:AOSP(Android开源项目):非常庞大的项目,由不同子项目R1,R2,…Rn组成, 

 

 相关指令:

  Repo init 在当前目录下安装Repo     

参数理解:

-u:指定Manifest库的Git访问路径。  
-m:
指定要使用的Manifest文件。(Manifest是一个目录文件提供了需要下载的代码的路径
-b:
指定要使用Manifest仓库中的某个特定分支。 
repo-url:指定要检查repo是否有更新的远端repoGit库的访问路径。 
no-repo-verify:指定不检查repo库是否需要更新。 

如:repo init -u git://android.git.kernel.org/platform/manifest.git

                                                             

Reposync [project-list]

   下载最新本地工作文件,更新成功,这本地文件和repository 中的代码是一样的。 可以指定需要更新的project ,如果不指定任何参数,会同步整个所有的项目。

   如果是第一次运行 repo sync ,则这个命令相当于 git clone ,会把 repository 中的所有内容都拷贝到本地。如果不是第一次运行 repo sync , 则相当于 git remoteupdate ;  git rebase origin/branch .  repo sync 会更新 .repo 下面的文件。 如果在merge 的过程中出现冲突, 这需要手动运行  git  rebase –continue

如果不想手动可以代码目录下建立一个sh文件(Linux脚本文件)

 

repo sync异常退出后自动重新执行repo sync.sh文件

#!/bin/bash
echo
¨================startrepo sync===============¨

repo sync -f -j10

while [ $? == 1 ]; do
echo
¨================syncfailed, re-sync again=============¨
sleep 3
repo sync -f -j10
done

 

为了降低网络带来的影响可以应先可以在repo sync之前,输入

export  http_proxy="http://你的代理IP:代理端口/"

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值