git与github-成都快上网建站

git与github

一、git:一个免费的并且开源的分布式版本控制系统
版本控制:保留文件中修改的历史记录,可以方便的撤销||恢复之前对文件的操作修改。
版本控制带来的好处:
a.不小心删除文件,可以通过记录找回
b.产品经理反反复复让你修改的时候,可以通过版本控制轻松反复
c.清楚了解自己最近处理过哪些部分
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置
分布式版本控制:
单人开发项目的时候,我们可能为了方便,公司一台,家里一台,这时候我要使用同一个仓库进行记录。
我们可以选择使用U盘、网盘等存储设备进行拷贝。
但是一旦项目庞大,我们就这样的方式就很麻烦了,而且极有可能产生各种冲突问题。
分布式和集成式的对比:
集成式:
直接连通中央仓库,由中央仓库存储操作记录及项目代码,比如SVN
需要连接中央仓库、需要网络
记录保存在中央仓库,一旦中央仓库内的记录丢失,没有备份
分布式:
在每个人的电脑上都有一个.git本地仓库,操作记录保存在本地,如GIT
可无网络办公,等有网络再推送远程仓库
通过对比我们可以看出分布式版本控制,对于工作环境要求限制更少,对资料的保护性更好,不容易丢 失。所以越来越多的人抛弃SVN,走上了Git的道路
Github就充当了我们说的中央仓库。
当然在这里我们需要的只是中央仓库,这个仓库也可以Coding 、gitlab、Bitbucket 等等。

公司主营业务:成都做网站、网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出宜昌免费做网站回馈大家。

二、github:一个专门托管代码并且实现版本控制的软件,git比github早出现了3年,为开源项目免费提供Git存储

