Git与Github简介:
gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。
Git是分布式版本控制系统,其第一个版本是由linux系统创始人Torvalds花了10天时间创造的,并且开源给所有人免费试用。3年后,Tom Preston使用Git作为版本控制软件创建了http://Github.com,一个专门托管代码并且可以实现版本控制的网站。(缘由请自行了解)
Tom之所以把网站叫做Github,是因为其核心部分版本控制是用Git来处理的。但是 为什么有人回复调侃Github是全球最大男性交友网站呢?那是因为Github的注册用户大都是男生,而且彼此之间可以相互关注(类似于微博)。
Window下的git与github:
Git命令:
创建版本库:
$ cd d:/git 进入操作目录
$ mkdir myProgram 新建文件夹
$ cd myProgram 进入新建的文件夹
$ echo ‘My program is alive.’ > index.html 新建文件夹下创建一个html文件并初始化内容
$ git init 将所在目录转化为git版本库且文件默认是临时文件不会放在版本库中
将文件添加到版本库中:
$ git add index.html 指定文件添加到版本库中
$ git add . 将当前目录及子目录都添加到版本库中
配置个人用户名与电子邮件,提交代码的标识:
$ git config –global user.name “name”
$ git config –global user.email [email protected]
查看git配置:
$ git config –list
提交文件:
任何编辑之后,提交之前都要执行git add命令去更新索引
$ git commit –m “Test using git to commit file.” 提交先要进行git add操作
此处可以设置Git_Editor环境变量来在交互式编辑器(vim)中编辑内容
设置方法:export GIT_EDITOR = vim
$ git commit –am ”提交信息“ 合并git add 和 git commit操作(适用于比较小的变更)
查看本地状态,是否有文件做了修改还没提交:
$ git status (已经add操作/commit后又修改过,但目前没commit操作)
查看某个文件所做的修改:
$ git diff app/XXX/XXX/XXX.py
查看提交的日志修改记录:
$ git log (一系列单独提交的历史)
$ git log –p 查看前后差异
$ git log --pretty=online 查看日志
$ git log 文件/目录 查看指定文件/目录相关的日志
(当前面出现某个冒号无法输入命令按q键)
查看某次修改的文件:
$ git show commit_id (省略提交码默认显示最近一次提交)
$ git show-branch –more=10 当前开发分支简洁的单行摘要,最新10个版本(即提交日志)
查看本次代码与上一次的区别:
$ git diff HEAD 查看工作树与最新提交的差别
$ git diff查看工作树与暂存区的差别
”+“ 表示新添加的行
”-“ 表示被删除的行
$ git diff xxx.txt 查看和上一版本变化的内容
提交修改:
$ git add –all && git commit –m ‘修复某个问题’ && git pull && git push
修改提交信息:
$ git commit –amend
$ touch 文件名 直接新建一个文件夹
$ vi 文件名 新建一个文件并进入编辑状态(已存在文件直接进入编辑状态)
$ rm –rf example.git 强制删除
$ git rm 表示删除文件 git commit 提交删除操作
$ git rm aaa.html bbb.txt 删除版本库内的aaa和bbb两个文件
$ ls /git rm aaa.txt /git commit –m “Remove aaa.txt” 可连续输入
重命名文件:
$ git mv index.html indexNew.html 先执行mv操作
$ git rm index.html 因为rm会将index.html永久删除
$ git add indexNew.html
$ git commit –m “Move index.html to indexNew.html”
(在任何情况下,暂存的变更必须随后进行提交)
克隆仓库:
$ git clone git://github.com/sth/sth.git
会在当前目录下创建一个名为sth的目录,其中包含一个.git的目录,用于保存下载下来的所有版本记录。
也可以直接在末尾指定新建的目录名称,如:git clone git://github.com/sth/sth.git mygitsth
$ git clone program clone_program
$ git clone [email protected]:/option/git/provider1.git provider1 克隆远程仓库
$ git clone \(回车)git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
克隆网站上的版本库副本:
$ git reset --hard HEAD^ 回退到上一个版本
$ git reset --hard 2313121 回退到指定版本
$ git checkout xxx.txt 未放入暂存区恢复到版本库,放入暂存区恢复成暂存区
$ ssh-keygen –t rsa –C “邮箱” 远程版本库创建公钥
$ git branch 列表显示分支名,所有分支前有*
$ git log --graph 图表形式查看分支
$ git branch 分支名 新建分支
$ git checkout 分支名 切换分支
$ git checkout –b 分支名 新建并切换分支
$ git branch –D 分支名 删除分支
合并分支:
$ git checkout master 先切换回主分支
$ git merge –no—ff feature –A 然后合并子分支
(–no—ff参数用于在历史记录中明确记录下本次分支合并)
更改提交的操作:
$ git reflog 查看当前仓库的操作日志,包括所有操作,可根据哈希值进行历史回溯
$ git reset –hard hash_value(87d6y9q) 根据哈希值实现推进历史
$ git commit –amend 修改上一次提交信息
分支的合并提交信息可以为:Merge branch 分支名
解决冲突:
$ git conflict_file 打开冲突的文件
显示:
<<<<<<< HEAD
- feature-A 当前HEAD的内容
=======
-fix-B 要合并的分支中的内容
>>>>>>> fix-B
可以手动改成:
# git conflict_file
-feature-A
-fix-B
实际项目应该注意修改
压缩(更改)历史
$ git rebase –I HEAD~2
将当前操作与前一个提交合并压缩成一个历史记录
会在编辑器中打开两个最新的历史记录,将后一个前面的pick改为fixup
远程仓库:
在github上创建一个远程仓库,以首个开发者身份把已有仓库推送至远程仓库
将它设置成本地仓库的远程仓库,与远程仓库建立连接
$ git remote add origin https://github.com/userName/repositoryName.git
或者:
$ git remote add origin [email protected]:userName/repositoryName.git
推送到远程仓库,-u是为了将origin仓库的master分支设置为本地仓库当前分支的上游
$ git push –u origin master 推送至master分支
$ git push –u origin branchName 将本地仓库中的分支push给远程仓库并保持分支名称不变
$ git push origin:branchName 删除远程仓库(github的仓库)上的分支
以后来开发者的身份从远程仓库获取
$ git clone [email protected]:userName/repository.git(默认处于master分支下)
$ git branch –a 查看获取后的本地仓库和远程仓库的分支信息
$ git checkout –b 本地新建分支名 origin/remote_branch_name 获取远程分支到本地仓库
$ git push 像本地的分支提交修改,推送分支,以master为准,进行本地origin同步
$ git push origin remote_branch_name 在推送分支之前,先要获取最新的远程仓库分支
vi/vim基本使用方法:vim是vi的升级版
在git bash中输入:git commit 会进入vim编辑器,且处于命令行模式
按i进入插入模式
输入内容后按esc键转切回命令行模式
按回车键提交成功
在git bash下打开notpad++等文本编辑器
在GitHub上发布版本库:
创建GitHub的版本库:登陆GitHub账户(任意位置单击logo可跳转到个人dashboard页),单击Start a project
为新的版本库命名: 唯一要填的字段是Repository name(项目名),项目将会出现在 https://github.com/GitHub/用户名/项目名 处
初始化版本库: 现在版本库已经创建了还没有内容,可根据github提示去 推送内容。2步(git remote add origin 地址(git remote add origin https://github.com/yourusername/yourprojectname.git) / git push -u origin master)
$ ssh –T [email protected] git bash下输入命令查看本地库与github认证
$ cd parent_dir 首先进入要上传文件目录的上一级目录
$ git init 把当前目录变成git可以管理的目录
$ ls –a 可以查看当前文件夹下是否包含.git的文件夹,若包含则成功
$ git add ./git add /python/test/test.txt 使用git add添加文件到本地暂存库
$ git commit –m ‘note’ 将文件提交到仓库
(引号里是提交的说明,若忘记参数-m则会自动打开vim编辑器)
$ git remote add origin 你的远程库地址(如:https://github.com/userName/repositoryName.git)
$ git remote rm origin 删除origin
$ git remote add origin https://github.com/userName/repositoryNameNew.git 重新添加origin
$ git pull --rebase origin master 远程库与本地库合并
(如果远程库不为空必须做这一步,否则后面的提交会失败)
$ git push –u origin master 将最新的修改推送到远程仓库
(origin是远程仓库名字,master是远程仓库分支)
注意:我们第一次push的时候,加上参数-u,git就会把本地的master分支与远程的master分支进行关联起来,以后的push操作就不需要加上-u参数了。
如果提示:
- hint: before pushing again.
- hint: See the 'Note about fast-forwards' in 'git push--help' for details.
则输入下面命令即可:
$ git push –u origin master -f
$ git clone /username/repositoryName.git 将仓库地址复制,从git服务器所在主机上的其他账户获取git服务器上面的文件,直接gitclone+git仓库的路径
git 仓库删除
$ find . -name “.git” | xargs rm –Rf 本地仓库目录下命令行删除根目录下.git文件
或者手动删除残留的.git文件
$ rm –rf https://github.com/repositoryDir/repositoryName.git 远程仓库删除
或者在github的对用的库中到setting删除库
git 添加ssh认证到github
1.创建ssh key,在C盘用户目录下生成.ssh目录,其内包括id_rsa和id_rsa.pub两个文件
$ ssh-keygen –t rsa –C [email protected] 一路回车
参数:-t 指定密钥类型,默认是rsa,可以省略。-C设置注释文字,比如邮箱。
2.登录github,打开Settings,再选中SSH和GPG KEYS,点击右上角的New SSH Key,然后Title里面随便填,再把刚才id_rsa.pub里面的内容复制到Title下面的Key内容框里面,
最后点击Add SSH key,就完成了SSH Key的加密。
3.测试SSH连接
$ ssh –T [email protected] 此处就是[email protected]
4.将已有github项目换成ssh
$ git remote rm origin
$ git remote add origin [email protected]:账户名/项目名.git
$ git push origin
Pycharm与github连接
Settings->github->Host:Login:Pwd->test button for test
->git->C:\Program Files\Git\bin\git.exe
VCS->import into version control->share project on github
->NewRepoName:RemoteName:Description->commit message
->ok->update code into Github successfully.
Checkout from version control->git->git repository url->test
相关参考链接:
百度百科.
廖雪峰官网git教程.
git简明指南:http://rogerdudler.github.io/git-guide/index.zh.html
Github简明教程:https://www.runoob.com/w3cnote/git-guide.html
如何高效利用GitHub:http://www.yangzhiping.com/tech/github.html
Git 常用命令使用大全:https://www.cnblogs.com/Gxiaopan/p/6714539.html
webstorm中使用git:http://blog.csdn.net/chenxueshanblog/article/details/78722789
在git bash下打开文本编辑器:https://www.cnblogs.com/BugBrother/p/6963484.html
Windows下git的使用:https://blog.csdn.net/chenxueshanBlog/article/details/78915338
Windows下Git命令行基本使用:https://blog.csdn.net/u012111923/article/details/80797661