前言:
无论你是运维、开发还是IT爱好者,都会听说github了吧?动不动哪位大神就说在github上有什么什么项目,我的github地址是xxxxx,甚至有自己个github在找新工作时都能给自己加分不少,甚至有人在github写书比如(跟老齐学python),所以github太有用了不得不学啊。。
其实本人15年的时候还在学搭建svn,当时公司也用的是svn,主要是测试发布代码 和自己部门存文档用,当时接触linux不久,现在掌握了git,感觉是从非rmb玩家到rmb玩家般的不同,嗯....开源的力量真是大。
更详细的git教程,推荐阅读 http://www.jianshu.com/p/55496ff224e9
git概述:
git是一个分布式版本管理系统,是为了更好地管理Linux内核开发而创立的。 Git可以在任何时间点,把文档的状态作为更新记录保存起来。因此可以把编辑过的文档复原到以前的状态,也可以显示编辑前后的内容差异。 而且,编辑旧文件后,试图覆盖较新的文件的时候(即上传文件到服务器时),系统会发出警告,因此可以避免在无意中覆盖了他人的编辑内容。
git可以自己搭建,也可以用开源项目
git官方地址:https://github.com/
中国开源社区git:https://git.oschina.net/
这里得说下,因为天朝防火墙的原因访问git官网和下载资料都是巨慢,如果你有更好的方式可以直接用官方,没什么特殊需求还是国内的开源社区版吧。
笔者的使用场景是: 如图,win10 macbook linux都是处于不同的地理位置,win10和macbook使用pycharm写python代码,测试成功后推送到linux下的test1-5的虚拟机上,需要有存储代码、发布代码、和临时增加分支项目的功能。
安装:
windows版下载地址:https://git-scm.com/download/win
win需要安装一个bash环境,安装完成打开bash就和linux中的操作很像了,如果你不懂bash和linux命令,请先学习下linux基础.
linux && mac os:yum install git && brew install git 哈,熟的不能再熟了
使用码云:
1、注册成功后进入自己主页,点击右上角的‘+‘图标选择‘新建项目‘,输入自己的项目名称,概述所使用的开发语言和开源协议
2、主页中就可以看到自己创建的项目了,进到主页选择自己的项目,点击‘克隆下载‘按钮会有ssh和https连接方式选择;
ssh: 通过秘钥验证方式连接主机将主机生成的pub文件内容copy到git中,支持上传下载。
https:通过https协议连接,笔者测试只支持下拉代码 不支持上传。
3、生成key文件
在主机执行ssh-keygen一路回车,cat ~/.ssh/id_rsa.pub 如图
4、码云中右上角点击你的头像,选择‘修改资料‘->选择‘ssh公钥‘,将公钥粘贴到页面,点击确定就加好了
命令行操作:
1、git原理:
按照上传顺序: git拉取->add(写入本地缓存)->commit(写入本地数据库)->git push(上传到git)
2、基础操作
mkdir test01 #建立测试文件夹 git clone [email protected]:tajzhang/StudyPython02.git #克隆远端项目 cd StudyPython02 #进入同步好的项目 vim ceshi01.txt #写入个测试文件 git status #查看git状态,此命令比较关键,能看到git是否已经commit或add git add ceshi01.txt #将文件写入缓存 git commit -m ‘No1‘ #讲文件写入本地数据库,标记为No1 git push #上传文件,切记是直接上传到云端,本地就不可恢复之前文件了,要小心使用! git pull #从云端拉取文件,和push相对
3、进阶命令手册
git config --global user.name "you name" #设置你的名字 强制性的 git config --global user.email "you email" #设置你的邮箱 git config --global color.ui auto #开启命令和输出的颜色 git init [project-name] #创建一个新的本地仓库 git clone [url] #下载一个项目的所有的历史版本 git status #列出所有的正在变更的文件到提交 git diff #显示文件不同的地方 diff 只在没有add之前生效 git add [file] #为准备版本编写快照。 git diff --staged #显示当前版本和最后一个文件版本之间的文件差异 git reset [file] #结果文件,但保留其内容 git commit -m "asdasdasd" #在版本历史中永久记录文件快照 提交文件到本地仓库 review history[恢复历史] git log #列出所有的历史版本 git log --follow [file] #列出一个文件的版本历史,包括重命名 git diff [first-branch]...[second-branch] #显示两个分支之间的内容差异 git show [commit] #输出指定提交的内容变更信息 redo commits(重新提交) git reset [commit] 一般不用 #撤消所有提交后[提交],保持局部变化 git reset --hard [commit] #将所有历史和更改全部丢弃到指定的提交中 #还原到一个指定的提交中去 git merge [bookmark]/[branch] #合并本地的分支 git push [alias] [branch] #提交数据到github git pull #下载书签历史并包含更改 vim xxxx git status git diff xxxx git add xxxx git commmit -m ‘update xxxx‘ git status * git回退版本 git reset --hard HEAD^ 回到上一个版本 git reset --hard HEAD^^ 回到上上一个版本 git reset --hard HEAD^100 回到上100个版本 也可以通过commit id =3331232 这个值来回退版本 git reset --hard 3331232 #时光穿梭 git reflog 查询你做过的命令 HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。 没有add之前可以使用 git checkout -- [file name] 如果已经add 把文件加入暂存区了怎么办 git reset HEAD [file name] git checkout -- [file name] 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库 ADD 暂存区 commit 工作区 ### 删除文件 rm xxx git rm xxx git commit -m ‘remove xxx‘
4、分支:
当你的项目有多个人同时协作,或是项目中途中断去开发其它功能时,可在master项目创建一个master的二次元项目,不会干预到master,文件和master相同,当你完成开发就可以和master项目合并。
相关命令:
git branch #列出所有的本地分支 git branch [branch-name] #创建新的分支 git checkout [branch-name] #切换分支 git merge [branch] #合并分支 git branch -d [branch-name] #删除分支 git branch cehsi git branch git checkout ceshi vim ffff git add ffff git commit -m ‘ceshi‘ git chekcout master git merge ceshi git branch -d ceshi #并行分支 git branch ceshi2 git branch cehsi3 git checkout ceshi2 vim ceshi2 git add ceshi2 git commit -m ‘ceshi2‘ git checkout ceshi3 vim ceshi3 git add ceshi3 git commit -m ‘ceshi3‘ git checkout master git merge ceshi3
后续会更新pycharm下如何同步git