Git 新手倒腾(一)

全部的版本控制系统,其实只能跟踪文本文件的改动,好比TXT文件,网页,全部的程序代码等等,Git也不例外。版本控制系统能够告诉你每次的改动,好比在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但无法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改为了120KB,但到底改了啥,版本控制系统不知道,也无法知道。php

工做区和版本库

工做区就是电脑中实际能看到的文件夹,好比labshare文件夹
labshare文件夹
图片中显示有个.git隐藏目录,它是Git的版本库。git

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

聊雪峰的git教程中的图片
每次进行git add操做时,将文件放入stage暂存,git commit后将文件放入当前分支url

初始化版本库

1.初始化一个Git仓库,使用git init命令。
2.添加文件到Git仓库,分两步:spa

  • 使用命令git add ,注意,可反复屡次使用,添加多个文件;
  • 列表项目使用命令git commit -m "注释"

基础命令

git status命令可让咱们时刻掌握仓库当前的状态。命令行


git diff进行查看相比较上个状态进行了哪些更改,如:版本控制

git diff hello.php

git log进行查看git日志,若是一次显示太多,可选参数为--pretty=oneline
如使用git log命令后,有多块记录,每块有四行指针

commint:123jkh123jkh12kjne12j3 //一串数字
author:XXX
Date:XXXX-XX-XX
XXXX  //这行为git commit -m "XXXX"

--graph显示分支合并图
--abbrev-commit日志


git rm进行文件删除,而后git commit -m "XXX",若是rm误删工做区文件,还没进行commit可以使用git checkou --filename从版本库中恢复出来code


git clone url进行从远程库克隆,可选择httpssshssh速度优于https


如去切换至其余分区或进行其余工做,git stash用于将手头工做暂时保存,git stash pop回到工做现场

版本回退或重返将来

HEAD表示当前版本,上一个版本是HEAD^,多个版本以前可以使用HEAD^n(n为数字)
具体命令为:git reset --hard HEAD^,去上一个版本
若是后悔了想回将来,前提命令行窗口未关闭,可git log查看commit后的一串,写前几位就行能进行惟一表示,如

git reset --hard absd11

更糟糕的状况是你进行版本回退后次日又想重返将来,git log查询不到须要版本的coomit了,这时请使用git reflog,样子多是这样的

as12312 HEAD@{0}: commit : XXXXX
asdvcad HEAD@{1}: commit : XXXXX
a1deff1 HEAD@{2}: commit : XXXXX

最开始的数字就能够进行 git reset --hard as12312 ,进行穿梭

撤消修改

1.当你改乱了工做区某个文件的内容,想直接丢弃工做区的修改时,用命令git checkout --filename
2.当你不但改乱了工做区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD filename,暂存区的修改回退到工做区,工做区的丢弃可按照1
3.若是提交不适内容至版本库,请进行版本回退

分支管理

git checkout -b name,建立并切换到指定分区,至关于结合命令

git branch name //建立分支
git checkout name //切换分支

使用git branch查看当前分区,当前分区前有*标识
git merge name用于合并指定分支到当前分支
git branch -d name删除分支

分支合并时产生冲突应解决冲突再提交去工做区文件查看,标识为<<<<<<<=======>>>>>>>标记出不一样分支的内容将冲突修复后再提交

git通常使用fast forward模式进行分支合并,很差的地方是删除分支后悔丢掉分支信息,因此模式可调为--no-ff禁用fast forward,在合并时会生成一个新的commit,所以可加描述进去

git merge --no-ff -m "no ff" dev //将dev分支合并至当前分支

分支策略

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

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

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

你和你的小伙伴们每一个人都在dev分支上干活,每一个人都有本身的分支,时不时地往dev分支上合并就能够了。

因此,团队合做的分支看起来就像这样:
分支管理图
master是主分支,需时刻与远程同步
dev全部团队开发工做在上面,时刻与远程同步

多人协做

抓取分支
1.git clone url,克隆远程库,这时只能看到master分支
2.建立远程的dev到本地

git checkout -b dev origin/dev

基本流程

1.首先,能够试图用git push origin branch-name推送本身的修改;

2.若是推送失败,则由于远程分支比你的本地更新,须要先用git pull试图合并;

3.若是合并有冲突,则解决冲突,并在本地提交;

4。没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

5.若是git pull提示“no tracking information”,则说明本地分支和远程分支的连接

关系没有建立,用命令git branch --set-upstream branch-
name-origin/branch-name。

这里不少流程和思想参考廖雪峰的Git教程,不胜感激前人无私分享。
地址:Git教程--廖雪峰

相关文章
相关标签/搜索