Git相关F&Q
代码提交流程
- 本地创建密钥对,并提交公钥至黄海针,git项目部署公钥
$ ssh-keygen -C "邮箱"
... # 一路Enter
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDfvlLm9Hb4nOJwrW/btXDGNvSWqolr/hxPoAsW3gzxr+fpHFS5/jGAxevjpWqrgd++nQFRVnZnzTDCEdg+kfjTUmx5zqxPFCgMmv3Ci5HuV4MvAjdiReMUNDrLikAZEhuy4H7zW4m+uaOFfrWfwAGnbJNnrverMkjoTL/wkCBvmqimAb8C+67wHV5aHGlrZajiW7zDh8G2sr8NtSifPMz7T/1XV6cYn6w1PIsDzt9Luq4mgmgPqy+U+lgWYRgrUHGt8szYoe1XcJG6NQh3kz3O1RBBcDa2ZR0i5CGVWoZQZQr2J0O22veQAmJmRjGmOcPQJ6QDyT2+Iq+LOohTw8Ov [email protected]
- 克隆代码至本地仓库
$ git clone -b dev ssh克隆地址
# -b dev省略则拉取默认分支,一般为master,这里使用dev举例
# 克隆仓库分为https与ssh,注意这里为ssh地址,否则部署了公钥任然需要输出账号密码
- 修改代码后提交(注意:若修改文件为公共文件,则以文件为最小单位提交合并请求,禁止同时修改多个公共文件,避免增加冲突几率)
$ git pull origin dev # 注意:拉取仓库最新代码,此步骤不可缺失
$ git branch tester # 创建新分支
$ git checkout tester # 切换新分支
$ git add .
$ git commit -m "修改事件"
# 修改事件格式:日期+事件类型(新增add/更新update)+文件
# 例如修改了Round_1.sh/Round_2.sh文件,git commit -m "20210222_update_Round_1.sh/Round_2.sh"
$ git push origin tester
- 提交代码成功后,登录git项目提交合并请求:tester->dev ,告知管理员检查代码并合并请求,注意:代码有错误,记录违规事件,请多加检查!
- 切换当前分支回dev,删除临时分支,代码成功合并后,重新pull最新代码至dev
$ git checkout dev
$ git branch -d test
$ git pull origin dev
分支管理
查看分支
使用命令:git branch
- 查看本地分支
>git branch
* master
- 查看本地+远程分支
>git branch -a
* master
remotest/origin/HEAD -> origin/master
remotest/origin/dev
remotest/origin/master
remotest/origin/test
# 使用命令git branch -a,远程仓库已经删除的分支在本地依然可以看到
# 使用命令 git remote show origin,可以查看remote地址,远程分支,还有本地分支与之相对应关系等信息
>git remote show origin
* 远程 origin
获取地址:...
推送地址:...
HEAD 分支:master
远程分支:
dev 已跟踪
master 已跟踪
refs/remotes/origin/test 过时(使用 'git remote prune' 来移除)
为 'git pull' 配置的本地分支:
dev 与远程 dev 合并
为 'git push' 配置的本地引用:
dev 推送至 dev (最新)
新建分支
使用命令:git branch 分支名称
- 查看分支
>git branch
* master
- 创建分支
>git branch hhz
- 创建之后再次查看,可看到新建分支,master分支前面有个星号,代表此时还在master分支上
>git branch
* master
hhz
切换分支
使用命令:git checkout 分支名称
- 创建分支,默认在master上,切换到新的分支hhz上
>git checkout hhz
A .idea/vcs.xml
Switched to branch 'hhz'
# 如果当前分支有修改未合并,不允许切换分支,可提交后再切换
- 切换成功,查看当前的所有分支
>git branch
master
* hhz
- 查看当前分支状态也可以用
git status
>git status
On branch hhz
- 创建分支的同时并切换分支
>git checkout -b hhz2
A .idea/vcs.xml
Switched to a new branch 'hhz2'
- 等同于:先创建分支,再切换分支
git branch hhz2
git checkout hhz2
删除本地分支
删掉本地的分支,使用git branch —delete 分支名称
-
—delete缩写就是-d,可以使用 git branch -d 分支名称来代替
- 注意:使用—delete删除分支时,该分支必须完全和它的上游分支merge完成,如果没有上游分支,必须要和HEAD完全merge
-
-D 是—delete —force的缩写,这样写可以在不检查merge状态的情况下删除分支
- —force 简写-f,作用是将当前branch重置到初始点(startpoint),如果不使用—force的话,git分支无法修改一个已经存在的分支.
在不检查merge状态的情况下删除分支,使用git branch -D 分支名称
,它是git branch --delete --force 分支名称
的缩写
**注意:**无法直接删除当前分支,需切换至其他分支
>git branch
master
hhz
* hhz2
>git branch -D hhz2
error: Cannot delete branch 'hhz2' checked out at 'D:/ftp/sat'
>git checkout master
A .idea/vcs.xml
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
>git branch -D hhz2
Deleted branch hhz2 (was c613c75).
>git branch
* master
hhz
删除远程分支
通过本地的命令行删除远程分支,使用git push origin -—delete 分支名称
>git push origin --delete hhz
- [deleted] hhz
# 若未进行关联无法通过本地的命令行删除远程分支,需建立本地分支并关联:git push origin 本地分支:远程分支 ,若本地、远程分支名一致,则可省略`:远程分支`
文件管理
恢复文件
恢复最新版本
- 本地修改未提交
$ git checkout -- other.sh # other.sht为文件名
- 本地修改,已提交至暂存区(即编辑之后,gitadd但没有gitadd但没有 git commit -m …)
$ git reset HEAD # 回退到当前版本
$ git checkout -- other.sh # other.sht为文件名
- 本地修改,已提交至仓库区(即编辑之后,gitadd和gitadd和 git commit -m …)
$ git reset HEAD^ # 回退到上一个版本
$ git checkout -- other.sh # other.sht为文件名
恢复至任意版本
$ git log --oneline
fbcfafd (HEAD -> dev) ly-5 # HEAD
02d906a ly-4 # HEAD^
08493f3 Merge branch 'dev' of https://e.coding.net/mars-z/sat/SAT into dev # HEAD^^
c11ed08 ly-3 # HEAD~4
dc07dfe ly-2
# 第一列为版本号
git reset 版本号
git checkout -- other.sh # other.sht为文件名