git学习笔记

 从今天开始学习git系统,一直听过、想用,公司这边用svn,所以自己抽空学习一下,这么火的东西不会怎么行?

一、准备工作

1,下载git版本控制系统,地址百度上下一个,git网站下载打不开

2,注册个github账号,远程仓库要用

二、开始

1,安装git,按照默认提示一步步安装。一般都成功了。

2,右键git bash 进入命令行模式

三、命令

git init  建立仓库

git  config --global user.name ""

git config --global user.email ""

echo  1 > index.html  >意思是清空index.html 然后写入1

echo  2>> index.html  >>意思追加内容

git add Index.html 添加到缓存区

git commit  -m  提交所有缓存区的文件到仓库里去

git status 查看当前目录文件状态

git status -s 加上 -s 参数可以用精简方式


如果git status告诉你有文件被修改过,

  • git diff 可查看工作区和暂存区的差异。
  • git diff HEAD 可查看工作区和HEAD(当前工作分支)相比的差异
  • git diff --cached 可查看暂存区和历史区的差异.
git log 查看更改记录
$ git log --oneline 简介的方式查看历史记录(推荐)


版本回退

git reset --hard HEAD^ //把历史区重置到上一个提交,请注意在windows的cmd下面此语句不行,只能在git bash下执行,windows下可以把HEAD^换成上一个 commit id

git reset扩展
git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本, 工作区 不变,回退历史区 和 暂存区
git reset –soft:回退到某个版本,只回退了历史区的信息,工作区 和 暂存区 都不变
git reset –hard:彻底回退到某个版本,回退 工作区 、历史区 和 暂存区 。
 

撤销

1,更改工作区 未add 时  git checkout fielname  
2,add,未commit时  git checkout head filename
3,已经提交后,git reset --hard xxxxx(版本号)

删除 
删除文件:git rm filename

创建和合并分支

Git鼓励大量使用分支:

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

当Git无法自动合并分支时,就必须首先解决冲突。
解决冲突后,再提交,合并完成。

用 git log --graph --oneline命令可以看到分支合并图。

git branch命令查看当前分支

分支策略

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

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

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

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

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

小结

Git分支十分强大,在团队开发中应该充分应用。

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。


隐藏工作台

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

$ git checkout -b issue

$ echo fixbug >> index.html
$ git add index.html
$ git commit -m "fixbug"

修复bug等操作

$ git checkout master
Switched to branch 'master'
$ git merge --no-ff -m "merge issue" issue

回到相应的分支 进行合并

$ git branch -d issue

删除bug分支

回到原来的分支

$git checkout dev

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug.
修复后,再:

  • git stash list 查看一下有哪些stash
  • git stash apply 应用某个stash而不删除stash
  • git stash pop 应用某个stash并且删除stash
  • git stash clear 一次性清理所有的stash
    从而回到工作现场
创建标签
  • 命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id
  • git tag -a <tagname> -m "标签注释..." 可以指定标签信息;
  • 命令git tag可以查看所有标签。

要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git

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

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;


$ git clone git@github.com:fangdown/demo.git 克隆远程库


推送分支
git push origin master



git push origin dev
$ git checkout -b dev
 $ git push origin dev


查看远程库信息,使用git remote -v

本地新建的分支如果不推送到远程,对其他人就是不可见的;

从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

建立本地分支和远程分支的关联,使用git branch --set-upstream-to=devorigin/branch-name

从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。



  • 命令 git push origin <tagname>可以推送一个本地标签;
  • 命令 git push origin --tags可以推送全部未推送过的本地标签;
  • 命令 git tag -d <tagname>可以删除一个本地标签;
  • 命令 git push origin :refs/tags/<tagname>可以删除一个远程标签。

git config --local
git conifg --user.name

git config --system

git配置的增删改查

git config --global --add user.name zfpx 增加键值
git config user.name 查看用户名
git config --get user.name 取得用户名

git config --list --global 列出global所有的变量
git config --global --unset user.name zfpx 删除一个值
git config --global --unset user.name 删除所有值
git config --global user.name zfpx
git config --list --global 列出所有的值

git全局忽略

git config --global core.excludesfile ~/.gitignore_global

忽略文件的原则是:

  • 忽略操作系统自动生成的文件,比如缩略图等;
  • 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
  • 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值