git的学习笔记

#git是什么

Git可以说是最好用的,而且是最方便的分布式版本控制系统(如果你要是永远保持在网络畅通的情况下,当我没说这个说)
工作原理/流程:
可以分为四个区:
Workspace : 工作区
Index / Stage : 暂存区
Repository : 仓库区(或者本地仓库)
Remote : 远程仓库

为什么选择git

git首先是 分布式版本控制系统,每个人都的电脑就是一个完整的版本库,这样,也可以在没网的情况下,去完成工作,如果多人,互相pull 就可以看到对比和修改的对比的地方。
无论windows还是linux都是傻瓜式的安装,在这里而且网上也有想关的教程。所以在这就不说明了

关键的如何操作

建议在bash的情况下,还有尽可能先看看git 的help 去查看命令

  1. 首先要为这台机器的所有git仓库设置用户名和邮箱(下面我是因为已经设置过了)设置全局变量

  2. 创建版本库
    版本库–其实就是你的项目名的文件夹,在这个文件夹里面,git可以跟踪任何文件并且是任何时间,最重要的还可以"还原"
    相当于初始化
    我是因为在文件夹里面直接右键打开的bash,,所以很方便不是吗
    这时候,在这个文件夹,就会出现一个隐藏的.git文件夹,这个就是init后成功的证明,这个尽量不要动。
    (1) 首先添加这个文件夹的文件。或者使用 . 直接添加所有文件。
    添加
    (2) 在第一步完成时候,你只是添加了,但是没有提交到本地仓库,你必须要 “commit” 下,提交到仓库
    提交到本地仓库
    (3) 当你完成第二步后,,然后用git status 可以判断自己是否已经commit成功。绿色代表成功,红色代表没有添加
    文件commit
    (4) 在这里,版本控制只能看到文件的变化,不能检测到图片或视屏的变化,只能判断出来大小。
    (5) 如果你改到某个文件可以查看下这个文件到底改动了什么
    文件变化
    在提交的时候,记得查看状态,养成好的习惯,可以给自己方便很多,
    []

  3. 版本回退
    如果你想回退你刚才的内容,你放心,这个是可以解决的。
    [^2]我这里已经做好多种修改

图片

	  可以看到最后一次添加的内容和上一次添加的内容。。

如果你不想让现实这么多的内容可以命令 git log -pretty=oneline
(1) 版本回退使用;
第一种是 : git reset --hard HEAD^ 回退上个版本 。
第二种是: git reset --hard HEAD-100,用数字表示版本,进行回退版本。
在这里插入图片描述
在这里插入图片描述
如果你忘记了你想回复的版本号,需要查看版本号: git reflog

  1. 理解工作区和暂存区的区别
    (1) 工作区:就是你在电脑看到的目录,或者你后面改变的任何东西。
    (2) .git 这个是另外的,这就是版本库,其中重要的是stage(暂存区),还有创建的第一个分支master 以及指针HEAD
    在工作区和暂存区上面其实已经提到过了,就简单就是git status 那个是红色的和绿色的,绿色的就是在暂存区了

  2. GIt 撤销修改和删除文件操作
    (1) 撤销修改

     	  如果你提交的内容发现有问题,你可以做下面的操作进行撤销
     	  1.直接在文件更改然后commit
     	  2.就是恢复上一个版本
     	  3.就是撤销工作区的修改了:git checkout --file (这些可以自己尝试了,会更加记得牢固)
    

git checkout --file 如果不加-- 命令就是创建分支的命令了
(2)删除文件
直接使用rm 加文件名就可以删除
或者在工作区删除然后commit

远程仓库

上传项目到github 一共有两种方法,
1.一种是利用ssh key 进行连接,这种方法是很安全的,
2.第二种方法是http就是,虽然这种方法不安全是,但是非常的方便。
这个自己选择

ssh key连接

1.首先创建ssh key:
(如果你用户主目录有.ssh 这个目录就可以跳过这步了)

ssh-keygen -t rsa –C “youremail@example.com

2.然后再github加入自己的电脑的私钥。
在这里插入图片描述
记得在这里选在ssh密钥就行了
3.现在github已经弄好了,,然后再git上面创建一个新的仓库,然后复制那个仓库的ssh密钥就行了。
4.如果上面都已经成功了 ,那么在本地的仓库就行

