Gitlab常用命令

本地

初始化

    • 全局变量
      • 全局配置
        • git config --global user.name "your name"  #设置全局用户名#
        • git config --global uer.email "your email"   #设置全局邮箱#
      • 版本库配置
        • git config --global color.ui true     #让Gitlab显示不同的颜色#
        • git config core.ignorecase true   #让 Git 对仓库中的字符大小写敏感#
      • ​ 查看所有的已设置的配置
        • git config -l
      • 设置默认编辑器
        • git config --global core.editor notepad++   #设置notepad++为编辑器#
      • 解决中文乱码问题
        • ls命令显示中文文件名乱码
          • 在git/git-completion.bash中增加一行
            • alias ls='ls --show-control-chars --color=auto'
        • git commit不能提交中文注释
          • 修改git/inputrc中对应的行
            • set output-meta on
            • set convert-meta off
        • 查看git log,如果乱码
          • LESSCHARSET=utf-8
        • 设置 commit log 提交时使用 utf-8 编码,可避免服务器上乱码,同时与linux上的提交保持一致
          •  git config --global i18n.commitencoding utf-8
          • git config --global i18n.logoutputencoding utf-8
    • 初始化版本库
      • git init
    • 设置忽略的文件
      • 设置每个人都想要忽略的文件
        • 在根目录建一个名为.gitignore的文本文件
          • 在命令行执行echo *.jpg>.gitignore
        • 将.gitignore文件加入版本库并提交
      • 设置只有自己需要忽略的文件
        • 修改.git/info/exclude文件
          • 可以使用正则表达式
            • 例如:*.[oa]等价于*.o和*.a
    • 添加新文件到版本库
      • 添加单个txt文件
        • git add somefile.txt
      • 添加所有的txt文件
        • git add *.txt
      • 添加所有文件
        • git add .
    • 提交
      •  git commit -m "add all txt files"

日常操作

    • 提交
      • 提交所有修改
        •  git commit -m "some msg" -a
      • 提交单个文件
        •  git commit -m "add msg to readme.txt" readme.txt
      • 增补提交
        •  git commit -C head -a  --amend
          • 不会产生新的提交历史记录
    • 撤销修改
      • 撤销尚未提交的修改
        • 撤销1~2个文件的修改
          • git checkout head readme.txt todo.txt
        • 撤销对所有txt文件的修改
          • git checkout head *.txt
        • 撤销对所有文件的修改
          • git checkout head
        • 撤销本地所有修改的, 没有的提交的内容,都返回到原来的状态 
          • git checkout .
      • 撤销提交
        • 反转提交
          • 例:反转最近一次提交
            • git revert --no -commit head
        • 复位
          • 取消暂存
            • git reset head或者git reset head <file name>
          • 复位到head之前的那个版本
            • git reset HEAD^^
          • 让版本库,暂存区的内容回退2次,工作区不变
            • git reset HEAD^^/HEAD~2
    • 分支
      • 列出本地分支
        • git branch
      • 列出所有分支
        • git branch -a
      • 检出分支
        • git checkout <branchname>
      • 基于当前分支的末梢创建分支并检出分支
        • git checkout -b <branchname>
      • 基于某次提交、分支或标签创建新分支
        • git branch emputy bfe57de0
        • git branch emputy2 emputy
      • 建立本地分支与远程分支的联系
        • git branch --set-upstream-to=origin/< branch > feture-test
          • < branch >是远程分支名,feture-test是本地分支名
      • 合并分支
        • 普通合并
          • 合并并提交
            • git merge < branchname >
              • *如果发生了冲突,就不会自动提交,如果冲突不多不想立即解决他们,可以直接使用git checkout head 撤销
          • 合并但不提交
            • git merger --no-commit
        • 压合合并
          • 压合合并后直接提交
            • git merge --squash < branchname >
          • 压合合并后但不提交
            • git merger --squash --no-commit
              • *两个人合作开发一个新功能时,需要在一个分支上提交多次,开发完成之后在压合成一次提交
        • 拣选合并
          • 挑选某次提交合并但不提交
            • git cherry-pick --no-commit 5b54b4
              • 但是要合并的提交只要比当前高2个版本,就会出现奇怪的冲突问题
      • 重命名分支
        • git branch -m < branchname > < newname >
          • *不会覆盖已存在的同名分支
        • git branch -M < branchname > < newname >
          • *会覆盖已存在的同名分支
      • 删除分支
        • git branch -d < branchname >
          • *如果分支没有被合并会删除失败
        • git branch -D < branchname >
          • *即使分支没有被合并会删除
      • 切换分支
        • git checkout &lt branchname &gt
    • 解决冲突
      • 冲突很少时
        • 直接编辑有冲突的文件然后提交即可
      • 冲突比较复杂时
        • git merge tool
          • 会生成.BACKUP, .BASE, .LOCAL和.REMOTE四个文件
          • 然后自动调用冲突解决工具
          • 解决之后手动删除.orig文件(冲突解决之前的文件备份)
          • 提交
    • 标签
      • 创建标签
        • 为当前分支最近一次提交创建标签
          • git tag 1.0
            • *标签没有重命名
        • 为A分支最近一次提交创建标签
          • git tag A_1.0 A
            • *也可以把标签命名为A/1.0
        • 为某次历史提交创建标签
          • git tag 1.0 4ed54x21
      • 显示标签列表
        • git tag
      • 检出标签
        • git checkout 1.0
          • *查看标签断面很方便的方法,但是不能提交
      • 由标签创建分支
        • git branch b1.1.1.1
        • git checkout -b b1.1.1.1
      • 删除标签
        • git tag -d 1.0
    • 查看状态
      • 当前状态
        • git status
      • 历史记录
        • git log
        • gitk
          • gitk
            • 查看当前分支历史记录
          • gitk < branchname >
            • 查看某分支历史记录
          • gitk -all
            • 查看所有分支
      • 每个分支最后的提交
        • git branch -v
    • 其他
      • 导出版本库
        • git archive --format=zip head>nb.zip
        • git archive --format=zip --prefix=nb1.0/ head>nb.zip

远程

初始化

    • 克隆版本库
      • git clone < url >
      • 克隆之后会自动添加4个config
        • remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
        • remote.origin.url=d:\\usb
        • branch.master.remote=origin
        • branch.master.merge=refs/heads/master
    • 别名
      • 添加远程版本库的别名
        • git remote add <别名>  <远程版本库的url > 
        • 添加别名后会自动添加2个config
          • remote.origin.url=d:\\usb
          • remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
      • 删除远程库的别名和相关分支
        • git remote rm < 别名 >
    • 创建一个无本地分支的库
      • git init -bare
        • *当需要一个公用的库时,可以简称bare库

日常操作

    • 分支
      • 列出远程分支
        • git branch -r
      • 删除远程库中已经不存在的分支
        • git remote prune origin
    • 从远程库获取
      • 获取但不合并
        • git fetch < 远程版本库 >
          • 例:git fetch origin (origin是远程库的默认别名)
          • 例:git fetch d:\\git\\nb
      • 获取并合并到当前本地分支
        • git pull
          • 等价于git pull origin
          • 需配置branch.master.remote=origin和branch.master.merge=refs/heads/maeter如果使用了git clone克隆远程库会自动添加这个配置
        • git pull d:\\git\\nb master
    • 推入远程库
      • git push origin master
        • *远程的master不能是当前分支

The DevSecOps Platform | GitLab

 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