git浅显易懂详解

首先感谢廖雪峰老师提供的git教程,在其官网上能够学习到git的详细介绍,我也是属于其中的一个学习者,通过此次学习将学习心得记录下来。

·git教程

1.安装git
linux安装:git 查看有没有安装git
sudo apt-get install git 这是提示安装的命令
Mac OS X安装:从appstore上下载Xcode,Xcode集成了git,运行Xcode,选择 Xcode->Preferences 弹窗中找到Downloads,选择Command Line Tools安装即可
温馨提示:Xcode是Apple官方IDE,是开发Mac和IOS App的必选装备,免费
Windows安装:git官网下载,安装即可,git bash就是命令行窗口
安装完成,需要机器自报家门,告诉机器你的名字和地址
git config --global user.name “your name”
git config --global user.email “email@example.com”
2.创建版本库 repository(目录)
选择合适的地方创建一个空目录
mkdir abc
cd abc
pwd 显示当前目录
git init 初始化仓库 .git是来跟踪管理版本库的
ls -ah 查看目录文件
不要使用windows自带的记事本编辑任何文本文件,因为保存UTF-8编码的文件在开头加了0xefbbbf(十六进制)的字符,可以用notepad++代替
编写一个readme.txt,已完成
3.时光机
git status 查看当前的状态,如果有修改会提示修改过,但未提交
git diff readme.txt 查看修改的内容
4.版本回退
修改之后想回退怎么办?

git log 是显示曾经提交过的历史记录,会显示用户名和邮箱地址
git log --pretty=oneline 只显示提交的提示信息和版本号(SHA1计算的)
git reset --hard HEAD^ 回到上一个版本
cat readme.txt查看readme的内容是不是上一个版本的
当又想回退到最新提交的那个修改版本,命令窗口没关闭,找到版本号
git reset --hard 1613 自动帮你找到版本号并回退到最新修改的
这个主要是归功于git中有一个HEAD指针
只是指向改变了
但是当你关闭电脑又想回退到第一次修改怎么办?
git reflog 记录每一次命令 这样你就可以看到你曾经提交过的内容

5.了解工作区和暂存区
.git中包含:stage(index)暂存区,master分支,工作区
若未被追踪的文件和待提交的文件存在,git status会提示详情
git commit 是将添加到暂存区的文件提交到master分支上
6.管理修改
git管理的是修改,而不是文件
记住提交之前要先添加到暂存区,git add 必不可少
7.撤销修改
就是灵活的使用版本回退
8.删除文件
git rm abc.txt 删除该文件,然后git commit 文件就从版本库中删除
另一种是只是删除了文件,没有提交,那么可以从版本库中恢复
git checkout
9.添加远程仓库
完全自己搭建一个运行git的服务器,github可以代替
创建一个SSH key
ssh-keygen -t rsa -C “example@example.com”
在user目录下有一个.ssh文件夹,下面有id_rsa(私钥),id_rsa.pub(公钥)
github需要识别你推送的提交确实是你自己推送的,不是冒充的
如果条件允许,自己搞一个git服务器,就可以隐私了
将ssh添加到github上之后,建立远程仓库就很简单了(过)
git remote add origin git@github.com user/fitstCode.git 与远程仓库建立关联
git push -u origin master 推送本地所有内容到远程库,会出现一些错误信息,可以使用 git push -u origin master -f 强制推送, 或者用
git pull origin master,在git push -u origin master
现在每次在本地做得修改都可以添加提交到本地仓库,在用git push origin master推送到github上
第一次使用git的clone时,ssh报错,只需要添加到github中信任表就行
10.远程库克隆
最好是先创建远程库,在从远程库中克隆
在github上创建仓库
在本地一个目录下打开git bash
git clone git@github.com:user/firstCode.git
Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快

**11.分支管理(重点)**创建分支和合并分支

时间线就是一条分支,HEAD为指向当前时间点的指针,指向master
git checkout -b dev 创建分支并切换到dev,相当于先创建分支,在切换过来
git branch 查看当前分支

分支上的操作完成之后
切换到master上 git checkout master
合并分支 git merge dev
查看文件 cat readme.txt
删除分支 git branch -d dev
12.解决冲突
就是主分支和分支都修改了一个文件的内容,只有手动修改过来,才能实现到当前master上

