返回顶部

git的使用

简介

什么是Git

Git是一款先进的分布式版本控制系统。

什么是版本控制?

版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。如果你需要对一个文件做长时间的修改,版本控制系统十分适合你,有了它就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。 使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文件改的改,删的删了,这也没有关系,你也照样可以很容易地就恢复到原先的样子。但额外增加的工作量却微乎其微。

分布式和集中式

集中式的版本控制放在了中央处理器,这就造成了每次想要修改文件都需要向中央处理器把文件拿过来,然后再提交过去,中央处理器保存修改的记录,这就需要联网,而分布式的没有中央处理器,每个人的电脑都有版本控制,这使得一次下载,可以重复修改,并且在本地记录着修改,不需要联网,另外因为版本控制在个人电脑的缘故,也更分布式版本管理安全。

本地项目上传至github

1、创建本地版本库 Bash

<1>创建一个文件夹$ mkdir test, 并进入文件夹cd test
<2>使文件夹编程可管理的仓库$ git init,这时当前文件夹test下会生成一个,git文件用于管理和跟踪版本库
<3>将需要上传的文件拷贝到test文件夹下,并建立上传到本地仓库

  • $ git add .将文件上传到暂存区
  • $ git commit -m 'first commit' 将暂存区文件上传到本地仓库
    另外可以随之使用$ git status查看当前状态

2、github上创建远程仓库

<1> 创建ssh key 密钥,为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。如果本地没有.ssh文件夹的话,需要在bash中创建ssh密钥$ ssh-keygen -t rsa -C "youremail@example.com"
<2> 添加ssh key 密钥 在github中的个人主页setting,再选中里面的SSH and GPG KEYS,点击右上角的New SSH key,然后Title里面随便填,再把刚才.ss文件夹下的id_rsa.pub里面的内容复制到Title下面的Key内容框里面,最后点击Add SSH key,这样就完成了SSH Key的加密。
<3> 创建一个名为test的仓库

关联仓库

1 内容关联

在Github上创建好Git仓库之后我们就可以和本地仓库进行关联了,根据创建好的Git仓库页面的提示,可以在本地TEST仓库的命令行输入:$ git remote add origin https://github.com/xxx/xxx.git

2 内容推送

$ git push -u origin master由于新建的远程仓库是空的,所以要加上-u这个参数,等远程仓库里面有了内容之后,下次再从本地库上传内容的时候只需下面这样就可以了:$ git push origin master

3 内容合并

如果在github创建的仓库中存在其他文件,那么如果直接关联仓库就会报错,failed to push some refs to https://github.com/xxx/xxx.git,那是由于你新创建的那个仓库里面的README文件不在本地仓库目录中,
这时我们可以通过以下命令先将内容合并以下$ git pull --rebase origin master
在合并的时候由于两个仓库不相关联,可能会出错fatal: refusing to merge unrelated histories,我们强制从远程仓库拉下来合并$ git --allow-unrelated-histories,合并之后在提交

常用命令

生成git管理的仓库

  • $ mkdir 文件夹创建文件夹
  • $ cd 文件夹进入目录
  • $ ls 查看当前工作目录下的文件
  • $ pwd 查看当前文件路径
  • $ git init将文件变成可管理的仓库
  • $ git status查看git当前状态
  • $ touch 文件名创建文件
  • git remote add origin url 关联远程仓库 url为远程仓库的链接

日志以及分支:

  • git push origin test 推送本地分支到远程仓库
  • git rm -r --cached 文件/文件夹名字 取消文件被版本控制
  • git reflog 获取执行过的命令
  • git log --graph 查看分支合并图
  • git merge --no-ff -m '合并描述' 分支名 不使用Fast forward方式合并,采用这种方式合并可以看到合并记录
  • git check-ignore -v 文件名 查看忽略规则
  • git add -f 文件名 强制将文件提交

删除

  • 删除暂存区$ git rm --cach 文件名
  • 删除工作区$ rm 文件名
  • 如果删除文件夹 需要加一个-r表示递归删除文件

提交到远程仓库

  • $git push origin master上传信息到远程仓库

回退操作

  • git reset --hard HEAD^ 回退到上一个版本
  • git reset --hard ahdhs1(commit_id) 回退到某个版本
  • git checkout -- file撤销修改的文件(如果文件加入到了暂存区,则回退到暂存区的,如果文件加入到了版本库,则还原至加入版本库之后的状态)
  • git reset HEAD file 撤回暂存区的文件修改到工作区

编辑文件

$ vi 文件名

进入VIM编辑器,分为三种模式

命令模式

  • i 切换到输入模式,以输入字符。
  • x 删除当前光标所在处的字符。
  • : 切换到底线命令模式,以在最底一行输入命令。
    若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。

输入模式

  • 字符按键以及Shift组合,输入字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式

底线命令模式

  • :w 保存文件但不退出vi
  • :w file 将修改另外保存到file中,不退出vi
  • :w! 强制保存,不推出vi
  • :wq 保存文件并退出vi
  • :wq! 强制保存文件,并退出vi
  • q: 不保存文件,退出vi
  • :q! 不保存文件,强制退出vi
  • :e! 放弃所有修改,从上次保存文件开始再编辑

常见问题

如何修改github上仓库的项目的语言类型

  • 问题:在把项目上传到github仓库上时语言会显示错误语言
  • 原理:github 是采用 Linguist来自动识别你的代码判断归为哪一类
  • 方案:在仓库的根目录下添加.gitattributes文件:并写入
*.js linguist-language=python
*.css linguist-language=python
*.html linguist-language=python

意思是将.js、css、html当作python来统计

posted on 2018-08-13 19:05  weilanhanf  阅读(168)  评论(0编辑  收藏  举报

导航