Git学习

1.在机器上下载git

sudo yum install git

2.在自己的电脑上建立一个目录

mkdir learngit
cd learngit
pwd //显示当前目录路径

3.通过git init命令把当前目录变成Git可以管理的仓库


1.我们开始编写一个readme.txt文件

Git is a version control system.
Git is free software.

2.用命令git add告诉Git,把文件添加到仓库:

$ git add readme.txt

执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。

第二步,用命令git commit告诉Git,把文件提交到仓库:

$ git commit -m "wrote a readme file"
[master (root-commit) cb926e7] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt

当我们在库的文件被修改的时候
git status 命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。
git diff查看修改内容

被修改显示红色
不被修改显示

git log 回顾之前的版本
git  log  --pretty=oneline 经简化

git reset --hard HEAD^ 返回上一次修改的内容
git reset --hard HEAD^^ 返回倒数第二次修改的内容
git reset --hard HEAD~100 返回倒数第100次修改的内容

也可以根据commit 的版本号来切换

git reset --hard 4523211
Git提供了一个命令git reflog用来记录你的每一次命令:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。


你可以发现,Git会告诉你,git checkout – file可以丢弃工作区的修改:

$ git checkout – readme.txt

命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

mkdir *** 创建一个目录
git init  在指定目录内申明这个目录是我使用的库
vim readme.text 编写一个文件
git add readme.txt 将该文件存储到缓存区
git commit -m "This my first file "   将文件提交到本地库中  This my firsy file是提文件的名称

git status 查看我的仓库当前的状态
git diff 查看修改的状态
git diff ******* 查看该文件修改的内容

其中  使用git status 查看仓库当前状态的时候,红色文件表示修改了还没有提交到缓存区,绿色文件表示提交了并且已经提交到了缓存区 .当所有文件都提交完毕以后,使用git status 会显示无文件要提交,干净的工作区  
    使用 git diff  查看修改状态时如果返回空,则表示没有任何修改的内容,注意只要将修改后的文件提交到了缓存区,就不会查出修改内容

文件每上交一次,都会在库中存储一次记录,我们称他为版本日志,并且我们可以使用个git log 浏览这些版本,需要注意的是只要将文件上交到库中才会被记录,保存在缓存区的文件并不会被记录成版本日志,如果希望看到的是比较清晰的条目,可以输入git log --pretty=oneline
|
|
|
|
会出现
$ git log --pretty=oneline
3628164fb26d48395383f8f31179f24e0882e1e0 append GPL
ea34578d5496d7dd233c827ed32a8cd576c5ee85 add distributed
cb926e7ea50ad11b8f9e909c05226233bf755030 wrote a readme file
其中 append GPL 是提交的文件名字
3628164fb26d48395383f8f31179f24e0882e1e0 是commit id(版本号)是计算出来的 和SVN不一样




版本回退
git reset --hard HEAD^ 回退到上一个版本      HEAD表示当前命令   
git reset --hard HEAD^^ 回退到上上一个版本
如果窗口没有关掉,想要回到调整最初的版本,可以
git reset --hard +版本号  


git reflog 返回输出自己的每一条命令

插入小广告

修改自己的author 和email

> git config --global user.email "youremail@google.com" git config
> --global user.name "your name"
git checkout -- file   当你的文件修改之后并没有提交,可以使用该代码来撤销修改

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
当你将文件a提交到了库中以后,删除了自己电脑上的文件,这个时候你有两个选择
1.git rm filename 删除版本库中的文件
 git commit -m "重新提交版本日日记"   重新提交版本日记
 2.git checkout -- filename 恢复文件 (与版本库中的版本日记对比并且相匹配)




开始建立分布式版本库


1.回到主目录之下
$ ssh-keygen -t rsa -C "youremail@example.com"
会出现一个.ssh文件,文件中有id_rsa文件和id_rsa.pub文件,需要注意的是,id_rsa.pub是公共文件可以给别人看,但是id_rsa是私人文件,需要保密
2.cat id_rsa.pub文件,复制其中的内容放入github网站中的个人设置里面的ssh连接中
3.转到自己的github项目中,会有教程
克隆代码  

在主目录下个git clone+一个地址就OK拉

创建与合并分支

git checkout -b dev 创建一个新的分支div并且切换当分支div
git checkout  master 切换到master分支
git branch  列出所有分支

git merge 分支名   合并分支    用于合并指定分支到当前分支

合并方式:fast-forward 快进模式

删除分支:git branch -d 分支名

当两个分支都修改了同名文件的时候,合并的结果会发生冲突
这个时候 我们可以用  git status 来查看冲突的文件
这个时候我们可以直接打开该文件来查看和修改冲突文件的内容


Git用<<<<<<<=======>>>>>>>标记出不同分支的内容,我们修改如下后保存:


git log --graph命令可以看到分支合并图。




$ git merge --no-ff -m "merge with no-ff" dev
因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。
分支策略

在实际开发中,我们应该按照几个基本原则进行分支管理:

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

临时工作缓存

git stash 缓存
切换到 master 主支进行工作结束yihou
切回到dev
git stash list 查看缓存内容
1.git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
2.git stash pop 恢复并删除
如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。

多人协作


当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。

要查看远程库的信息,用git remote:

$ git remote
origin

或者,用git remote -v显示更详细的信息:

$ git remote -v
origin  git@github.com:michaelliao/learngit.git (fetch)
origin  git@github.com:michaelliao/learngit.git (push)

上面显示了可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址。



添加标签
git tag ***
查看标签
git tag
给指定的commit id添加标签
git tag v0.9 5131565
查看标签具体信息
git show v0.9

备注标签信息
git -a v0.9 -m "-a指定标签,-m指定备注信息"  5156156
删除标签
git -d v0.9
推送标签到某个远程
git push origin v0.9


一次性推送所有标签
git push origiin --tags

如果标签已经推送到远程,则需要县删除本地
$ git tag -d v0.9
再删除远程
$ git push origin :refs/tags/v0.9
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值