Git相关F&Q

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为文件名

猜你喜欢

转载自blog.csdn.net/qq_38123721/article/details/114117161