Git
GIT
某些命令行指令
1 | pwd 显示当前绝对路径 |
用git reflog
或者git log
后,一直出现no next tag <press return>
,此时按q
即可退出。
初始化仓库
1 | $ git init |
将文件添加到仓库
1 | $ git add readme.txt |
用commit -m命令,将文件提交到仓库
1 | $ git commit -m "wrote a readme file" |
将readme.txt
内容更改,再尝试提交
1 | $ git add readme.txt |
用git log
命令查看操作历史
想回退到上一个版本
1 | $ git reset --hard HEAD^ |
上一个版本是HEAD^
,上上一个版本是HEAD^^
,往上数100个版本,写成HEAD~100
也可以用commit id
代替,比如,回到append GPL
版本,commit id
前几位是85eec6f
,则
1 | $ git reset --hard 85eec6f |
Git提供了一个命令git reflog
用来记录你的每一次命令
查看当前readme.txt
内容
1 | $ cat readme.txt |
git diff
显示工作区与暂存区的内容差别(工作目录与add
之后未提交之前的内容)
git diff HEAD -- <filename>
显示工作区与版本库最新版本的区别git diff cached
显示的是暂存区中修改后的内容与上一次commit
的区别
.gitignore说明
分支
复习一下创建一个git和添加一个gitignore文件的过程
常用分支指令
查看分支:git branch
列出所有本地分支和远程分支: git branch -r
创建分支:git branch <name>
切换分支并更新工作区:git checkout <name>
或者git switch <name>
创建+切换分支:git checkout -b <name>
或者git switch -c <name>
切换到上一个分支: git checkout -
新建一个分支,与指定的远程分支建立追踪关系:git branch --track [name] [remote-branch]
建立追踪关系,在现有分支与指定的远程分支之间:git branch --set -upstream [name] [remote-branch]
合并某分支到当前分支:git merge <name>
选择一个commit,合并进当前分支: git cherry-pick [commit]
删除分支:git branch -d <name>
删除远程分支: git push origin --delete [branch-name]
合并分支
下面是一个创建分支并合并分支的过程:
创建分支并切换到该分支:
在master和新分支都添加和提交了一个版本:
在master进行和新分支的合并,并log出这个过程:
在分支合并时,有时会遇到相同内容的冲突,这时需要手动选择删去某个内容还是两个内容都保留
远程分支
远程常用指令
显示所有远程仓库
1 | $ git remote -v |
显示某个远程仓库信息
1 | $ git remote show [remote] |
添加一个新的远程仓库,并命名
1 | $ git remote add [name][url] |
取回远程仓库的变化,并与本地分支合并
1 | $ git pull [remote] [branch] |
上传本地指定分支到远程仓库
1 | $ git push [remote] [branch] |
强行推送当前分支到远程仓库,即使有冲突
1 | $ git push [remote] --force |
推送所有分支到远程仓库
1 | $ git push [remote] --all |
操作
gitee新建一个远端仓库:
创建后,创建SSH key:
$ ssh -keygen -t rsa -C "email"
在保存到目录下找到该文件:
id_rsa代表私钥,id_rsa.pub代表公钥
在vscode打开公钥,复制里面的内容,在gitee设置里的SSH公钥配置
添加成功后通过$ ssh -T git @gitee.com
指令测试SSH key是否配对成功
接着用SSH下载远程仓库到当前文件夹
git clone [远程仓库地址]
可以看到已经下载好了
在本地写好项目后推送给远端的master分支上
$ git push origin master
然后用分支来演示如何实现多人操作
先创建一个分支,添加新的内容:
推送到远程指定分支,不能无脑选master分支
$ git push origin xzj_dev
再拉取到本地仓库
$ git pull origin xzj_dev
使用source tree管理源码
下载source tree
配置SSH key密钥,(这里我的ssh key配置成功但source tree 总是检测不到我的clone地址是合法),待解决
注释:
已解决,在source tree 中将选项里的ssh客户端改为OpenSSH即可解决
远程clone库到本地文件夹
在source tree中操作(具体看操作手册)
部署git pages
在github上配置SSH公钥,然后用
1 | $ ssh -T git@github.com |
指令查看是否成功,
在网页上部署时注意修改源码中连接到其它资源的路径(比如css,js等),要修改为相对路径,一般是./地址
git工作流(git flow)
分支一般分为主分支(master/main)和开发分支(developer)和功能分支(feature)
相关内容见下面链接
图解git flow开发流程 - 知乎 (zhihu.com)
扩展
该博客管理用的也是git的方式提交和管理