git log --graph --pretty=oneline --abbrev-commit
查看分支的合并情况
13.分支管理策略
fast forward模式
分支合并 git merge --no-ff -m “merge with no-ff” dev
加上–no-ff参数就可以用普通模式合并
分支策略:master分支只是用来发布新版本,不能再上面干活
分支上干活,dev或者其他test分支
14.bug分支
bug太平常,使用临时分支修复,修复后合并,然后删除分支
git提供了一个stash功能,将当前工作现场储藏起来,等以后恢复现场在继续工作,就是自己目前何有代码没提交,突然有一个bug要修改,这时候用的上这个功能
git stash 储藏现场
在哪个分支上修改bug,然后考虑在该分支上创建临时分支
比如在master分支上修改bug,就需要先将dev上的代码储藏起来
git stash
然后切换到master分支,
git checkout -b bugs 创建bugs分支并切换到bugs
修改完后,添加提交,然后切换回master分支合并bugs
最后删除bugs分支
而之前的dev分支呢?
git stash list 查看,恢复有两种方法:git stash apply,git stash drop删除stash内容;git stash pop 恢复的同时把stash内容删除
15.feature分支
git branch -D 强行删除,与bugs分支类似
16.多人协作
git remote 查看远程库的信息
git remote -v 显示更细的信息
git push origin master(master可以换成其他分支)推送本地分支
推送的一般只有mater和dev,修复bug和feature分支就自己本地玩一玩
小伙伴默认clone的是master分支,需要在dev上开发的话,需要创建远程origin的dev分支到本地
git checkout -b dev origin/dev
git add abc.txt
git commit -m “提交到dev”
git push origin dev
如果你也推送了这个文件,会冲突,先用git pull 把最新的拉下来,然后本地合并,在推送
git pull 拉去dev代码
建立本地dev和远程dev连接:git brach --set-upstream-to=origin/dev dev ,然后在git pull,解决冲突后在push
要点:
因此,多人协作的工作模式通常是这样:
首先,可以试图用git push origin 推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用
git pull
试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令
git branch --set-upstream-to origin/

这就是多人协作的工作模式,一旦熟悉了,就非常简单。
17.rebase(变基)
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比
git rebase
rebase操作的特点:把分叉的提交历史“整理”成一条直线,看上去更直观。缺点是本地的分叉提交已经被修改过了。
git log --graph --pretty=oneline --abbrev-commit 查看效果
18.标签管理
标签的作用是确定版本的标记,相当于一个快照,类似分支,但是不能像分支可以移动,创建和删除只能瞬间完成,
版本号是一大串符号,不好找,所以需要标签V1.2,与commit版本号绑定的
git tag V1.2
git tag 查看标签
如果忘记打标签了,可以先调出来提交历史版本
git log --pretty=oneline --abbrev-commmit
然后git tag v0.9 1234
查看标签 git tag
具体的标签信息 git show v0.9
说明标签:git tag -a v0.1 -m “version 0.1” 1234
删除标签 git tag -d v0.1
推送标签到远程 git push origin v1.0
删除远程标签:需要先删除本地的,git tag -d v0.9
然后删远程 git push origin :refs/tags/v0.9
要点:
命令git push origin 可以推送一个本地标签;

命令git push origin --tags可以推送全部未推送过的本地标签;

命令git tag -d 可以删除一个本地标签;

命令git push origin :refs/tags/可以删除一个远程标签。

使用github的体验是访问速度太慢,有时候无法连接,所以替代品是国内的git托管服务–码云
和GitHub相比,码云也提供免费的Git仓库。此外,还集成了代码质量检测、项目演示等功能。对于团队协作开发,码云还提供了项目管理、代码托管、文档管理的服务
注册:需要填写SSH公钥
关联:git remote add origin git@gitee.com:user/firstCode.git
若报错,可能是已经存在了关联
查看远程库信息 git remote -v

19.码云和github
一个本地库能不能既关联GitHub,又关联码云呢?
使用多个远程库时,我们要注意,git给远程库起的默认名称是origin,如果有多个远程库,我们需要用不同的名称来标识不同的远程库
注意现在远程库的名字叫gitee,不是origin
需要删除已有的git远程库 git remote rm origin
先关联github远程库 git remote add github git@github.com:michaelliao/learngit.git
再关联码云 git remote add gitee git@gitee.com:liaoxuefeng/learngit.git
查看远程库:git remote -v
推送到github:git push github master
推送到码云:git push gitee master
这样就实现了两个远程库与本地库关联

20.特殊文件忽略
比如说操作系统自动生成的缩略图,存放口令的配置文件等
都可以在git工作区根目录下的.gitignore中进行填写

配置别名 如checkout 用co
commit 用ci
可以使用git config -global alias.co checkout

$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
git config --global alias.unstage ‘reset HEAD’
甚至还有人丧心病狂地把lg配置成了:
git config --global alias.lg “log --color --graph --pretty=format:‘%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset’ --abbrev-commit”

别名都在.git/config文件中的alias

21.搭建git服务器
搭建Git服务器需要准备一台运行Linux的机器,强烈推荐用Ubuntu或Debian,这样,通过几条简单的apt命令就可以完成安装。
假设你已经有sudo权限的用户账号,下面,正式开始安装。
https://www.liaoxuefeng.com/wiki/896043488029600/899998870925664
第一:安装git

$ sudo apt-get install git
第二:创建用户
$ sudo adduser git
第三:创建证书登录
收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
第四:初始化git仓库
$ sudo git init --bare sample.git
第五:禁用shell登录
通过编辑/etc/passwd文件完成
第六步,克隆远程仓库
git clone git@server:/srv/sample.git
管理公钥的话,可以使用gitosis

22.git命令表
https://gitee.com/liaoxuefeng/learn-java/raw/master/teach/git-cheatsheet.pdf
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值