Git命令整理(持续更新)

Git命令整理(持续更新)

本文记录常用的git命令,涵盖绝大部分日常开发场景,持续更新中…

设置用户名和邮箱

# 设置用户名和邮箱
git config --global user.name "用户名"
git config --global user.email "hello@itcast.cn"
# 查看配置信息
git config --global user.name
git config --global user.email

git提交日志

git log [option] # 查看提交到哪个地方
    --all # 显示所有分支
    --pretty=oneline #将提交信息显示为一行
    --abbrev-commit # 让输出的commit更简短
    --graph # 以图的形式显示

解决git乱码问题

git config --global core.quotepath false

/etc/bash.bashrc文件中加入下面代码

export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"

仓库操作

初始化仓库

git init # 在需要创建仓库的文件夹下执行,初始化仓库

工作区、暂存区、仓库

git status               # 显示文件状态,untracked
git add <文件名>          # 暂存文件,文件名.表示所有文件

## 以下三个命令的作用效果:"reset" = "restore --stage" + "restore"
git restore --staged <文件名> # 将暂存区文件从暂存区撤出,但不会更改文件
git restore <文件>        # 将在工作空间但不在暂存区的文件撤销更改
git reset <文件名>        # 将暂存的文件从暂存区撤出,同时恢复至上一次提交的状态

git rm --cached <文件名>  # 将文件恢复至未跟踪的状态,"-r"参数表示递归

提交

git commit -m "提交信息"        # 文件提交到仓库
git commit --amend -m "提交信息" # 修改上一次的提交信息,注意不要对远程仓库使用

版本管理

git checkout "commitID" # 签出指定的提交,不改变已有的提交树。
git revert "commitID"   # 撤销已有提交,会创建一个完全相反的提交
git reset --hard <commitID>  # 回退版本,该版本往后的所有提交都会被标记为删除,可以使用reflog命令在找回来。
git reflog # 前面所有的操作记录下来,可以看到已经删除的提交记录

暂存文件stash

git stash save "暂存信息" # 将未提交的文件暂存起来,以便切换分支和之后恢复
git stash pop # 将上一次暂存修改恢复出来

决定哪些文件不需要git管理

touch .gitignore # 创建忽略文件,里面写上不需要管理的文件,可使用文件通配符
    *.a # 忽略.a文件
    !lib.a # 但是保留lib.a文件
    build/ # 忽略build目录下的所有文件

分支

git branch -a                 # 查看分支,-a表示查看远程所有分支,其中红色表示当前所在分支
git branch -m "旧名字" "新名字" # 重命名分支
git branch "分支名"   # 创建分支
git checkout "分支名" # 切换分支
git checkout -b "分支名" # 创建并直接切换到分支,等价于上面两个命令
git merge "分支名"       # 将分支合并到当前所在的分支
git branch [option] "分支名" # 删除分支
    -d # 把分支删除,会做各种检查
    -D # 强制删除

开发中,一般有如下分支使用原则和流程:

  • master(生产)分支

    线上分支,主分支,中小规模项目作为线上运行的应用对应的分支,master才能上线。

  • develop(开发)分支

    从master创建的分支,作为开发部门的主要分支,开发完成后合并到master分支准备上线,develop一般不删除。

  • feature(新功能)分支

    从develop创建出来,feature功能完成后合并到develop上面去,然后把feature分支删除掉。要新建多个feature分支。

  • hotfix分支

    从master创建出来,修改正常后合并到master,并合并到develop上面去。

  • test分支用于代码测试,pre分支用于预上线分支。

合并分支

git checkout "分支名" # 首先切换到待合并的分支分支
# 1. 以变基的方式将当前分支合并到master分支上
git rebase master
# 2. 以merge的方式将分支合并到master分支上
git merge --ff-only master
git merge --abort # 终止合并操作

公私密钥对

ssh-keygen -t rsa # 生成公私钥对
ssh -T git@github.com # 测试连接gitee或github

远程仓库

添加远程仓库

git remote add origin <远程仓库地址> # 添加远程仓库
git remote set-url origin <远程仓库地址> # 修改远程仓库地址
git remote -v    # 查看远程仓库,-v表示显示地址

推送远程仓库

git push origin master # 把当前的master分支推送到origin仓库
git push [-f] [--set-upstream] [远端名 [本地分支名]:[远端分支名]] # --set-upstream推送到远程仓库,名字一样可以省略,up-stream表示本地和远端关联,-f表示强制覆盖
git push # 如果本地和远端已经关联,则直接可以推送

git branch -vv # 查看本地分支和远端分支的关联关系

克隆、抓取和拉取

git clone <远程仓库地址> <本地文件夹名字> # 如果不设置文件夹,默认使用仓库中的文件夹
git fetch <远程仓库名> <远程仓库分支名> # 把远程更新抓取下来,但不会合并
git pull <远程仓库> <远程分支> # 远程更新拉去并合并,相当于git fetch 和git merge

git子模块

如果git仓库下有别的git仓库,就可以添加到子模块,子模块的改变需要在其仓库中提交后才会在主存储库中显示。

# 删除子模块的.gitmodules文件
# 删除主存储库的.git/config对应的子模块项目
git rm --cached <子模块路径> # 取消管理子模块

对比文件差异

git diff <分支1> <分支2> -- <文件名字> # 对比两个分支的文件差异
git diff -cached # 对比工作区和暂存区的文件差异
git diff commitID # 对比工作区与对应提交的文件差异

git代理

git config --global http.proxy  # 设置代理
git config --global --unset http.proxy # 取消代理

删除大文件

有时候仓库对大文件有存储容量限制,直接删除文件后还需要从历史记录中将其剔除,使用以下命令:

