Git---git基础知识介绍及操作大全

目录

一、Git基础知识介绍

二、git操作大全

三、操作实例如下

 


一、Git基础知识介绍

1、Git的优势:分布式,分支管理

2、Git应用软件:Github、Git-lab、"码云"、Git-bash、TortoiseGit(建议先熟悉了命令)

3、git 的3层结构(工作区域)

(1)工作区working directory:添加、编辑、修改文件等动作

(2)暂存区-staging index:暂存已经修改的文件最后统一提交到git仓库中

(3)版本库(git本地仓库)-git directory(Repository):工作区的隐藏目录【git】,最终确定的文件保存到仓库,成为一个新的版本,并且对他人可见

把一个文件放到Git仓库只需要两步:

第一步:git add file 添加文件到暂存区

第二步:git commit -m "message" 提交版本库

4、git 的四种状态

  • untracked 未被追踪
  • modified 工作区修改了某个文件但还没有添加到暂存区
  • staged 工作区修改的文件已添加到暂存区但还没提交到版本库
  • committed 数据已存储到本地仓库仓库中

5、Git远程仓库

使用远程仓库的目的:备份,实现代码的集中化管理,代码共享。

5.1 本地Git仓库和GitHub仓库之间的传输是通过SSH加密,所以需要进行如下配置

(1)创建SSH key '

ssh-keygen -t rsa -C "youremail@example.com"

把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可.

在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

(2)登陆GitHub,打开“Account settings”,“SSH Keys”页面

填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容

5.2 仓库关联

方式一:最好的方式是先创建远程库,然后,从远程库克隆。

Git支持多种协议,包括https,但ssh协议速度最快。克隆远程仓库的两种方式

(1)git clone https://github.com/maidu-xbd/git-learn2.git

使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。

(2)使用ssh协议 git clone git@github.com:maidu-xbd/git-learn2.git

方式二:先有本地库,后有远程库的时候,如何关联远程库。

要关联一个远程库,使用命令git remote add origin git@github.com:maidu-xbd/learnSpace.git;

关联一个远程库时必须给远程库指定一个名字,origin是默认习惯命名;

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

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

git remote rm <name> 删除远程库

git remote -v 查看远程库信息

 

二、git操作大全

git基本命令

命令

说明

mkdir git-space

创建名为git-space目录

cd git-space

进入到git-space目录

git init

初始化git仓库,把当前目录变成Git可以管理的仓库

touch a.txt

新建文件

vi a.txt

进入a.txt文件,可以进行内容编辑

vi/vim 文本编辑器,基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。用户刚刚启动 vi/vim,便进入了命令模式

(1)按【i】键,进入insert输入模式

(2)写入merge信息

(3)按【Esc】键,退出insert模式

(4)按【shift】+【:】键,切换到底线命令模式

(5):wq保存并关闭文件 或 :q!不保存关闭文件 或 :w保存文件不关闭文件

(6)enter

git clone 远程仓库地址将远程仓库代码复制到本地仓库

git status

查看工作区的状态

git diff

查看修改内容

git log

查看从近到远的提交日志

git reflog

记录每一次命令

添加操作

git add [dir]

添加指定目录到暂存区

git add [file1] [file2] ...

... 添加一个或多个文件到暂存区

git add .

添加当前目录下的所有文件到暂存区

删除操作

rm file

删除文件

git rm file

删除文件

git rm --cached filename

删除暂存区的文件

git rm -f filename

会在工作区(本地文件) 和 暂存区 中删除filename 文件,风险较大要慎用

git mv oldname newname

重命名文件

比较差异操作

git diff

比较工作区和暂存区文件差异

git diff --staged

比较暂存区与版本库文件差异

git diff HEAD -- file

查看工作区和版本库里面最新版本的区别

git diff 版本号 版本号

比较分支内两个版本的差异

git diff 分支 分支

比较两个分支的最新提交版本的差异

撤销操作

git commit --amend

撤销上一次提交,并将暂存区的文件重新提交

git checkout -- file

把文件在工作区的修改全部撤销,这里有两种情况:

一种是文件自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是文件已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commit或git add时的状态。

注意:git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令

git reset HEAD <file>

把暂存区的修改撤销掉(unstage),重新放回工作区

git reset --hard HEAD^

回退上一个版本(HEAD指针指向当前版本,上上一个版本表示为HEAD^^,往上n个版本,记为HEAD~n)

git reset --hard 版本号

回退到指定版本,版本号没必要写全,前几位就可以了,Git会自动去找。

分支操作

分支操作

命令

说明

查看分支

git branch

查看分支,列出所有分支,

当前分支前面会标一个*号

创建分支

git branch dev

创建dev分支

修改分支名称

git branch -m oldname newname

 

切换分支

git checkout dev 

切换到dev分支

git switch dev切换到dev分支

 

创建+切换分支

git checkout -b dev

创建并切换到dev分支

git switch -c dev创建并切换到dev分支

 

合并分支

git merge dev

合并dev分支到当前分支,fast forward模式

git merge --no-ff -m "merge with no-ff" dev

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

 git log --graph查看分支合并的情况

 

删除分支

git branch -d dev

删除dev分支

git branch -D dev

如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除

bug分支操作

(1)git stash 把当前工作现场“储藏”起来,等以后恢复现场后继续工作

(2)在需要修复bug的分支上(如master分支)新建bug分支,修复bug后提交合并

(3)git stash pop 回到工作现场

(4)git cherry-pick commit 把bug提交的修改“复制”到当前分支,避免重复劳动。

git stash list

git stash apply stash0 应用

git stash drop stash0 删除

解决冲突

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

解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

标签管理

(1)创建标签

git tag <tagname> 用于新建一个标签,默认为HEAD,也可以指定一个commit id;

git tag -a <tagname> -m "blablabla..."可以指定标签信息;

git tag 查看所有标签。

git show <tagname> 查看标签信息

(2)操作标签

创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。

git tag -d v1.0 删除标签v1.0

git push origin <tagname>可以推送一个本地标签;

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

git tag -d <tagname>可以删除一个本地标签;

git push origin :refs/tags/<tagname>可以删除一个远程标签。

 

三、操作实例如下

1.作为普通开发人员,得到开发任务时,务必要同步远程仓库(通常拉取master分支),拉取最新代码。

     git clone    #只有第一次获取代码需先clone

     git pull   #拉取远程仓库最新代码      

2.得到远程最新代码后,在本地创建开发分支dev。

    git checkout -b dev     #创建并切换到dev分支

3.在本地dev分支中进行代码开发。

4.在本地dev分支中完成开发后,提交本地的开发内容到本地仓库。

 git status                           -----查看状态,当前属于自己的开发分支dev

git add .                              -----添加到暂存区

git commit -m "新增功能"             -----提交到本地仓库

5.切换到master分支,此时应该再次pull远端仓库进行同步,因为团队其他人员可能向远端提供了新代码。然后再将dev分支合并到master分支,如果远端有人修改,合并会产生冲突,此时务必解决冲突再合并。

git checkout master                  -----切换到master分支

git pull                             -----pull远程仓库进行同步

git merge --no-f -m "新增功能" dev   -----合并dev分支到master分支

7.将本地仓库最新代码推送到远程仓库。

git push                             ----将本地代码同步到git远程仓库

8.切换到dev分支进行开发

git checkout dev                     ------在自己的本地分支dev中进行自己的开发

 

参考:https://www.liaoxuefeng.com/wiki/896043488029600/897013573512192

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值