天天看点

Git学习笔记首先推荐一个学习Git的可视化网站

学习的视频B站:

《学会Git玩转GitHub【全】》

《极客Python之Git实用教程(小甲鱼)》

分支合并 《尚硅谷Git教程全套》

Git是版本控制软件;

Github是项目代码托管的平台,借助git来管理项目代码。

首先推荐一个学习Git的可视化网站

https://learngitbranching.js.org

Git学习笔记首先推荐一个学习Git的可视化网站

一、关于GitHub

首先注册账户,我的是qq邮箱qq密码。

一些基本概念:

仓库(Repository),仓库用来存放项目代码,每个项目对应一个仓库,多个开源项目则有多个仓库;

收藏(Star),收藏项目,方便下次查看;

复制克隆项目(Fork);

发起请求(Pull Request,张三想改李四的项目通过发起请求);

关注(Watch),关注项目,当项目更新可以接收到通知;

事务卡片(Issue),发现代码BUG,但是目前没有成型代码,需要讨论时用。

二、 Git 基本命令

Git学习笔记首先推荐一个学习Git的可视化网站
Git学习笔记首先推荐一个学习Git的可视化网站
Git学习笔记首先推荐一个学习Git的可视化网站
Git学习笔记首先推荐一个学习Git的可视化网站

1.基本信息设置,打开Git,输入命令

  1. 设置用户名

    git config --global user.name ‘renaihu’

  2. 设置用户名邮箱

    git config --global user.email ‘[email protected]’

  3. 查看设置 git config --list

删除配置信息:

git config --global --nuset user.name

git config --global --unset user.email

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

2.初始化一个新的Git仓库

1、创建文件夹

mkdir test

2、在文件内初始化git(创建git仓库)

cd test

git init

3.向仓库添加文件

创建a1.php文件到工作目录 touch a1.php

添加a1.php到暂存区 git add a1.php git add -A 可以提交工作区中所有的文件

添加a1.php到仓库 git commit -m '第一次提交文件’

Git学习笔记首先推荐一个学习Git的可视化网站

4. 修改仓库文件

修改文件:vi a1.php

添加到暂存区:git add a1.php

提交到仓库:git commit -m '第一次通过git修改文件并提交到仓库’

查看一下状态:git status

5.删除仓库文件

删除仓库文件:git rm a1.php (同时本地的也被删除了)

提交操作:git commit -m ‘第一次通过git删除仓库文件’

6.重命名 git mv 老文件 新文件

7. 查看历史提交记录 git log

三、Git 远程管理仓库

1.克隆操作

git clone + 仓库地址

Git学习笔记首先推荐一个学习Git的可视化网站

地址在这:

Git学习笔记首先推荐一个学习Git的可视化网站

2.将本地仓库同步到git远程仓库中

git push

Git学习笔记首先推荐一个学习Git的可视化网站
如果无法同步或没有权限
The requested URL returned error: 403 Forbidden while accessing

答案:私有项目,没有权限,输入用户名密码,或者远程地址采用这种类型

vi .git/config
点开.git里的config


# 将
[remote "origin"]  
    url = https://github.com/用户名/仓库名.git
修改为:
[remote "origin"]
    url = https://用户名:密码@github.com/用户名/仓库名.git

           

远程团队协作案例:

  1. 项目经理创建远程仓库(不要点初始化,因为我们要用命令git init)
  2. 项目经理建立一个本地的仓库
  3. 初始化 git init

    将源码复制进来

  4. 配置仓库用户信息
    Git学习笔记首先推荐一个学习Git的可视化网站
    该配置到了.git/config文件,这里的配置仅仅针对当前项目有效。
  5. 配置别名,别名“taobao”就代表那两个地址
    Git学习笔记首先推荐一个学习Git的可视化网站
  6. 项目经理推送本地仓库到远程仓库

    git push taobao 分支名 (输入用户名,密码)

    推完之后会附带生成远程跟踪分支

    然后远程仓库就可以看到。

  7. 项目经理邀请成员加入团队 & 成员接收邀请

    在GitHub上操作

  8. 成员克隆远程仓库到本地 (再建立一个新的文件夹)

    git clone + 仓库地址(在本地生成.git 文件,配别名;默认主分支有对应的远程跟踪分支)

  9. 成员作出贡献

    修改源码文件

    git add

    git commit

    git push 别名 分支 (输入用户名 密码)

  10. 项目经理更新成员提交的内容

    git fetch taobao(将修改同步到远程跟踪分支上)

    git merger 远程跟踪分支

正常的数据推送 和 拉取步骤:

  1. 确保本地分支已经跟踪了远程跟踪分支
  2. 拉取数据:git pull
  3. 上传数据:git push

push错误的时候,可能原因:把windows凭据关于github的删除。

一个本地分支怎么去跟踪一个远程跟踪分支:

  1. 当克隆的时候,会自动生成一个master本地分支(已经跟踪了对应的远程跟踪分支)
  2. 在新建其他分支时,可以指定想要跟踪的远程跟踪分支

    git checkout -b 本地分支名 远程跟踪分支

    git checkout --track 远程跟踪分支

  3. 将一个已经存在的本地分支 改成一个跟踪分支

    git branch -u 远程跟踪分支

