代码改变世界

【测试技术】git常用命令

2022-09-27 18:11  码上起舞  阅读(54)  评论(0编辑  收藏  举报

一、版本库常用命令

  1. 初始化某目录为git项目。(默认为master分支)
    git init

  2. 从远程clone一个项目 git clone <http://abc.com/scm/abc/def.git>

  3. 查看当前分支状态
    git status

  4. 更新代码(本质上是先fetch再merge)
    git pull origin master
    一般只有一个远程分支跟踪,可以简写为: git pull

二、分支操作

  1. 新建分支
    git branch -b <branchname>

  2. 切换分支
    git checkout <branchname>

  3. 新建并切换分支
    git checkout -b <branchname>

  4. 重置dev分支为master(把dev的指针指向master指针位置)
    git checkout dev git reset --hard master

  5. 查看远程分支
    git branch -a

  6. 删除远程分支
    git push origin --delete <branchname>

三、提交操作

养成先pull再提交的习惯,减少冲突。

  1. 提交前配置用户名密码

          git config --global user.name "工号"

          git config --global user.email "邮箱"

      2.代码提交流程
        #提交到缓存区
     git add <filename或者用.表示所有修改的文件>
        #提交到本地分支
     git commit -m "提交log"

       #推送至远程服务器分支(branch)(注:测试用例提交分支feature/SF_AUTOTEST_API)
     git push origin feature/abc
       #推送至远程服务器主干(master)
     git push origin master可简写为git push

     3.强行推送本地至分支(一般当本地与远程log差异较大时会禁止push,可采用以下命令强行推送)
git push origin <branchname> --force

四、merge操作

  1. 合并master到分支dev
    git checkout dev
    git merge master

  2. 若merge时提示unrelated histories,拒绝merge操作,则可采用以下命令
    git merge master --allow-unrelated-histories

五、冲突解决

  1. git status查看冲突的文件
  2. 手动打开冲突的文件,编辑冲突。并删除冲突的标记符,保存。
  3. 执行add、commit即可

六、撤销操作

  1. 仅修改,还没有add,想还原修改(用版本库替换工作区文件)
    git checkout <filename> 或 git checkout .还原工作区所有修改的文件

  2. 已经add,还没commit,想撤销add(回退版本、从暂存区退回工作区)
    git reset HEAD <filename> 可加参数,控制文件修改

  3. 已经commit,还没push。想撤销commit
    git reset <logid> #撤销提交,但修改的代码还在
    git reset --hard <logid>#撤销提交,代码也被还原了

  4. 已经提交,但发现少提交了一个东西/提交日志写错了
    git add <filename>
    git commit --amend -m "提交log" #将两次提交合并,log只显示一次。

  5. 已经push,想删除这次push
    #方法一(会产生一次新的提交):
    git revert HEAD
    git push
    #方法二:
    git reset --hard HEAD^
    git push

  6. 将本地分支重置为远程版本
    git reset --hard origin/[branch-name]

七、其它操作

  1. 编辑器使用(在命令行中commit时需要写入log)
    c #进入编辑
    ESC #退出编辑
    :wq #保存并退出

  2. 中文乱码解决(若命令行中显示均为数字乱码,可使用)
    git config --global core.quotepath false

  3. 清理操作,解决local rsf报错
    git gc --prune=now

  4. 查看log中某文件详细的修改内容
    git log -p <filename>

  5. git reflog
    -记录所有提交,包括reset、删除的提交。可用于恢复删除。

八、reset、revert、checkout区别

  1. git reset HEAD^
    移动指针的指向。
    --soft:缓存区和工作目录都不会被改变
    --mixed :默认选项。缓存区和你指定的提交同步,但工作目录不受影响
    --hard:缓存区和工作目录都同步到你指定的提交
    --推荐在个人分支上使用。

  2. git checkout
    -带上分支名:切换分支。
    -带上文件名:用版本库中的文件替换工作区文件。一般用于撤销工作区中的修改。

  3. git revert
    -用一个新的提交去"抵消"之前的修改。
    -推荐在公共分支上使用。

git reset 提交层面 在私有分支上舍弃一些没有提交的更改
git reset 文件层面 将文件从缓存区中移除
git checkout 提交层面 切换分支或查看旧版本
git checkout 文件层面 舍弃工作目录中的更改
git revert 提交层面 在公共分支上回滚更改
git revert 文件层面 (然而并没有)

命令

作用域

常用情景