赤青1

那些我们丢失的美好!是我们永远的遗憾与记忆

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

乱码问题:

内容乱码是文件内容编码问题,可以直接修改文件编码格式

文件名乱码或提示版本说明中文乱码问题,可以修改配置文件支持中文编码

1.Git 的诞生:

Git 是什么?

Git 是目前世界上最先进的分布式版本控制系统(没有之一)。

2.Git历史:

2005 年就被打破了,原因是 Linux 社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发 Samba Andrew 试图破解 BitKeeper 的协议(这么干的其实也不只他一个),被 BitMover 司发现了(监控工作做得不错!),于是 BitMover 公司怒了,要收回 Linux 社区的免费使用权。

 

Linus 可以向 BitMover 公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是 这样的:

 

Linus 花了两周时间自己用 C 写了一个分布式版本控制系统,这就是 Git!一个月之内, Linux 系统的源码已经由 Git 管理了!牛是怎么定义的呢?大家可以体会一下。

 

Git 迅速成为最流行的分布式版本控制系统,尤其是 2008 年,GitHub 网站上线了,它为开源项目 免费提供 Git 存储,无数开源项目开始迁移至 GitHub,包括 jQueryPHPRuby 等等。

3.集中式 vs 分布式:

集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所 以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。 中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完 了,再放回图书馆。

缺点:就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个 10M 的文件就需要 5 分钟,

4.分布式版本控制系统与集中式版本控制系统有何不同:

首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样 ,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完 整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件 A,你的同事也在他的电脑上改 了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了

5.分布式版本控制系统和集中式版本控制系统相比:(优点)

分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉 了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题 ,所有人都没法干活了。

6.Git安装(windows):

Windows 上安装 Git

msysgit Windows 版的 Git,从 http://msysgit.github.io/ 下载,然后按默认选项安装即 可。

 

安装完成后,在开始菜单里找到Git->Git Bash”,蹦出一个类似命令行窗口的东西,就说明 Git 安装成功!

 

 

 

安装完成后,还需要最后一步设置,在命令行输入:

 

$ git config --global user.name "Your Name"

$ git config --global user.email "email@example.com"

因为 Git 是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和 Email 地址。你也 许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众, 其次,真的有冒充的也是有办法可查的。

 

注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的 Git 仓库都会使用 这个配置,当然也可以对某个仓库指定不同的用户名和 Email 地址。

7.创建Git仓库

一:初始化版本库:-git init

二:添加文件到缓存区-git add  --添加所有文件 是:加个点-列:git add .   

三:查看仓库状态:-git status

四:添加到本地仓库:-git commit

命令行:

pwd:显示当前目录---

ll:显示改目录下的文件----

cd ..:返回上一级

ls:查看当前目录下的所有文件

mkdir :创建目录

ls -a:查看隐藏和不隐藏的文件

cd :切换目录

echo "one rep02" >> test.txt:向test文本文件添加one rep02内容

cat test.txt:展示文本文件内容

git add [文件名]

Ctrl+d:退出当前命令行

添加至暂存区

git commit -m "这里写每次提交得而说明" :提交命令

git status :查看当前仓库的状态

git分支管理

Git branch UserA:创建UserA分支

Git checkout UserA :切换分支

合并分支

git merge [分支名称]

删除分支

git branch -d [分支名称]

 

图形化操作:(Source Tree应用)

 

8.仓库状态

成功地添加并提交了一个 readme.txt 文件,现在,是时候继续工作了,于是,我们继续修改 readme.txt 文件

git status命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt 被修改过 了,但还没有准备提交的修改

虽然 Git 告诉我们 readme.txt 被修改了,但如果能看看具体修改了什么内容,自然是很好的。比 如你休假两周从国外回来,第一天上班时,已经记不清上次怎么修改的 readme.txt,所以,需要用 git diff这个命令看看:

如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

9.版本回退

git log:查看提交版本

git log --pretty=oneline

一个 SHA1 计算出来的一个非常大的数字,用十六进制表示,而且你看到的 commit id 我的肯定不一样,以你自己的为准。为什么 commit id 需要用这么一大串数字表示呢?因 Git 是分布式的版本控制系统

git reset --hard head^:返回上一个版本:HEAD 表示当前版本,也就是最新的提交

上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上 100 个版本写 100 ^比较 容易数不过来,所以写成 HEAD~100

git reset --hard 3628164:返回原来返回的版本:3628164:版本号

找不到新版本的 commit id 怎么办?

Git 提供了一个命令git reflog用来记录你的每一次命令

版本回退后:更新到远程仓库:git push -f -u origin master

10.工作区和暂存区

工作区:就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区:

版本库:工作区有一个隐藏目录.git,这个不算工作区,而是 Git 的版本库

Git 的版本库里存了很多东西,其中最重要的就是称为 stage(或者叫 index 的暂存区,还有 Git 为我们自动创建的第一个分支 master,以及指向 master 的一个指针叫 HEAD

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

 

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

 

git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以 一次性把暂存区的所有修改提交到分支。

11.管理修改

每次修改,如果不 add 到暂存区,那就不会加入到 commit 中。

12.撤销修改

 

命令git checkout -- readme.txt意思就是,把 readme.txt 文件在工作区的修改全部撤销:这 里有两种情况:

一种是 readme.txt 自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模 一样的状态;(满足第一种情况:git checkout -- readme.txt

 

二种是 readme.txt 已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂 存区后的状态。

 

git reset 命令既可以回退版本,也可以把暂存区的修改回退到工作区。

 

git reset HEAD (文件名)可以把暂存区的修改撤销掉(unstage),重新放回工作区

git checkout -- readme.txt:丢弃工作区的修改

13.删除文件

rm test.txt:删除文件

在工作区内删除文件:用rm+文件名

在版本库中删除文件:一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit -m "remove test.txt"

另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:

 git checkout -- test.txt(测试错误)

 

  1. 从本地把项目推送到github上去:

生成 SSH key

需要创建一个github账户

ssh-keygen -t rsa -C "邮箱号":生成公钥和密钥

在命令行中执行、完成后在本地电脑用户里查看.ssh的文件

 

 

1.命令行:git push -u origin master:把当前分支的内容推送到github上去

关联后,使用命令git push -u origin master第一次推送 master 分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令git push origin (master)是可以更改的,代表当前需要提交的分支,推送最新修改;

2.sourceTree图形化推送

Github上:

登陆 GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库:

 

Repository name 填入 learngit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的 Git 仓库:

 

下面会自动生成推送方式进行推送:

 

GitHub 告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到 GitHub 仓库。

本地souceTree操作:

在本地仓库的mastr分支上拉取请求:

 

在点击之后:出现各项设置

 

在图形界面上出行一下表示成功

 

mastr上进行推送到远程仓库上

 

推送完成则在github网页上直接刷新出现推送目标

15、从远程库克隆

git clone git@github.com:michaelliao/gitskills.git

git@github.com:michaelliao/gitskills.git:该值是仓库地址

现在,远程库已经准备好了,下一步是用命令git clone克隆一个本地库:

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

Git 支持多种协议,包括 https,但通过 ssh 支持的原生 git 协议速度最快。

16、git分支管理

Git branch UserA:创建UserA分支

Git checkout UserA :切换分支

合并分支

git merge [分支名称]

删除分支

git branch -d [分支名称]

posted on 2019-10-05 23:26  赤青1  阅读(117)  评论(0编辑  收藏  举报