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/git-completion.bash中增加一行
- git commit不能提交中文注释
- 修改git/inputrc中对应的行
- set output-meta on
- set convert-meta off
- 修改git/inputrc中对应的行
- 查看git log,如果乱码
- LESSCHARSET=utf-8
- 设置 commit log 提交时使用 utf-8 编码,可避免服务器上乱码,同时与linux上的提交保持一致
- git config --global i18n.commitencoding utf-8
- git config --global i18n.logoutputencoding utf-8
- ls命令显示中文文件名乱码
- 全局配置
- 初始化版本库
- git init
- 设置忽略的文件
- 设置每个人都想要忽略的文件
- 在根目录建一个名为.gitignore的文本文件
- 在命令行执行echo *.jpg>.gitignore
- 将.gitignore文件加入版本库并提交
- 在根目录建一个名为.gitignore的文本文件
- 设置只有自己需要忽略的文件
- 修改.git/info/exclude文件
- 可以使用正则表达式
- 例如:*.[oa]等价于*.o和*.a
- 可以使用正则表达式
- 修改.git/info/exclude文件
- 设置每个人都想要忽略的文件
- 添加新文件到版本库
- 添加单个txt文件
- git add somefile.txt
- 添加所有的txt文件
- git add *.txt
- 添加所有文件
- git add .
- 添加单个txt文件
- 提交
- 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
- 不会产生新的提交历史记录
- 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 .
- 撤销1~2个文件的修改
- 撤销提交
- 反转提交
- 例:反转最近一次提交
- 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 branch --set-upstream-to=origin/< branch > feture-test
- 合并分支
- 普通合并
- 合并并提交
- git merge < branchname >
- *如果发生了冲突,就不会自动提交,如果冲突不多不想立即解决他们,可以直接使用git checkout head 撤销
- git merge < branchname >
- 合并但不提交
- git merger --no-commit
- 合并并提交
- 压合合并
- 压合合并后直接提交
- git merge --squash < branchname >
- 压合合并后但不提交
- git merger --squash --no-commit
- *两个人合作开发一个新功能时,需要在一个分支上提交多次,开发完成之后在压合成一次提交
- git merger --squash --no-commit
- 压合合并后直接提交
- 拣选合并
- 挑选某次提交合并但不提交
- git cherry-pick --no-commit 5b54b4
- 但是要合并的提交只要比当前高2个版本,就会出现奇怪的冲突问题
- git cherry-pick --no-commit 5b54b4
- 挑选某次提交合并但不提交
- 普通合并
- 重命名分支
- git branch -m < branchname > < newname >
- *不会覆盖已存在的同名分支
- git branch -M < branchname > < newname >
- *会覆盖已存在的同名分支
- git branch -m < branchname > < newname >
- 删除分支
- git branch -d < branchname >
- *如果分支没有被合并会删除失败
- git branch -D < branchname >
- *即使分支没有被合并会删除
- git branch -d < branchname >
- 切换分支
- git checkout < branchname >
- 列出本地分支
- 解决冲突
- 冲突很少时
- 直接编辑有冲突的文件然后提交即可
- 冲突比较复杂时
- git merge tool
- 会生成.BACKUP, .BASE, .LOCAL和.REMOTE四个文件
- 然后自动调用冲突解决工具
- 解决之后手动删除.orig文件(冲突解决之前的文件备份)
- 提交
- git merge tool
- 冲突很少时
- 标签
- 创建标签
- 为当前分支最近一次提交创建标签
- git tag 1.0
- *标签没有重命名
- git tag 1.0
- 为A分支最近一次提交创建标签
- git tag A_1.0 A
- *也可以把标签命名为A/1.0
- git tag A_1.0 A
- 为某次历史提交创建标签
- git tag 1.0 4ed54x21
- 为当前分支最近一次提交创建标签
- 显示标签列表
- git tag
- 检出标签
- git checkout 1.0
- *查看标签断面很方便的方法,但是不能提交
- 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
- 查看所有分支
- gitk
- 每个分支最后的提交
- 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 init -bare
- 克隆版本库
日常操作
-
- 分支
- 列出远程分支
- git branch -r
- 删除远程库中已经不存在的分支
- git remote prune origin
- 列出远程分支
- 从远程库获取
- 获取但不合并
- git fetch < 远程版本库 >
- 例:git fetch origin (origin是远程库的默认别名)
- 例:git fetch d:\\git\\nb
- git fetch < 远程版本库 >
- 获取并合并到当前本地分支
- git pull
- 等价于git pull origin
- 需配置branch.master.remote=origin和branch.master.merge=refs/heads/maeter如果使用了git clone克隆远程库会自动添加这个配置
- git pull d:\\git\\nb master
- git pull
- 获取但不合并
- 推入远程库
- git push origin master
- *远程的master不能是当前分支
- git push origin master
- 分支
The DevSecOps Platform | GitLab
-
- 生成SSH Key
- 如果以前生成过SSH Key,要先备份
- 生成SSH Key
- 将SSH Key添加到Gitlab账户里
- 免密登录
- Gitlab配置多个ssh key
- 可以参考此文章:https://blog.csdn.net/qq_39361915/article/details/122545320https://blog.csdn.net/qq_39361915/article/details/122545320
- 配置完免密登录后,仍然需要输入密码的问题
- 可以参考文章:https://blog.csdn.net/weixin_43106956/article/details/113187629?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-5-113187629-blog-107946780.235%5Ev38%5Epc_relevant_sort&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-5-113187629-blog-107946780.235%5Ev38%5Epc_relevant_sort&utm_relevant_index=9https://blog.csdn.net/weixin_38750432/article/details/107946780?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-107946780-blog-112100505.235%5Ev38%5Epc_relevant_sort&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-107946780-blog-112100505.235%5Ev38%5Epc_relevant_sort&utm_relevant_index=6
- 生成SSH Key