Git操作入门| 青训营笔记

98 阅读5分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天

一、本堂课重点内容

  • Git简介
  • 使用Git管理文件版本
  • 远程仓库使用
  • 分支管理

二、详细知识点介绍

GIT命令

配置个人信息 一般是在 C:\Users\windows用户名
git config --global user.name "Your Name"
git config --global user.email "email@example.com"

创建版本库

初始化一个Git仓库,使用git init命令。

添加文件到Git仓库,分两步:

  1. 使用命令git add <file>,注意,可反复多次使用,添加多个文件;

  2. 使用命令git commit -m <message>,完成。

本地仓库

  • 要随时掌握工作区的状态,使用git status命令。

  • 如果git status告诉你有文件被修改过,用git diff可以查看修改内容

版本回退
  • HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id

  • 穿梭前,用git loggit log --pretty=oneline 可以查看提交历史,以便确定要回退到哪个版本。

  • 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

工作区和暂存区

暂存区是Git非常重要的概念,弄明白了暂存区,就弄明白了Git的很多操作到底干了什么。

没弄明白暂存区是怎么回事的童鞋,请向上滚动页面,再看一次。

管理修改

git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别

撤销修改

git restore <file>...

git restore --staged <file>...

删除文件

git show <版本号> 查看这个版本号的修改明显

git add/rm <file>...

恢复误删的文件:git checkout <版本号> test.txt,这个版本不能是删除这个文件的版本

远程仓库

创建SSH Key

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

gitee.com/,注册账号,把这个公钥配置到gitee个人设置里面去

l.jpg

l.jpg

新建远程仓库

l.jpg

添加远程库

让本地仓库与远程仓库关联

git remote add origin git@gitee.com:xxx/learngit.git

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

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

删除远程库

git remote -v #查看远程库信息

然后,根据名字删除,比如删除origin

git remote rm origin

处的“删除”其实是解除了本地和远程的绑定关系,并不是物理上删除了远程库。远程库本身并没有任何改动。要真正删除远程库,需要登录到GitHub,在后台页面找到删除按钮再删除。

远程库克隆

git clone git@gitee.com:xxx/learngit.git

分支管理

创建与合并分支

查看分支:git branch

创建分支:git branch <name>

切换分支:git switch <name> 或者git checkout <name>

创建+切换分支:git switch -c <name>或者git checkout -b <name>

合并某分支到当前分支:git merge <name> 通常都是站在master分支上合并其它分支

删除分支:git branch -d <name>

解决冲突

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

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

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

--abbrev-commit仅显示 SHA-1 校验和所有 40 个字符中的前几个字符

git log --graph --pretty=oneline --abbrev-commit

分支管理策略

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

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

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

Bug分支

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

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

git stash list 查看stash

修复后,再git stash pop,回到工作现场;

在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick <commit>命令,把bug提交的修改“复制”到当前分支,避免重复劳动。

Feature分支

开发一个新feature,最好新建一个分支;

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

多人协作

推送分支

git push origin master

如果要推送其他分支,比如dev,就改成:

git push origin dev

git branch --set-upstream-to origin/<branch-name> <branch-name> 使用这个命令关联分支后,push/pull 的时候就不用带后面的远程仓库和分支

抓取分支

创建远程origindev分支到本地

git swtich -b dev origin/dev

git pull origin dev:dev

因此,多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin <branch-name>推送自己的修改;

  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

  3. 如果合并有冲突,则解决冲突,并在本地提交;

  4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/<branch-name> <branch-name>

这就是多人协作的工作模式,一旦熟悉了,就非常简单。

git push 和 git pull 本质上都是merge

git push:如果没有冲突,那么实际上默认在远程仓库提交一次,版本往前推一次。

git pull:如果没有冲突,那么实际上市默认在本地仓库提交一次,版本往前推一次。

git push:如果有冲突,必须先pull,解决完成冲突,本地仓库手动提交一次,版本往前推一次;然后再push。

git pull:如果有冲突,解决完冲突,本地仓库手动提交一次,版本往前推进一次。

在push或者pull之前,最好你的工作区和暂存区都是干净的

注意:在每一次push之前,为了避免因冲突而提示错误,我们都要习惯性的进行pull操作。

三、引用参考