文章目录
一、 git基本操作内容
1. 创建版本库
1. 首先创建一个版本库 testgit版本库
这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”
2.通过命令 git init 把这个目录变成git可以管理的仓库
当前testgit目录下会多了一个.git的目录,这个目录是Git来跟踪管理版本的
小坑: .git默认是隐藏的,将隐藏的项目勾选,就会出来
3.git add readme.txt 添加到暂存区 (提交修改)
4. 用命令 git commit -m ‘readme.txt 提交’(提交的注释) 告诉Git,把文件提交到仓库。(提交文件)
第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。第二步:使用 git commit 提交更改,实际上就是把暂存区的所有内容提交到当前分支上。
5. 用命令 git status 来查看是否还有文件未提交 (未提交文件查看)
6. git diff readme.txt (用来查看文件到底修改了什么地方)
再对readme.txt进行修改后,仍然利用 3 和 4 进行提交修改和提交文件,最好在提交之前查看下状态,提交之后再查看一状态。
2. 版本回退
1.git log 命令显示从最近到最远的显示日志(显示所有操作日志) git log –-pretty=oneline(简洁显示所有日志!!!)
2. 版本回退到上个版本 git reset --hard HEAD^ 回退上上个版本.git reset --hard HEAD^^ 回退第几个加几个^ (回退版本)
简便命令: git reset --hard HEAD~100 (回退至第几个版本,简便版本!!!)
3. 现在已经回退到上一个版本,可以在通过 git log 来查看历史日志
4. 现在想回退到最新版本,可以通过 git reset --hard 版本号 现在需要通过命令来获取版本号 git reflog
5. git reset --hard e98a14a (回退到最新版本)
3. 理解工作区与暂存区的区别
工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。
版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。
4. Git撤销修改和删除文件操作。
一:撤销修改:
git restore (可以丢弃工作区的修改) ,再进行cat < file >查看,内容还是未修改之前的。
二:删除文件:
现在目录下添加了b.txt文件, git add < file> 添加到缓存区,在还没有进行提交之前,将所修改的文件进行删除;rm < file>
进行 git status 查看状态,b.txt文件已经被删除,1.再通过git restore < file> 进行撤销,回到添加缓存区的状态 2. 直接git commit -m 提交注释
(git checkout 这个命令承担了太多职责,既被用来切换分支,又被用来恢复工作区文件,对用户造成了很大的认知负担。)
git switch 和 git restore 分别负责 更改分支的操作 和 更改文件的操作
5. 远程仓库。
第一步:创建SSH Key
id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥
git 远程 添加 origin(远程仓库在本地的别名,标识名称) 仓库地址
把本地库的内容推送到远程,使用 git push origin -u master 命令,实际上是把当前分支master推送到远程仓库。-u 作用是关联本地和远程仓库
现在本地文件修改之后, git commit -m 提交注释 进行本地提交至当前分支后,只需要使用 git push origin master 把本地master分支的最新修改推送到github上了
6. 创建与合并分支(用git switch 替换git checkout)
(廖雪峰老师创建和合并分支)
1.git switch -c dev (创建并切换到新的分支) git checkout 命令加上 –b 参数表示创建并切换(老版本)
2. git switch master (直接切换到已有的master分支)
3. git branch (查看分支)
4. git merge dev (用于合并指定分支到当前分支上)在master分支上合并dev分支内容
5. git branch -d <分支名> (用于删除指定分支)
合并分支冲突:主分支进行修改并提交,分支1也进行修改并提交,这时候要将分支1合并到主分支,会冲突
查看状态 并查看readme.txt的内容 修改fenzhi1上面的内容,修改成和主干上的代码保持一致。
7. bug分支:(!!!工作中应该比较重要)
整体流程:比如我在开发中接到一个404 bug时候,我们可以创建一个404分支来修复它,但是,当前的dev分支上的工作还没有提交。工作进行到一半无法进行提交, Git还提供了一个stash功能,可以把当前工作现场 ”隐藏起来”,等以后恢复现场后继续工作。
git stash (将当前的工作现场进行隐藏) 通过git status查看状态,是干净的,超强!!!
现在就可以用 git switch -c issue-404 (创建404bug分支),修复完成后进行合并到主分支,然后删除bug分支;
现在,我们回到dev分支上干活了。git switch dev切换到分支,
git stash list (查看所有工作现场)
现在需要恢复dev工作现场,
1.git stash apply恢复,恢复后,stash内容并不删除,你需要使用命令git stash drop来删除。
2.另一种方式是使用git stash pop,恢复的同时把stash内容也删除了。
8. 多人协作:
当你从 远程库的默认名称是 origin
要查看远程库的信息 使用 git remote
要查看远程库的详细信息 使用 git remote –v
二、实际完整流程操作训练:
打开工程,用脚手架直接生成的框架,自带.gitignore
1.git init 生成工作区(要有.git文件夹)
2. git add . (将工作区代码添加到缓存区)
3. git commit -m “注释” (将缓存区代码提交到版本区)
到现在为止,本地仓库创建完成
4. git remote add origin https://github.com/xxx/AntdPro_GitDemo.git (添加远程仓库地址)此时可以git branch查看一下本地分支
5. git push origin master 将本地库的内容推送到master分支,如果远程没有master分支,则自动创建master分支
* [new branch] master -> master
现在进行查看github上,有了master分支,并且本地库所有文件上传到了master分支上
6. git switch -c dev 创建dev分支并自动切换到dev分支
7. git push origin dev 将本地库的内容推送到dev分支,如果远程没有dev分支,则自动创建dev分支
8. 修改本地代码后 git add . 然后 git commit -m “注释” git push origin <分支名>
9. 远程仓库进行修改后,本地拉取 git pull origin dev 根据远程的dev,生成本地的dev
10.从远程克隆数据仓库 git clone https://github.com/xxx/AntdPro_GitDemo.git
11. 查看下分支git branch,发现只有一个master分支,但其实远程有两个分支,这是因为本地仓库并没有创建第二个dev分支
git remote -v 查看下远程库的详细信息,可以看见有两个分支。
现在要通过 git switch -c dev origin/dev 根据远程的dev分支创建本地的dev分支
git branch 查看本地已有两个分支 git pull origin dev 将远程dev分支的内容拉取到本地
12. 现在克隆的源文件有修改,通过vscode直接简便提交,然后推送到远程库
13. 本地现在需要重新拉取远程库的修改文件 git pull origin dev ,查看cat README.md 拉取成功
14. 现在本地文件创建了一个新的分支 czy ,并进行了内容的修改,提交并推送到远程。但是此时的本地克隆的仓库并没有这个分支,也无法使用git switch -c czy origin/cy 根据远程的czy分支创建本地的czy分支 , 此时需要先git pull 拉取一下远程数据,再进行git switch -c dev origin /czy
三、遇到的问题
-
git提交失败——running pre-commit hook: lint-staged
解决办法 git commit -m “注释” --no-verify
-
OpenSSL SSL_connect: Connection was reset in connection to github.com:443
出现这种情况多半是因为设置了系统代理 取消全局代理即可
git config --global --unset http.proxy
git config --global --unset https.proxy -
git warning: LF will be replaced by CRLF in package.json
原因是需要提交的文件是在windows下生成的,windows中的换行符为 CRLF, 而在linux下的换行符为LF,所以在执行add . 时出现提示。
解决办法:禁用自动转换 :git config --global core.autocrlf false