git基础使用记录

git使用手册

安装完成后,设置用户名和邮箱
$git congif --global user.name "xxxxx"
$git congif --global user.email "xxxxx"
//--global 使得可以在本机器所有git仓库都使用这个配置,也可以对特定仓库指定不同的用户和邮箱

操作:
git bash中的命令与linux相似,基本命令可以直接使用

创建版本库(respository)
$git init
//创建的.git目录是Git用来跟踪管理版本的,不要乱动
//首先要明确下,所有的版本控制系统,只能跟踪文本文件的改动,比如txt文件,网页,所有程序的代码等,Git也不列外,版本控制系统可以告诉你每次的改 动,但是图片,视频这些二进制文件,虽能也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是知道图片从1kb变成 2kb,但是到底改了啥,版本控制也不知道。

添加文件
先在文件管理器中创建文件
$git add 文件名

提交到仓库
$git commit -m "注释"

查看是否有文件未提交
$git status
//未提交的文件必须先add添加到库再commit提交

差异比较
$git diff 文件名
//查看被修改后的文件与git库中的文件的差异

//提交修改与提交文件一样,先add再commit


版本回退
查看历史记录
$git log
//显示最近到最远的修改记录
//$git log --pretty=oneline  合并一行

回退
$git reset --hard HEAD^
//每个^回退一个版本
$git reset --hard HEAD~100
//回退100个版本
// cat 文件名 查看内容 vim 可以修改

查看版本号
$git reflog
通过版本号回退
$git reset --hard 版本号


理解工作区与暂存区的区别
工作区:除.git隐藏目录外的文件以及以后新建的目录和文件
版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。

撤销修改
//可以直接回退版本或者直接修改文件内容
$git checkout -- 文件名
//命令 git checkout –readme.txt 意思就是,把readme.txt文件在工作区做的修改全部撤销,
这里有2种情况,如下:
readme.txt自动修改后,还没有放到暂存区(git add),使用 撤销修改就回到和版本库一模一样的状态。
另外一种是readme.txt已经放入暂存区了,接着又作了修改,撤销修改就回到添加到暂存区后的状态。
对于第二种情况,我想我们继续做demo来看下,假如现在我对readme.txt添加一行 内容为6666666666666,我git add 增加到暂存区后,接着添加内容7777777,我想通过撤销命令让其回到暂存区后的状态。结果为6666666666666

删除文件
添加文件,add,commit掉之后,删除文件或者rm 文件名
此时版本库中仍有该文件,执行commit就能删除版本库中的该文件
//在版本库中恢复
$git checkout -- 文件名 //--不能少,否则就是创建分支
然后commit ,工作区的文件就恢复了

小结
添加文件,删除文件,修改,恢复文件,撤销修改,都要commit提交后才能生效修改,回退版本直接reset


远程库操作
新机器要使用库都要把本机的ssh key添加到github中
本地查看ssh,在c盘用户目录下.ssh文件夹的id_rsa.pub文件中,另一个是私钥,在github,setting,ssh key中添加ssh key,将本地的公钥复制进来,填写title,添加。
在github创建库,拷贝地址
本地$git remote add origin 远程库地址
推送$git push -u origin master
//由于远程库是空的,我们第一次推送master分支时,加上了 //–u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关
//联起来, 在以后的推送或者拉取时就可以简化命令。
从现在起,只要本地作了提交,就可以通过如下命令:
git push origin master
把本地master分支的最新修改推送到github上了,现在就拥有了真正的分布式版本库了。

克隆远程库
git clone 远程库地址
//windows下会在当前目录下创建同名文件夹,里面包含所有文件和.git库

分支创建与管理
HEAD分支指向当前操作的分支,master是主分支,切换分支到dev,HEAD指向dev,修改并且合并完dev后,就可以删除dev分支
$git branch
//查看所有分支
$git branch dev
//创建dev分支
$git checkout dev
//切换到dev分支 当前分支显示在目录的括号内(master)  (dev)
$git checkout -b dev
//创建dev分支, -b 创建并切换到dev分支
$git branch -d dev
//删除dev分支
合并分支
$git merge dev
//在master下执行,将dev分支合并到master 

