美文网首页
Git学习笔记

Git学习笔记

作者: Blacker丶Boom | 来源:发表于2017-11-10 23:55 被阅读0次

基础命令

  1. git init 把目录变成Git可以管理的仓库。
  2. git add 把文件添加到仓库。
  3. git commit 把文件提交到仓库
  4. git commit -m "这里是文件提交说明" 添加提交说明,方便查阅。
  5. git status 查看追踪的目录文件哪些做了修改。
  6. git stage 查看仓库当前状态。
  7. git diff 查看上次修改内容。
  8. git log 查看历史修改记录。
    git log --pretty=online 只看提交说明

时光穿梭

  1. git reset --hard HEAD^ 回到上一个版本。
  2. git reset --hard 321ef1 回到版本为 321ef1到状态,版本号没必要写全,前几位就可以,Git会自动去找。
  3. git reflog 查看历史穿梭版本。
  4. git checkout -- file 丢弃工作区的修改。(git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。)

HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

工作区和暂存区

工作区(Working Directory)
顾名思义就是当前工作的目录。

版本库(Repository)
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

git add命令将文件添加到暂存区。
git commit命令将所有暂存区内容提交到当前分支。

Workflow
因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

其实就是将需要提交的文件修改通通放到暂存区,然后一次性提交暂存区的所有修改。

远程仓库

1.创建SSH Key

$ ssh-keygen -t rsa -C "youremail@example.com"

2.关联远程仓库

$ git remote add origin git@github.com:blacker/learngit.git

blacker为关联的github账户名,learngit为仓库名

3.推送到远程库

git push -u origin master

git push命令是把本地当前分支masrer推送到远程库。
如果远程库是空的,第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以使用简化命令。

git push origin master

错误处理

To github.com:hellowqw/leargit
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'git@github.com:hellowqw/leargit'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

出现错误的主要原因是github中的README.md文件不在本地代码目录中
解决
可以通过如下命令进行代码合并【注:pull=fetch+merge]

git pull --rebase origin master

执行上面代码后可以看到本地代码库中多了README.md文件

分支

创建仓库时默认只有一个分支,即主分支masterHEAD严格来说不是指向提交,而是指向mastermaster才是指向提交的。
最初,master分支是一条线,Git用master指向最新的提交,在用HEAD指向master,就能确定当前分支,以及当前分支的提交点:


每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。
当创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:
git checkout -b dev 

-b参数表示创建并切换分支,相当于以下两条命令:

git branch dev
git checkout dev

git branch命令查看当前分支:

git branch
   * dev
   master

Git创建一个分支很快,因为除了增加一个dev指针,改变HEAD的指向,工作区的文件都没有任何变化!

不过,从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变:

假如在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最简单的方法,就是直接把master指向dev的当前提交,就完成了合并。
切换master分支:

git checkout master

此时状态:


现在,把dev分支的工作成果合并到master分支上:
git merge dev
Updating d17efd8..fec145a
Fast-forward   #快进模式也就是直接把master指向dev的当前提交,所以合并速度非常快。
 readme.txt |    1 +
 1 file changed, 1 insertion(+)

git merge命令用于合并指定分支到当前分支。


所以Git合并分支也很快!就改改指针,工作区内容也不变!

合并完分支后,甚至可以删除dev分支。

git branch -d dev

删除dev分支就是把dev指针给删掉,删掉后,就剩下了一条master分支。

git branch
  * master

因为创建、合并和删除分支非常快,所以Git鼓励我们使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。

小结

查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>

分支管理策略

在实际开发中,我们应该按照几个基本原则进行分支管理:

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

所以,团队合作的分支看起来就像这样:


令,上面有提到合并分支时又一个Fast forward模式,需要注意到是这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

git merge --no-ff -m "merge with no-ff" dev

相关文章

  • 学习笔记| git深入浅出 Part1_快速操作指南

    Git专题 学习笔记| git深入浅出 Part1_快速操作指南 学习笔记| git深入浅出 Part2_Git...

  • git 入门

    git 入门学习笔记----3个入门命令:git init、git add、git commit -v 学习场景(...

  • git记录

    Git Magic图解gitgit 学习笔记git游戏(学习)1、消除文档路径中文乱码git config --g...

  • Git学习笔记--常用命令整理

    超实用Git学习笔记 Git全局配置git config --global user.name "用户名"git ...

  • Git常用命令与学习总结

    安装Git Git的下载地址:Git官网下载地址 学习网址 git 学习笔记- Book 在线练习地址 基础常用指...

  • git学习笔记(二)—— git的简单操作

    这是本系列学习笔记的第二篇git 学习笔记(一)—— 初识 git 前言 本篇文章将简要的介绍 Git 的一般操作...

  • 关于crlf

    Git学习笔记:Git设置CRLF(行尾换行符) git config --global core.autocrl...

  • GIT

    Git学习笔记 Git 与 Github对接: cd到当前文档 git init初始化git git add -A...

  • Git学习笔记

    git学习笔记 声明 本文是本人学习Git过程中所做的笔记,以便日后查阅,文中多有错漏之处,不建议用作学习材料,文...

  • Git学习笔记

    git 学习笔记 注册个人信息 git config --global user.name(你的用户名) git ...

网友评论

      本文标题:Git学习笔记

      本文链接:https://www.haomeiwen.com/subject/abnimxtx.html