三、git的入门命令,使用Git Bash操作命令行
(1)、git init:初始化本地仓库;,通过git init命令把这个目录变成Git可以管理的仓库
通过这个命令,可以创建一个本地.git仓库,.git文件(默认是隐藏文件)
.开头的文件是隐藏文件,所以需要设置让其出现
touch a.txt //创建a.txt文件
git status:查看当前仓库所在目录的文件状态
git与github
on branch master:在哪个分支上
no commits yet:还没有提交过
untracked files:当前的这个文件是没有被追踪的,git当它是不存在的,通过命令:
(2)、git add a.txt:来将这个文件提交给git,告诉仓库,这是我需要你管理的东西。add是添加文件下所有的文件
通过这样的方式,我们可以把文件/文件夹托管给git
git与github
(3)、git commit
把文件/文件夹托管给仓库后,我们不能像编辑器一样,什么都让仓库进行记录,所以在这里,
我们采用主动提交的方式,去提交我们希望Git仓库记录的操作。
git commit
如果你是第一次进行提交,你会发现提交失败
因为Git除了需要你主动提交以外,还需要记录当前是谁提交的
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
在全局下设置用户email和name,只需要设置一次,后期提交的时候,会自动读取配置信息
git config --global -l 获取设置的邮箱和用户名
git与github
进入了vim编辑器,出现这种情况是因为,需要在commit的时候附带一个信息,描述你提交是做了什么的描述文字。按住i进入文字编辑插入模式 => 在最上面输入本地提交的描述信息
git与github
然后按下esc退出编辑插入模式 => 按下ZZ(大写)保存退出。
(4)、git log:查看已经提交的文件信息,所有批次的提交信息,按q退出,然后再接着输入命令
git与github
git log --pretty=oneline
git log --pretty=format:"%H %h"
通过git log 哈希值:可以只查看某一次的提交信息
git log -p:查看最近一次的提交信息,同时显示diff的信息,详细信息的打印
git log -2:只打印2条信息
以上操作都是操作本地仓库,untracked files不用管它
每次操作:
首先git status,查看文件状态,看看哪些文件修改了
然后git add,将修改文件提交到暂存区,
git add .将本地仓库全部文件提交到暂存区
然后 git cimmit -m 描述文字,提交到本地仓库
以上操作步骤,缺一不可。
不过可以简写命令行:git commit -a -m '描述文字'(只有在文件是已经暂存的情况下才可以使用简写命令操作,untracked files是不可以直接使用简写命令行的,需要先add,然后commit,分开来)
(5)、git rm ‘文件名’:删除文件
git rm a.txt
git commit -m 删除a文件
☆如果文件在暂存区,也就是git add .,但是还没有git commit,那么是不允许删除该文件的,如果确实要删除,那么 :
git rm -f c.txt //强制删除
git commit -m 删除c文件
☆如果想把文件从git仓库删除,但是保留本地工作目录中的文件,也就是该文件从git仓库的文件变成了untracked files文件
git rm --cache a.txt
git commit -m 删除a文件
要想再次提交该文件到git仓库,先git add .,然后git commit -m 提交a文件
(6)、移动文件
新建文件夹:mkdir reci //创建了一个文件夹
git mv a.txt reci/a.txt //将a文件移动到reci文件夹下面
git add .
git commit -m 移动a文件到reci文件夹下
(7)、git status:打印文件状态(未追踪、已修改、已暂存)
git status -s = git status --short 简化文件状态打印内容
git与github

             **(8)、git diff**:查看文件修改了哪些地方 (主要看工作区文件)
                                     只在文件已经被修改,但是还未add的情况下,可以查看,如果已经add就不可以查看修改的情况了
                                     git diff --staged:查看暂存区和提交区域之间的差异 

            ** (9)、git reset**:返回文件到之前的版本
                             git reset --hard HEAD^  //返回上一个版本
                             git reset --hard HEAD^^  //返回上上一个版本
                             git reset --hard HEAD~·100  //返回往上100个版本
                             回退到未来的版本
                             git reset --hard d93ccfb4a9f6a5971c4a2481f927202a4cf66d49  //对应版本的哈希值
             **(10)、git reflog**用来记录你的每一次命令,找到对应修改的commit id
                             穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
                             要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
            **(11)、创建SSH Key**
                            C:\Users\xiaoxiao\.ssh   这就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
            **(12)、push提交代码到github**
                            git push origin master,把本地master分支的最新修改推送至GitHub。
                **(13)、从远程库clone到本地库**
                git clone git@github.com:yourname/gitskills.git
                **(14)、常用命令行**
                $ pwd :(print working directory) 查看当前所在路径--绝对路径
                $ ls:(list) 查看当前目录下的内容
                $ mkdir(make directory) 创建目录
                $ touch 创建文件
                $ cat 查看文件内容(一次性将内容全部显示)
                $ q 退出
                $ clear 清屏
            **(15)、分支管理**
            在Git里,主分支,即master分支
            HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长;
            当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上。
            不过,从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变。
            假如我们在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最简单的方法,就是直接把master指向dev的当前提交,就完成了合并。
            并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支。
            Git鼓励大量使用分支:
            查看分支:git branch
            创建分支:git branch name
            切换分支:git checkout name
            创建+切换分支:git checkout -b name
            合并某分支到当前分支:git merge name
            删除分支:git branch -d name
** (16)、错误集结**
            (a)。*git add readme.txt报错 pathspec 'readme.txt' did not match any files*
             说明在本地目录里没有这个文件。
            解决办法 
            1.手动创建一个文件 readme.txt
            2.然后再使用git命令创建这个文件,命令为:$ touch readme.txt
            3.$ git add readme.txt,不用管该文件路径

**17、提交对象**

git与github
18、创建分支
git与github
git与github
git与github
git branch:查看当前所在的分支
git branch branch2:创建分支branch2
git checkout branch2:切换分支到branch2
git checkout -b branch2:合并操作,开分支并且切换到新分支

