git-基本操作-1

1安装

window上安装git-官网直接下载。

下载完成后需要在git bash命令行中输入:

$ git config --global user.name "yourname"
$ git config --global user.email "youremail"
--global表示这台机器上所有的git仓库都会使用这个配置。

2.创建本地仓库

创建一个空目录

cd 空目录
$ git init//初始化
在当前目录中会出现.git文件夹,其时用来跟踪管理版本库的,不要随便改动。

编写一个文本文件read.txt,提交代码到暂存区。
$ git add read.txt
将暂存区的文件提交到仓库
$ git commit -m "说明文字"
-m后面的说明文字有助于后期管理及阅读。

在这里插入图片描述


注意:git命令必须在仓库目录下执行。提交某个文件时,必须确保当前目录下存在该目录。科使用lsdir确定某目录下的文件列表。

$ `git status` 可以查看仓库的状态。
$ `git diff` 可以查看上次对文件的修改之处。在git add提交到暂存区之后,git diff不再提示
$ `git log` 可以查看提交的commit历史。
$ `git --stat` 在git log基础上输出文件增删改查的统计数据。

3.版本回退

$ git reset --hard HEAD^//回退上一版本。
$ git reset --hard HEAD~100//回退100个版本。
$ git reset --hard "提交id"
$ git reset --hard//回退到放入暂存区之前的版本,commit之后不能回到之前版本,撤销工作区更改。
$ git reset HEAD//回退到放入暂存区之前的版本,工作区需要使用git checkout -- name回退工作区的修改。

在这里插入图片描述

当你回退到某个版本之后,发现还是原来的版本好,但是你已经关闭了电脑,怎么办呢?使用git reflog查看以前执行的操作,并根据id跳转到指定版本。
$ git reflog//查看执行过的命令

在这里插入图片描述

4.撤销修改

$ git checkout --file//撤销对工作区的修改.
在保存到暂存区之后,则不能使用git checkout回到add之前的版本。
总之就是回到最近一次git add或git commit 之后的状态。
7.删除文件
git rm file//此时删除了工作区的文件,可用git reset+git reflog进行撤销。

5.远程仓库

在用户主目录下,命令行输入:

$ssh-keygen -t rsa -C "youremail"//这会生成一个公钥和一个私钥,私钥不可泄漏。
在github中ssh中设置这个公钥,就可以push本地仓库当远程仓库。每台电脑有一个ssh公钥就行了。

6.添加远程库

在GitHub中新建一个 repository,在本地仓库中运行:

$ git remote add origin git@github.com:GitHub账号/仓库的名字.git
//可以在github中查看地址写法。
//例如:git remote add origin git@github.com:dingding/name.git
//origin是远程库的名字,可以自己设置。
$ git push -u origin master
//-u作用是不仅会把本地的master内容推送到远程的master分支,还会把本地的master和远程的master分支关联起来,在以后推送时简化命令。

6.分支管理

每次提交,都会在git里进行记录,而这些记录共同构成了当前的那一条分支,即主分支(master分支),当你的提交次数越来越多,master分支的线也就越来越长。

HEAD的作用就是指向当前分支。

master是指向提交

当我们新创建一个分支dev的时候,git将dev的指针指向和master相同的提交,并将HEAD指向dev,表示当前在dev指针分支上。这样我们就创建了一个dev分支。
注意:此时,对工作区的修改只会反应在dev分支上。


我们创建一个git本地仓库,添加yes.txt文本文件。
在这里插入图片描述
在当前master分支对文本内容进行修改为yes+no。并创建一个dev分支。

git switch -c dev
git add .
git commit -m "dev"
在dev分支下查看yes.txt

在这里插入图片描述
现在切换到master分支。

git switch master

查看yes.txt的内容。

在这里插入图片描述

master分支下的yes.txt的内容并没有改变。因为dev的提交点前进了一步,但是master的提交点并没有改变。
如果想要两个分支下的内容都改变,则需要对分支进行合并。
git merge dev//将dev分支合并到当前分支。
合并之后就可以删除dev分支了。
git branch -d dev

部分命令:
1:git switch -c //git checkout -b//创建并切换分支
2:git switch//git checkout//切换分支
3:git branch//查看分支,当前分支前会有“*”显示
4:git merge // 合并指定分支到当前分支
5:git branch -d //删除分支

7.合并冲突

假如当你在master分支中修改了工作区的内容,并且提交到了仓库。然后又创建了一个dev仓库,并且也修改了工作区的内容并且完成了提交到仓库。此时,如果进行合并,就会出现“合并冲突”。

在这里插入图片描述


冲突后打开yes.txt文件:
在这里插入图片描述
解决冲突的方法就是手动的更改文件中的内容,将文件中的内容更改为我们想要的内容,然后再提交。

8分支管理

在合并通知时,默认是fast-forward模式,在这种模式下,删除分支后,会丢失分支信息。如果强制禁用fast-forward模式,git会在merge时生成一个新的commit,从而可以在分支历史上看出分支信息。
git merge --no-ff -m "no-ff"//使用--no-ff的意义在于其某分支删除后可以在分支历史上看到分支信息

分支策略原则:master分支应该保证稳定,不能在master上干活。

9Bug分支

在git中,bug的修改通过临时分支实现。 假如你在dev分支工作时接到修复bug的任务,但是dev的任务还没完成,不能提交。这时请使用git stash命令保存当前dev分支的工作内容。
git stash //保存当前分支的工作状态。

使用git stash list 可以查看这个stash中保存的状态。
在master中对bug进行修复时,创建修复bug的临时分支。

git switch master
git switch -c bug01

修复完成之后,回到master分支将bug01合并到master,

git merge --no-ff -m "bug submit" bug01

此时,bug在master分支中已经被修改,但是dev分支是早期在master分支中分出来的,那么dev分支也应该执行bug修复。git提供cherry-pick命令来复制特定的提交到当前分支。

git cherry-pick bugcommit的id// 这个id在bug提交的时候可以看到,请复制粘贴。

现在,dev分支的bug也被 “重蹈覆辙” 了。
最后,请恢复dev分支之前保存的状态。

git stash apply//恢复后,stash的内容仍然存在,使用git stash list可以查看。
git stash pop//恢复后,stash里的内容会被删除。

你也可以恢复到指定的stash

git stash apply stash@{0}

9.分支推送

当你从远程仓库克隆时,远程仓库的默认名称是origin,当然你也可以自己设置。
查看远程仓库的信息:

git remote或 git remote -v
git push origin master//将master分支推送到远程仓库origin。

push注意:master分支是主分支,应保持其与远程master同步。dev是开发分支,团队的成员都在上面工作,所以也必须保持同步。bug分支只用于本地修复bug,可以不用推送。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值