git remote add origin ssh密钥

5.然后你就可以进行最终的一步了就是push项目到github了。

git push -u origin master
把本地仓库分支master内容推送到元仓库去

第一次要加上u是让本地的master分支与远程的master关联起来
然后你就可以进行日常push了,

HTTP方式下push项目

	这个对于上面那个方法是很简单的,只需要复制http的网址

在这里插入图片描述
然后 就可以执行这个命令了,直接就可以上穿项目了
在这里插入图片描述

从远程库克隆

ssh clone

  1. 如果你已经在github上已经好的仓库,方法还是像上面的方法一样,只是命令不一样而已。
  2. 如果你电脑没有ssh的话,,必须要先在github加上你的电脑的私钥,

http clone

  1. 如果是http,就不必了第二步的操作可以直接就可以clone
    在这里插入图片描述

分支的管理

最重要的分布式管理,就是git里面的每次提交都是串成一条时间先,这个时间先就是一个分支。如果是新建的仓库,都只是有一条分支也是主分支。
HEAD可以说是不是指向提交,而是指向master
  1. 创建分支
    在这里插入图片描述
    git checkout 命令加上-b 表示创建并切换,所以,你就发现你的上面显示文件夹的位置后面的蓝色字变了色。

  2. 如果想要切换分支
    在这里插入图片描述
    git的分支都是分开处理,互不干涉,所以你在这个分支改变的东西,是不会再另外一个分支显示出来的

  3. 能分一个分支,当然可以合并分支
    在这里插入图片描述

  4. 分支完之后,如果不想要那个分支可以删除
    在这里插入图片描述
    总结创建和合并分支命令如下:
    1. 查看分支 :git branch
    2.创建分支: git branch name
    3.切换分支 : git checkout name
    4.创建+切换分支: git checkout -b name
    5.合并某分支到当前分支:git merge name
    6.删除分支: git branch -d name

  5. 如果你是多人来处理一个项目就回存在一个问题, 如果多人处理同一个文件,就会出现冲突。那么冲突怎么办。
    (1) 先用cat查看文件的修改情况,判断哪些内容是自己需要的

     		Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,其中<<<head是指主分支修改的内容,>>>>>fenzhi1 是指fenzhi1上修改的内容,我们可以修改下如下后保存:</head是指主分支修改的内容,>
    
  6. 分支管理策略;
    上面的合并分支是快速合并,就是不保留任何信息,用git log 都看不到版本的信息。
    但是 带参数 -no-ff 来禁用"Fast forward"模式,就可以保留分支的信息
    分支的策略就是:首先master主分支是稳定了,所以这个是不能改变的,而干活实在新建的分支上改变的,等分支修改完毕后,才会合并主分支

bug分支

碰到问题,首先是应该在主分支创建一个分支来修复他,但是时间不够了,git可以将当前工作现场“隐藏起来”。
git stash 命令
下面的步骤都是上面合起来的,创建分支,在分支上面修复bug,然后与主分支合并,删除临时分支
–上面提到的工作现场不是已经隐藏了,有两种方法可以恢复:
1.git stash apply 恢复 或者 git stash drop删除
2.一种是 git stash pop ,恢复的同时,删除stash内容

多人协作

  1. 要查看远程库的信息,使用 git remote

  2. 查看远程库的详细信息 使用 git remote -v
    (我这里没有空的库,就不截图了)

  3. 推送分支
    什么情况,要分支推送,1.是master分支是主分支,要与远程同步2. 一些bug修复,不需要推送到远程,合并到主分支,然后推送master

  4. 抓取分支
    多人协作时,大家都会向主分支进行推送各自的修改,
    git checkout -b dev origin/dev
    创建远程的origin的dev分支到本地来
    当你改完后,
    这会就是一个问题,,你推送不上去文件,因为已经有另外一个改动了,,所以你必须要先用git pull 把最新的提交 抓下来,然后在本地合并,解决冲突再推送,这样就会成功了

posted @ 2018-10-22 11:26  Firewine  阅读(206)  评论(0编辑  收藏  举报