GIT

某些命令行指令

1
2
3
4
pwd  显示当前绝对路径
cd .. 回到上一目录
cd \ 回到根目录
ls 显示当前文件目录(如learngit内含readme.txt,显示readme.txt)

git reflog或者git log后,一直出现no next tag <press return>,此时按q即可退出。

初始化仓库

1
$ git init

将文件添加到仓库

1
$ git add readme.txt

用commit -m命令,将文件提交到仓库

1
2
3
4
$ git commit -m "wrote a readme file"
[master (root-commit) 6014831] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt

readme.txt内容更改,再尝试提交

1
2
$ git add readme.txt
$ git commit -m"修改的描述"

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的方式提交和管理