linux常用工具系列------git

git 工具 —– 用来配置代码库的,便于大家修改,上传,下载代码,而不至于引起代码混乱。

git安装

yum install git

git使用

使用分为两大部分,一是下载别人的代码,创建自己的分支(做修改),然后上传请求合并;二是上传自己的工程源码,创建仓库,作为开源项目提供给别人。
1、下载-创建分支-请求合并
git clone xxx.git —–git工程的url
(例如git://github.com/someone/some_project.git)
git 工程在https://github.com/上有很多
示例url地址
当然,也可以下载对应zip,tar,gz。。。自己解压

在创建自己的分支前,先加上自己的大名和邮箱,不然谁知道是你改的:
    git config --global user.name xxx
    git config --global user.email xxx@xxx.com 
git branch xxx_name 创建自己命名的分支
git branch  ----- 列出所有分支(包括主分支和新创建的分支)
git checkout xxx_name 跳转到其他分支

然后你可以切换到自己的分支里面做修改,改完后提交
git add  xxx --- 提交特定文件(新文件/被修改的文件)
git add  *.c --- 提交某一文件集合
git add 提交目录下所有文件,包括子目录下的文件
然而add并不能完成提交,add后的文件进入一种中间状态staged,还需要commit才能保证提交成功

git commit -----提交所有改动
git commit xxx ----提交某个文件的改动
当然你可以添加或者不添加说明信息
git commit -m "this is a great patch" xxx ---为某个文件添加说明
git commit -m "this is a big evolution" -a ----为整个分支添加说明

然而,提交之后并没有解决合并的问题,如果是在本地,其他人直接git clone 一份就好了。(clone之后可以看到所有的分支版本)如果是开源项目,那么需要上传上去,在下一步中说明。

要合并代码,无论是本地还是远端,首先要切换到你需要的base分支,然后
    git merge xxx_name ----版本名字 或者 版本号
当然你可以把一个分支合并到它的父亲,或者它的兄弟,或者它父亲的兄弟,或者它父亲的兄弟的儿子。。。-----这都是可以的!_!
然而问题来,很可能会发生冲突,冲突就会报错!!!
    Auto-merging xxx
    CONFLICT (content): Merge conflict in xxx
因此,报错后直接执行:
    git mergetool 获取更详细的冲突信息,然后手工修改后再进行git merge xxx

2、创建并上传开源项目
进入到自己的工程文件夹,
git init —–生成.git 用来控制版本
.git文件夹下有
.git文件夹
info是关于忽略文件的配置,即有的文件不提交
hooks是用来完成项目的自动部署
branches就是管理各个分支
logs是关于该git仓库的所有改动历史
objects 是关于git对象,git的运作原理即是采用git对象
refs 是git引用,即git对象的名字和对应的hash值

一般是上传到github上,所以首先github要有自己的仓库
可以查看http://blog.csdn.net/steven6977/article/details/10567719获取建立仓库详细信息
git remote add origin xxx.git---- 你自己的git 仓库url
然后git 就知道远端地址了
git push origin master 完成上传

备注

经常可能觉得某一版本不合适要回退:

git checkout xxx.rb 回退到某一版本
git reset nnnnnnnn (版本号) 不仅回退到某一版本号,而且该版本号之后的版本都被删除了
git tag xxx_name nnnnnnnn(版本号)给版本号一个名字,以后用版本号的地方都可以用该名字替换

经常觉得先下载git库的最新版本再与本地库合并太麻烦:

git pull == git fetch + git merge

经常需要看一下提交或者合并后的状态,看成功没有:

git status

经常需要上传源码到远端:

git push origin master
将本地的master分支(默认分支)上传到origin主机上,覆盖其master

经常需要看到底做了什么修改:

git diff xxx.c
然而这只能看相当于当前master的

经常需要看历史上的修改:

git log -p xxx.c ---查看详细修改
git log --pretty=oneline ----查看历史信息
当然如果你很欠。。。可以回退到以前任意版本:
git reset -hard HEAD~数字
git reset -hard HEAD^^^ ---回退到当前版本的上上上一个版本

经常需要在刚修改的文件上反复do,undo,redo:

staged阶段的undo / redo
git checkout -- filename  undo这个文件 (staged阶段,未commit)
如果你要redo这个修改,sorry,手动再改一遍

commit阶段的undo / redo
git add xxx
git commit
这时要undo:直接删文件rm -f xxx
如果又马上提交git commit,那么就需要git revert HEAD,然后再redo
所以要redo的前提是还没有提交,这时redo
git checkout -- filename  这个文件又恢复了

本文还在完善中,欢迎各位多多吐槽
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值