git命令

GIT上手入门

一:回顾SVN:


 

二. GIT简介

Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。[1]

Git是 LinusTorvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Torvalds开始着手开发Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如 最近就迁移到 Git 上来了,很多 Freedesktop 的项目也迁移到了 Git 上。

 

三.GIT的特点:

1.GIT分布式管理。与SVN不同,每次Clone下来的版本是完整的版本库,包含所有历史记录和版本信息。

2.Git的强大之处是分支和合并。

3.管理大型工程的效率非常高。例如:SVN下载Adroid工程要1个工作日,GIT只需要10分钟。

 

四:HAN350项目快速使用。

gitclone wxm@gitserver:/home/git/work/HAN350.git  //从服务器下载A20项目代码。

gitadd .                           //add修改代码后

gitcommit -m "fix bug of xxx"      //提交到本地版本库

gitpush origin master              //从本地版本库提交到服务器。

 

gitpull origin master              //从服务器同步代码。

 

 

五.常用的GIT命令:

 


Working DIR:    本地工程路径.

local repository:  本地版本库.

remote repository : 远程版本库.

 

 

GIT命令描述:

 

git clone:从服务器端clone工程

每次Clone下来的版本是完整的版本库,包含所有历史记录和版本信息。

 

example:

git cloneluohuanran@gitserver:/home/git/work/HAN350.git

Cloning into 'HAN350'...

wxm@gitserver's password:

remote: Counting objects: 288828,done.

remote: Compressing objects: 100%(194230/194230), done.

remote: Total 288828 (delta 80612),reused 288825 (delta 80612)

Receiving objects: 100%(288828/288828), 3.20 GiB | 11.61 MiB/s, done.

Resolving deltas: 100% (80612/80612),done.

wxm@kk-android:~/A20_PRJ/HAN350/HAN350$git branch -a

* master

  remotes/origin/HEAD -> origin/master

 remotes/origin/master

 

git remote -v 查看远程版本库(remote repository)。

origin wxm@gitserver:/home/git/work/HAN350.git (fetch)

origin wxm@gitserver:/home/git/work/HAN350.git (push)

  


gitadd:是把当前Working DIR里面更改或者新增的文件加入Index中,这也是提交之前所需要执行的一步.

    gitadd .

git add -f 文件路径   //忽略所有. gitignore

 

gitrm:从当前的工作空间和index中删除文件。

 

gitcommit:提交当前Working DIR的add内容,到localrepository

 

gitstatus: 查看项目中所有文件的状态。哪些被修改,哪些未提交local repository


git push:把本地commit到localrepository的代码更新到remoterepository远程版本库中。

  

 例如:git push originmaster

 

gitpull:把remoterepository的更新到local repository中,并merge到本地。

例如:

   git pull origin master

 

gitfetch: 把remoterepository的更新到local repository中,不会自动merge.

    例如:

git fetch origin master

git log -pmaster..origin/master

git merge origin/master

 

gitlog:查看历史日志,该功能类似于SVN的log

     例如:

git log -p -2  \\ git log -p -2 //-p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新:

 

gitdiff:查看当前的差异

git diff:       查看working Dir与index的差别的。

git diff --cached:查看index与local repository的差别的。

git diff HEAD:  查看working DIR和local repository的差别的。

git diff origin/master master

 查看local repository主分支和remoterepository主分支的差别。

 


 


六,分支管理:

 

目标:团队成员从主分支(master)获得的都是处于可发布状态的代码,而从开发分支(develop)应该总能够获得最新开发进展的代码。


 

为了便于解决BUG,开发新功能,可以建立“辅助分支”。

“辅助分支”的最大特点就是“生命周期十分有限”,完成使命后即可被清除。

 

分支操作的常用命令:

 

git branch <分支名>    :创建分支

    

git checkout <分支名>  :切换分支

   git checkout master            //切换到主分支。

   git checkout -b <分支名>       //创建并切换分支。

   git checkout master file_name   //取出主分支的某个文件,覆盖你的工程

   git checkout .               //取出当前分支的最新代码,覆盖你的工程

   

git merge: 分支合并

   比如,如果要将开发中的分支(develop),合并到主分支(master),

   git checkout master。

   git merge develop。

   如果有冲突,会提示你,调用git status查看冲突文件。

   解决冲突,然后调用git add或gitrm将解决后的文件暂存。

   所有冲突解决后,git commit 提交更改。

 

git branch -d: 删除分支

   执行git branch -d <分支名>

   如果该分支没有合并到主分支会报错,可以用以下命令强制删除git branch -D <分支名>

 

git cherry-pick <commit id>

对已经存在的commit 进行apply其他其他分支上用法

首先在mater分支修改,然后commit

git checkout old_cc  //切换分支

git cherry-pick 38361a68     # apply 某个commit

 

 

分支和Patch的结合使用

对于有的大型的LINUX开发者,普通开发者从软件仓库clone下代码,然后编写代码,做一个Patch, 最后用E-mail发给项目的维护者。

我们的项目成员之间,也可以通过发Patch,方便合并代码。

 

张三:

git branch FixBug    // 新建分支

git checkout FixBug  // 切换分支

修改代码

git diff master >patch //生成Patch

把patch email给李四。

 

李四:

git branch PatchTest    // 新建分支,避免搞乱主分支。

git checkout PatchTest  // 切换分支

git apply patch         //打patch

git commit -a -m "apply xxx patch"  //提交到本地代码库

 

七,版本回退:

 

git checkout commit_id //回退到某个历史版本,并生成一个临时分支。

git reset --hard commit_id //回退到某个历史版本,

git pull       //返回最新版本

 

 

 

八,把原厂SDK的git工程提交到康佳的git工程上。

在原厂的git工程里面操作步骤:

git remote -v   //显示remote

git remote rm origin

git remote add origin 康佳的git工程。

git push origin 分支

 

 

 

九,把整个git工程,迁移到另一个新建立的git工程。

git push --mirror 新的git工程

例如:

git push --mirror git@gitcafe.com/username/newproject.git

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值