# 不推荐该命令,似乎会污染历史记录
git filter-branch --force --index-filter 'git rm -r  --cached --ignore-unmatch <文件名或文件夹名>' --prune-empty --tag-name-filter cat -- --all
# 使用下面命令
git filter-repo --path <文件名或文件夹名> --invert-paths
<think>好的,用户想了解Git命令GitLab中的具体用法和示例。首先,我需要整理Git的基本命令,然后结合GitLab的特点来说明这些命令GitLab环境中的应用。用户提供的引用中有关于配置、分支管理、差异统计、状态查看和GitLab Pipeline的信息,这些都需要涵盖进去。 首先,用户可能需要知道如何设置Git配置,以便在GitLab中使用正确的用户名和邮箱。引用[1]提到了配置命令,这里可以作为起点,比如git config设置用户信息,这对提交记录很重要。 接下来是仓库克隆,GitLab的仓库通常通过HTTP或SSH克隆。需要说明两种方式的区别,并给出示例,比如使用git clone加上项目URL。 分支管理在GitLab中很常见,尤其是协作开发时。引用[2]提到了创建和切换分支的命令,比如git checkout -b,同时可能需要关联远程分支,这里需要详细说明如何创建本地分支并跟踪远程分支,以及推送分支到GitLab仓库。 提交和推送是日常操作,要解释git add、commit、push的流程,并给出示例。这里要注意强调commit的信息规范,可能涉及GitLab的提交关联issue等功能。 同步更新部分,用户可能需要拉取远程更改,git pull和git fetch的区别需要说明,以及如何解决冲突。引用[5]的git status可以帮助查看状态,提醒用户检查修改。 关于差异比较,引用[3]提到git diff --stat,可以展示不同版本间的差异,这在合并请求或代码审查时很有用,需要举例说明用法。 GitLab Pipeline是持续集成的部分,引用[4]提到它是CI/CD的核心。虽然Pipeline配置在.gitlab-ci.yml中,但Git命令如提交和推送会触发Pipeline,需要说明如何通过Git操作来启动CI/CD流程。 最后,用户可能需要一些常见问题的解答,比如如何解决冲突、撤销修改等,结合引用中的命令给出解决方案。 现在需要确保所有命令格式正确,使用中文回答,结构清晰,并按照用户的要求生成相关问题。同时注意引用标记的正确使用,比如配置命令来自引用[1],分支管理来自引用[2]等。 检查是否有遗漏的GitLab相关命令,比如合并请求的处理可能需要更多Git命令,但用户提供的引用中没有,可能需要简要提及或建议查看GitLab文档。此外,确保示例代码正确,比如分支创建、推送,以及触发Pipeline的方式。 最后生成相关问题,覆盖配置、分支管理、CI/CD、冲突解决等主题,帮助用户深入理解相关命令的应用场景。</think>### Git 命令GitLab 中的用法及示例 #### 1. **配置 Git 用户信息** 在 GitLab 中提交代码时,需确保本地 Git 配置的用户名和邮箱与 GitLab 账户一致: ```bash git config --global user.name '你的用户名' git config --global user.email '你的邮箱' git config --global --list # 验证配置信息 ``` **示例**:若 GitLab 账户邮箱为 `user@example.com`,需通过上述命令同步配置[^1]。 --- #### 2. **克隆 GitLab 仓库** 从 GitLab 克隆仓库到本地(支持 HTTPS 或 SSH): ```bash git clone https://gitlab.com/项目路径.git # HTTPS 方式 git clone git@gitlab.com:项目路径.git # SSH 方式 ``` --- #### 3. **分支管理** 在 GitLab 协作开发中,分支管理是关键: - **创建并切换本地分支**(关联远程分支): ```bash git checkout -b 新分支名 origin/远程分支名 # 示例:git checkout -b dev origin/dev[^2] ``` - **推送本地分支到 GitLab**: ```bash git push -u origin 分支名 # 首次推送需添加 `-u` 关联远程分支 ``` --- #### 4. **提交与推送代码** 将修改提交到本地仓库并推送到 GitLab: ```bash git add . # 添加所有修改到暂存区 git commit -m "提交描述" # 提交到本地仓库 git push origin 分支名 # 推送到 GitLab 的指定分支 ``` **注意**:提交描述应清晰,可关联 GitLab Issue(如 `fix #123` 关闭 Issue 123)[^5]。 --- #### 5. **同步远程更新** 拉取 GitLab 远程分支的最新代码: ```bash git pull origin 分支名 # 拉取并合并代码 git fetch origin # 仅获取远程更新,不自动合并 ``` 若存在冲突,需手动解决后重新提交。 --- #### 6. **差异对比与状态查看** - **查看文件修改差异**: ```bash git diff --stat tag1 tag2 # 统计两个版本间的差异[^3] git diff HEAD # 查看工作区与最新提交的差异 ``` - **检查仓库状态**: ```bash git status # 显示暂存区、工作区状态(如未跟踪文件或修改)[^5] ``` --- #### 7. **触发 GitLab Pipeline** GitLab CI/CD 通过 `.gitlab-ci.yml` 配置文件定义流水线,提交代码后自动触发: ```bash git add . && git commit -m "更新CI配置" && git push origin main ``` 推送后可在 GitLab 项目的 **CI/CD > Pipelines** 查看运行状态[^4]。 --- #### 8. **常见问题解决** - **撤销本地修改**: ```bash git checkout -- 文件名 # 丢弃工作区修改 git reset HEAD 文件名 # 取消暂存 ``` - **强制同步远程分支**: ```bash git fetch origin && git reset --hard origin/分支名 ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值