git
基本配置
当安装Git后首先要做的事情是设置用户名称和emailt地址。这是非常重要的,因为每次Git提交都会使用该用户信息
设置用户信息
git config --global user.name "itcast"git config --global user.email "hello@iteast.cn"
查看用户信息
git config --global user.namegit config --global user.email
获取本地仓库及其基础操作指令
初始化仓库文件夹:
git initgit status:查看的修改的状态(暂存区、工作区)git add 单个文件名|通配符.:工作区->暂存区git commit -m '注释内容':暂存区->本地仓库的当前分支git commit -a -m "提交信息":同时add 和 commitgit-log:查看提交日志(q退出查看)git reset --hard [commitID]: 回退状态、丢弃上次提交未暂存、相对危险
git checkout [commitID]:回退状态、保留上次提交未暂存、相对安全
git branch:列出所有本地分支git branch -a:列出所有远程分支git branch <branch-name>:创建新本地分支git branch -m <old-branch-name> <new-branch-name>:重命名分支git branch -d <branch-name>:删除分支,不能删除当前分支git checkout <branch-name>:切换到分支git checkout -b <branch-name>:创建并切换到分支,并将当前目录更改提交到新分支git switch <branch-name>:切换到分支git switch -c <branch-name>:仅创建并切换到分支git switch -d <branch-name>:删除分支git switch -m <new-head>:不创建新提交的情况下移动当前分支。暂不确定git merge 分支3:将分支3合并到当前分支上
配置SSH公钥
- 生成SSH公钥:
ssh-keygen -t rsa不断回车; 如果公钥已经存在,则自动覆盖 - 获取公钥:
cat ~/.ssh/id_rsa.pub - 公钥获取后,将其添加到github仓库设置中,以获取推送权限
- 验证是否配置成功:
ssh-T:git@github.com
添加远程仓库
- 命令:
git remote add <远端名称> <仓库路径>- 远端名称,默认是origin,取决于远端服务器设置
- 仓库路径,从远端服务器获取此URL
查看远程仓库
git remote:查看远程仓库
git remote -v:可查看仓库地址
克隆clone
- 命令:
git clone <仓库路径> [本地目录]
抓取fetch和拉取pull
- 抓取 命令:
git fetch [remote name] [branch name] - 抓取指令就是将仓库里的更新都抓取到本地仓库,不会合并到工作区
git diff 仓库名/分支名查看抓取分支与本地分支的区别git pull 仓库名 分支名diff后没问题就可以pull- 拉取指令就是将远端仓库的修改拉到本地工作区,等同于fetch+merge
- 如果不指定远端名称和分支名,则抓取所有并更新当前分支。
推送push
git push [remote-name] [branch-name]
- remote-name:远程仓库的名称,例如
origin。 - branch-name:要推送到远程仓库的分支,例如
master。
如果不指定 branch-name,则默认推送到与当前本地分支同名的远程分支。
git push -f [remote-name] [branch-name]
强制推送,即使远程分支中有未取回的更改,可以使用-f标志,使用-f标志时要谨慎,因为它可能会覆盖远程仓库中其他人的更改。git push -u [remote-name] [branch-name]
设置上游分支,可以在本地分支上使用git pullgit push命令从远程仓库拉取更改,而无需指定远程仓库和分支名称。
标签tag
git tag [tag-name] [commit-ish]: 创建标签
- tag-name:标签的名称,例如
v1.0。 - commit-ish:要标记的提交的哈希值、标签或分支名称,例如
HEAD或master。
要创建标记v1.0并将其指向当前提交,可以使用以下命令:1
git tag v1.0
要创建标记 v1.0 并将其指向 master 分支上的最新提交,可以使用以下命令:
1 | git tag v1.0 master |
git tag: 列出所有标签git tag -d [tag-name]: 删除标签git tag -a [tag-name] [commit-ish] [-m "注释消息"]: 创建带有注释的标签git show [tag-name]: 打印标签信息git tag <remote-name> <branch-name> <tag-name>: 标签推送到仓库
查看当前仓库大小
1 | git count-objects -vH |
git全流程
初始化本地文件为git文件
1
git init
此时查看远程仓库,关联为空
1
git remote
将本地文件与远程仓库关联
1
2
3git remote add [远端别名(ohmyboss)/origin] [仓库地址]
origin是默认远程仓库名称,也可以取其他的
- 此时查看远程关联仓库
- 为了查看并显示仓库地址
1 | git remote -v |
- 此时还未必能够push或fetch,原因本地分支与仓库分支可能不一致,需要修改分支名
1 | git branch --查看本地分支名 默认为 master 而远端仓库分支名 默认 main |
- 接着需先将远程仓库同步到本地
1 | git pull [remote name] [branch name] |
- 搞定好,试着拉取一下仓库,发现还是需要输入账号密码?之前设置过SSH秘钥。
原因是之前设置的fetch和pull地址使用的是HTTP协议,而不是SSH协议地址。
需要修改为使用SSH协议地址
1 | git remote set-url [远端别名(ohmyboss)] [SSH地址] |
- 修改好以后,再次尝试拉取仓库,发现又出现问题
查看本地log 发现原因是本地仓库与远程仓库都有各自的commit ,不同的commit导致冲突。
1 | git log --oneline |
使用–rebase ,将本地commit 与远程commit合并,并且本地为最新commit。
1 | git pull --rebase [远端名] [分支名] |
- 如何返回历史的commit
1 | git checkout [commitID] --返回到某个commit |
- 接下来对本地仓库进行修改后,需要进行add 和commit,另外commit信息里面可以后面
“#+数字”关联相应issues
1 | git add xxx.md |
- 提交完后,需要将修改push到远程仓库,发现不能直接git push,还是需要指定仓库别名+同步的分支名
1 | git push ohmboss main |
要想以后不带别名和分支名,则可以这样设置默认值
1 | git push -u ohmboss main |
- 不像push到远端仓库mian分支,想push到别的分支
1 | git switch -c [新分支名] --本地创建新分支 |
- 远端仓库compare and proquest进入预请求界面,查看新分支对main的不同之处可以对新分支与main分支进行合并操作,并自动将新分支删除,那么本地就不需要新分支了,也可以进行删除
1 | git branch -d [新分支名] |
此时会有提示
是因为本地main分支与远程main分支commit数因为远端分支合并导致不同。所以需要先pull同步main分支
此时再删除新分支就可以了
- 创建pull request并审核代码修改
fork到自己仓库 ->git clone ->本地创建新分支 ->在新分支修改需要修改的地方->push ->进入自己仓库的compare and proquest预请求界面 -> 选择合并到源仓库的main分支 -> 源仓库可收到对应pull request请求


