冲突

  1. git 本地操作会有冲突(典型合并的时候)
  2. git 远程协作的时候可能有冲突(push,pull)

四、Git 分支

Git学习笔记首先推荐一个学习Git的可视化网站
Git学习笔记首先推荐一个学习Git的可视化网站
Git学习笔记首先推荐一个学习Git的可视化网站
Git学习笔记首先推荐一个学习Git的可视化网站
Git学习笔记首先推荐一个学习Git的可视化网站

分支的本质 就是一个提交对象!里面存放着提交对象的哈希。

HEAD:是一个活动的指针,它默认指向master分支,切换分支时其实就是让HEAD指向不同的分支,每次有新的提交时,HEAD都会带着当前指向的分支一起移动。

创建分支:

在当前提交对象上创建分支

git branch name

在指定的提交对象上创建新的分支

git branch branchname commithash

创建分支并且切换过去

git checkout -b 分支名

相当于

git branch 分支名

git checkout 分支名

切换分支:

git checkout name

切换分支会动三个地方:HEAD, 暂存区, 工作目录(的文件)。

坑:

在切换分支的时候,如果当前分支上有未暂存的修改(第一次),或者有为提交的暂存(第一次),分支可以切换成功,但是这种操作可能会污染其他分支。

最佳操作:

每次切换分支前,当前分支一定得是干净的(已提交状态)。

查看分支:

显示分支列表 git branch

查看分支 git log --decorate

查看分支 git log --oneline

查看完整分支情况 git log --oneline --decorate --graph --all

查看分支指向的最新的提交 git commit -v

删除分支:

要先切换到主分支,才能删除想删除的分支

删除分支(可以删除已经合并的分支) git branch -d name

强制删除分支 git branch -D name

合并分支:

合并前要先切换到主分支,然后 git merge 分支名

快进合并,不会产生冲突

典型合并,可能产生冲突

解决冲突:打开冲突的文件,进行修改,add commit

Git存储:

在分支上的工作做到一半时,如果有切换分支的需求,我们应该将现有的工作存储起来。

git stash: 会将当前分支上的工作推到一个栈中

分支切换,进行其他工作,完成其他工作后,切回原分支

git stash apply:将栈顶的工作内容还原,但不让任何内容出栈

git stash drop: 取出栈顶的工作内容后,就应该将其删除(出栈)

git stash pop: git stash apply + git stash drop

git stash list :查看存储

Git后悔药:

撤销工作目录的修改: 如何撤回自己在工作目录中的修改 git checkout – 文件名(有空格)

撤销暂存区的修改: 如何撤回自己的暂存 git reset HEAD 文件名

查看暂存区有哪些文件: git ls-files -s

查看暂存区某个文件中的内容:git cat-file -p 哈希值

Git学习笔记首先推荐一个学习Git的可视化网站

撤销提交(版本区): 如何撤回自己的提交

(1)注释写出了 git commit --amend 打开去修改 注释

(2)内容写错的话,修改内容重新提交一次就可以了。

reset三部曲:

git reflog : 只要是HEAD变化,那麼git reflog就會記錄下來

第一部 : git reset --soft HEAD~ (HEAD~就是一个commithash)

只动HEAD(带着分支一起移动)

(用commithash的内容重置HEAD内容)

第二部 : git reset [–mixed] HEAD~

动了HEAD(带着分支一起移动)

动了暂存区

(用commithash的内容重置HEAD内容,重置暂存区)

第三部 : git reset --hard HEAD~ (危险操作)

动HEAD(带着分支一起移动)

动了暂存区

动了工作目录

(用commithash的内容重置HEAD内容,重置暂存区,重置工作目录)

checkout深入理解:

git checkout commithast & git reset --hard commithash

共同点:都需要重置HEAD 暂存区 工作目录

区别:

  1. checkout只动HEAD;–hard动HEAD而且带着分支一起走
  2. checkout对工作目标是安全的; --hard 是强制覆盖工作目录

checkout+路径

git checkout – filename

重置工作目录

git checkout commithash filename

重置暂存区,重置工作目录

Git学习笔记首先推荐一个学习Git的可视化网站

创建feature分支之后,就在分支内建立文件(所有操作都在分支进行)

echo “damu.text v1” > damu.txt

git add damu.txt

git commit -m ‘来了大目’

git log --oneline 查看分支情况

git log --decorate 也可以查看分支情况

Git学习笔记首先推荐一个学习Git的可视化网站

git status 查看状态,在分支feature上

Git学习笔记首先推荐一个学习Git的可视化网站

五、分支实战

Git学习笔记首先推荐一个学习Git的可视化网站
  1. git branch -f master 让master到 c6
    Git学习笔记首先推荐一个学习Git的可视化网站
    Git学习笔记首先推荐一个学习Git的可视化网站
  2. git branch -f bugFix HEAD~1 让bugFix相对于HEAD移动1步
    Git学习笔记首先推荐一个学习Git的可视化网站
    Git学习笔记首先推荐一个学习Git的可视化网站