Git简单教程
本人首次发表和总结自己学的东西,有不好的地方请指出
一、git上传项(安装Git)
Git上传项目有两种方法:一种https方法,一种ssh方法
https方法:
1、首先登录github.com注册账号创建一个newrespository
2、安装git,教程自行百度搜索
3、在本地项目上右击git base here在命令行中输入git init项目加入git管理
4、输入git add . (不要忘记“.”),将项目所有文件内容添加到git中
5、输入git commit –m “first commit(提示信息随意输入)”
6、输入git remote add origin https://github.com/youname/xiangmuming.git,链接你的github仓库
7、输入git push –u origin master,上传你的项目到github,会要求输入你的github账号和密码
到此首次上传提交项目成功
注意:
另外,这里有个坑需要注意一下,就是在上面第七步创建远程仓库的时候,如果你勾选了Initializethis repository with a README(就是创建仓库的时候自动给你创建一个README文件),那么到了第九步你将本地仓库内容推送到远程仓库的时候就会报一个failed to push somerefs to https://github.com/guyibang/TEST2.git的错。
这是由于你新创建的那个仓库里面的README文件不在本地仓库目录中,这时我们可以通过以下命令先将内容合并以下:
git pull --rebase origin master
这时你再push就能成功了。
Git常用命令
Git status 查看工作区的状态
Git diff 查看修改过的内容
二、时光穿梭机
一、版本回退
输入git log(或者git log –pretty=oneline)查看提交历史
输入 git reset --hard HEAD^(^回退上一个版本,^^回退前一个版本,100输入HEAD~100),或者输入 git reset --hard commit_id(提交历史id)
输入git reflog查看命令历史,以便确定要回到未来的哪个版本
二、工作区和暂存区(stage)
文件修改之后首先添git add +文件名到暂存区(stage),然后提交git commit –m “提交注释”
三、管理修改
Git跟踪并管理的是修改,而非文件
理解Git如何跟踪修改的:每次修改,如果不git add到暂存区(stage),那就不会加入到commit中
四、撤销修改
1、命令git checkout --readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
2、如果已经添加到暂存区中可以使用git reste HEAD file(文件名)可以把暂存区的修改撤销。
git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本
3、如果已经提交,可以进行版本回退操作
五、删除文件
从版本库中删除:
rm filename -> git rm filename -> git commit –m “注释”
删错了:git checkout filename
三、远程仓库
生成SSH key :ssh-keygen –T rsa –C “ 邮箱”;登录github设置ssh key
一、添加远程仓库
申请github账号,创建一个项目
本地git仓库与远程仓库关联
Git remote add origin git@github.com:yougithubaccount/xiangmu.git
本地项目推送到远程仓库 git push –u origin master (首次推送添加 –u,以后推送不再需要-u)
,推送master分支的所有内容
二、克隆
使用git clone + 地址
Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。
四、分支管理
一、创建与合并分支
1、创建并切换分支:git checkout –b dev
Git checkout 命令加上-b参数表示创建并切换,相当于两条命令
Git branch dev (创建)、git checkout dev(切换分支)
2、查看当前分支 git branch (列出所有分支,分支前*号表示)
3、工作区的操作正常操作
4、合并分支:
首先切换到主分支master,
执行git merge dev 用于指定分支合并到当前分支
5、删除分支: git branch –d dev 删除后查看分支git branch
合并冲突解决方案:
6、合并产生冲突,在主分支手动解决冲突,之后重新提交,合并完成
Git log --greph查看分支合并图(或者git log --graph--pretty=oneline --abbrev-commit)
二、分支合并策略
通常情况下,合并分支,如果可能,git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果强制禁止Fast forward模式,git就会在merge时生成一个新的commit,这样从分支历史上就可以看出分支信息了。
--no-ff方式的git merge(合并分支)
合并输入(禁用fast forward模式):git merge --no-ff –m “注释” dev
(因为本次合并要产生一个新的commit,所以加上-m参数,把commit描述写进去)
三、bug分支
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
存储当前工作状态:git stash
查看存储的工作状态列表:git stash list
取回工作状态:
1、git stash apply(取出最新存储工作状态恢复后,stash不会删除),git stash drop(删除)
2、git stash pop(恢复工作状态的同时,删除stash信息)
恢复指定的工作状态:git stash apply stash@{0}
强制删除分支:
创建一个分支,添加一个新的功能,待开发完毕后,接到任务不需要该功能,然后我们删除分支git branch –d dev,这是提示我们删除失败,因为dev分支没有合并,需要强制删除,输入命令:git branch –D dev(把“-d”换成“-D”就是强制删除)
五、分支管理
一、查看远程库信息
1、 查看远程库信息:git remote
2、 查看详细信息:git remote –v
二、推送分支
1、 推送分支:git push origin master(主分支,其他分支git push origin dev)
三、抓取分支
1、创建远程分支:git checkout –bdev origin/dev
2、本地分支与远程分支建立关联:git branch --set-upstream dev origin/dev
五、标签管理
发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。
Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。
Git有commit,为什么还要引入tag?
“请把上周一的那个版本打包发布,commit号是6a5819e...”
“一串乱七八糟的数字不好找!”
如果换一个办法:
“请把上周一的那个版本打包发布,版本号是v1.2”
“好的,按照tag v1.2查找commit就行!”
所以,tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。
一、创建标签
1、创建标签:git tag <name>(默认标签是打在最新的提交的commit上)
2、查看所有标签:git tag
3、如果昨天的忘记打标签怎么办?
首先,找到历史提交的commit_id,然后打上标签。
输入:git log –abbrev-commit(或者git log --pretty=oneline --abbrev-commit)
找到需要打标签的commitid,
输入 :git tag v0.9 commitid
4、查看标签的信息:git show tag
5、创建带有说明的标签,-a指定表签名,-m指定说明文字:
Git tag –a v0.9 –m “注释” commitid
还可以通过-s用私钥签名一个标签:
git tag -s v0.2 -m "signed version 0.2 released" commit id:签名采用PGP签名,因此,必须首先安装gpg(GnuPG),如果没有找到gpg,或者没有gpg密钥对,就会报错
二、删除标签
1、删除本地标签:git tag –d <tagname>
2、推送指定本地标签:git push origin <tagname>
3、推送所有的标签:git push origin --tags
4、删除远程标签:
首先删除本地标签:git tag –d <tagname>;
然后删除远程标签:git push origin :refs/tags/<tagname>
删除已有的关联的远程仓库:git remoterm origin
六、关联多个远程仓库
责任编辑:售电衡衡
-
权威发布 | 新能源汽车产业顶层设计落地:鼓励“光储充放”,有序推进氢燃料供给体系建设
2020-11-03新能源,汽车,产业,设计 -
中国自主研制的“人造太阳”重力支撑设备正式启运
2020-09-14核聚变,ITER,核电 -
探索 | 既耗能又可供能的数据中心 打造融合型综合能源系统
2020-06-16综合能源服务,新能源消纳,能源互联网
-
新基建助推 数据中心建设将迎爆发期
2020-06-16数据中心,能源互联网,电力新基建 -
泛在电力物联网建设下看电网企业数据变现之路
2019-11-12泛在电力物联网 -
泛在电力物联网建设典型实践案例
2019-10-15泛在电力物联网案例
-
权威发布 | 新能源汽车产业顶层设计落地:鼓励“光储充放”,有序推进氢燃料供给体系建设
2020-11-03新能源,汽车,产业,设计 -
中国自主研制的“人造太阳”重力支撑设备正式启运
2020-09-14核聚变,ITER,核电 -
能源革命和电改政策红利将长期助力储能行业发展
-
探索 | 既耗能又可供能的数据中心 打造融合型综合能源系统
2020-06-16综合能源服务,新能源消纳,能源互联网 -
5G新基建助力智能电网发展
2020-06-125G,智能电网,配电网 -
从智能电网到智能城市