本地分支合并冲突解决
两个分支对同一个文件做出的修改不同,在master上merge时会产生冲突,手动修改冲突的部分(直接编辑文件内容)再合并

3.分支管理策略。

      通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,
      现在我们来使用带参数 –no-ff来禁用”Fast forward”模式。
$git merge --no-ff -m "注释" dev
//在master上合并dev
然后删除dev


分支策略:首先master主分支应该是非常稳定的,也就是用来发布新版本,一般情况下不允许在上面干活,干活一般情况下在新建的dev分支上干活,干完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。


bug分支
当前分支还没有提交,先隐藏当前工作场地
$git stash
再查看git status保证干净
然后创建bug分支,处理完切换回master合并掉
再切换dev分支,使用
$git stash list
查看工作场地
工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,可以使用如下2个方法:
1.git stash apply恢复,恢复后,stash内容并不删除,你需要使用命令git stash drop来删除。
2.另一种方式是使用git stash pop,恢复的同时把stash内容也删除了。


多人协作。
当你从远程库克隆时候,实际上Git自动把本地的master分支和远程的master分支对应起来了,
并且远程库的默认名称是origin。
要查看远程库的信息 使用 git remote
要查看远程库的详细信息 使用 git remote –v

推送分支:
推送分支就是把该分支上所有本地提交到远程库中,推送时,要指定本地分支,
这样,Git就会把该分支推送到远程库对应的远程分支上:
使用命令 git push origin master

master分支是主分支,因此要时刻与远程同步。
一些修复bug分支不需要推送到远程去,可以先合并到主分支上,然后把主分支master推送到远程去。

抓取分支
我们的小伙伴要在dev分支上做开发,就必须把远程的origin的dev分支到本地来,
于是可以使用命令创建本地dev分支:
$git checkout  –b dev origin/dev
修改完后add,commit,再 git push origin dev
发生冲突时
$git branch --set-upstream dev origin/dev 
指定本地分支与远程分支链接,再
$git pull
拉取,修改完后(和分支管理的冲突解决一样),再push

因此:多人协作工作模式一般是这样的:
首先,可以试图用git push origin branch-name推送自己的修改.
如果推送失败,则因为远程分支比你的本地更新早,需要先用git pull试图合并。
如果合并有冲突,则需要解决冲突,并在本地提交。再用git push origin branch-name推送。

Git基本常用命令如下:
   mkdir:         XX (创建一个空目录 XX指目录名)
   pwd:          显示当前目录的路径。
   git init          把当前的目录变成可以管理的git仓库,生成隐藏.git文件。
   git add XX       把xx文件添加到暂存区去。
   git commit –m “XX”  提交文件 –m 后面的是注释。
   git status        查看仓库状态
   git diff  XX      查看XX文件修改了那些内容
   git log          查看历史记录
   git reset  –hard HEAD^ 或者 git reset  –hard HEAD~ 回退到上一个版本
                        (如果想回退到100个版本,使用git reset –hard HEAD~100 )
   cat XX         查看XX文件内容
   git reflog       查看历史记录的版本号id
   git checkout — XX  把XX文件在工作区的修改全部撤销。
   git rm XX          删除XX文件
   git remote add origin https://github.com/tugenhua0707/testgit 关联一个远程库
   git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库
   git clone https://github.com/tugenhua0707/testgit  从远程库中克隆
   git checkout –b dev  创建dev分支 并切换到dev分支上
   git branch  查看当前所有的分支
   git checkout master 切换回master分支
   git merge dev    在当前的分支上合并dev分支
   git branch –d dev 删除dev分支
   git branch name  创建分支
   git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作
   git stash list 查看所有被隐藏的文件列表
   git stash apply 恢复被隐藏的文件,但是内容不删除
   git stash drop 删除文件
   git stash pop 恢复文件的同时 也删除文件
   git remote 查看远程库的信息
   git remote –v 查看远程库的详细信息
   git push origin master  Git会把master分支推送到远程库对应的远程分支上

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值