四、上传文件到github—远程仓库
1、首先新建仓库
git与github
仓库名称、仓库信息描述、公开还是私有、初始化一个readme文件、add .gitignore、add a license等等
2、新仓库创建完毕之后,会看到以下提示信息
git与github
2.1、git ssh原理以及与https的区别
HTTPS:不管是谁,拿到url随便clone,但是在push的时候需要验证用户名和密码【输入密码时git bash不会显示密码】;
SSH:clone的项目你必须是拥有者或者管理员,而且需要在clone前添加SSH Key。SSH 在push的时候,是不需要输入用户名的,如果配置SSH key的时候设置了密码,则需要输入密码的,否则是不需要输入密码的,推荐使用SSH密钥,谁想要参与当前项目的开发,就添加谁的SSH密钥
2.2、在git中使用SSH Key的步骤:

检查电脑是否存在SSH Key:
$ cd ~/.ssh
$ ls

如果存在id_rsa.pub 或 id_dsa.pub 文件,说明文件以及存在,跳过创建SSH Key步骤。

创建SSH Key
$ ssh-keygen -t rsa -C "your_email@example.com"
return后(出现如下命令)会让你输入push时的密码(不是git登录密码),一般推荐滤过,直接按enter:

Generating public/private rsa key pair.

出现如下命令说明SSH Key创建成功了:

复制代码

Your identification has been saved in /Users/shenheping/.ssh/id_rsa.
Your public key has been saved in /Users/shenheping/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:sodR52iO2z6KZOaHjElmjlGtTu8UbiZ2p+KXma4Rums shpyoucan@163.com
The key's randomart image is:
+---[RSA 2048]----+
. . .
. . . +
.... o S .
..o . O
.X+=X== o
.E%O+.+.
+oo**.ooo.

+----[SHA256]-----+

查看SSH Key:
$ cat ~/.ssh/id_rsa.pub

将查看的SSH Key赋值到git中设置好。

测试SSH Key:
$ ssh -T git@git.oschina.net

出现Welcome to XXX就可以了。

3、push本地文件到远程仓库
远程仓库的名称默认是origin,origin中有单独的master和HEAD分支,和本地仓库中的HEAD或master并非一致

git push 提交到远程仓库
git clone 克隆项目到本地,从无到有的过程 git https://github.com/xiaoxiao529/javascript-note.git
拉取的都是master分支上的内容
git pull 拉取 本地有远程项目,然后同事对远程项目又做了新的修改,就需要git pull,如果和本地的有冲突,就需要解决冲突

github上,创建新仓库,直接创建,不要点Initialize this repository with a README前面的选择框
git与github
创建.gitignore文件,里面写上规则,第一步!!如果是vue-cli,那么不用手动创建,已经创建好了。反正就是创建github仓库的时候,不要勾选初始化README文件!!
git add .
git commit -m 'webpack-word' 提交到暂存区不能少
git remote add origin git@github.com:xiaoxiao529/webpack-work.git
git push -u origin master 提交到远程仓库origin的master分支—主分支

★本次上传了node_modules到github,要避免上传,可以在目录下创建.gitignore文件,里面填写忽略的上传文件

.DS_Store
node_modules/
/dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln

最后需要强调的一点是,如果你不慎在创建.gitignore文件之前就push了项目,那么即使你在.gitignore文件中写入新的过滤规则,这些规则也不会起作用,Git仍然会对所有文件进行版本管理。
简单来说,出现这种问题的原因就是Git已经开始管理这些文件了,所以你无法再通过过滤规则过滤它们。因此一定要养成在项目开始就创建.gitignore文件的习惯,否则一旦push,处理起来会非常麻烦。

五、github上 watch star fork的作用

  • star 的作用是收藏,目的是方便以后查找。
  • watch 的作用是关注,目的是等作者更新的时候,你可以收到通知。
  • fork 的作用是参与,目的是你增加新的内容,然后 Pull Request,把你的修改和主仓库原来的内容合并。

当前题目:git与github
网站网址:http://kswjz.com/article/ghpshh.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流