git 常用命令

本文详细介绍了Git的基本操作流程,包括代码的下载、更新、提交、回退、查看信息、分支管理、暂存代码、合并代码及解决冲突等。适用于初学者快速上手及进阶用户深入理解Git的工作机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载代码:

git clone ...
git help <command>查看帮助

从远程库更新代码

git pull
git pull <远程库名> <远程分支名>:<本地分支名>  //如果不写本地分支,则与当前分支merge
如: git pull origin feature,则是将远程 feature 分支最新代码拉取合并到当前分支。本地的 feature不会更新。

提交代码

git staus -s 查看改动的文件, -s:精简模式
git add .  将改动加入到stage区域,即待提交状态
git commit -a -m'<comment>' 提交代码到本地仓库
git push origin master :将本地分支 master的改动提交到 origin 远程库上

git diff  查看所有改动的文件包含的更改行
git diff branch1 branch2  可以查看2个分支不同的代码

回退

git状态请查看“文件状态”一节。
#### 1)撤消改过的未commit文件(unstaged),
git checkout --  效果与 git status 类似,查看与最新提交的差异
git checkout -- <file> 撤消指定文件的更改(支持正则表达式)
git checkout -- src/java/* 撤消某个目录下所有的更改
#### 2)撤消 commit (staged)
git reset <commit_id>    : commit_id 可以通过 git log查到  
git reset HEAD^   : 回退最后一个commit。^相当于 HEAD~1,即HEAD减一个版本
注:reset默认是 --mixed,即回退到unstaged 的状态。--soft表示回退到staged状态
#### 3)撤消untracked file/directory。也即删除未被追踪的文件
git clean -n 查看有哪些 untracked 文件可以删除
git clean -xfd 删除所有 untracke f:文件 d:目录 x:即使在.gitignore内。此语句不能随便执行!!会删除很多东西,如.iml等 
最好的方法是文件系统逐个删除!

查看信息

git log 查看提交历史

分支

git branch 查看当前处于哪个分支
git checkout <bracn_name>   切换分支
git checkout -b <bracn_name>    创建并切换分支
切换分支之前,必须commit或stash,不然改动会被删除。经测试,最新版本不会删除改动,而是直接将改动合到分支。
git remote prune origin  远程分支删除后,本地同步删除。(这个只能删除远程分支映射本地分支的缓存,以remotes/origin/ 开头)。本地打开过的分支还是要git branch -d <分支名>逐一删除。
查看从哪个分支拉出来:git reflog --date=local | grep <branch_name>

git config -l  查看所有配置, 后面加上 --global/system/local:查看相应作用域的配置 
git remote

暂存代码

切换分支,代码要不提交,要不储藏起来,否则会切换分支失败或者将改动带到新分支。

git stash   -- git stash push简单写。 不再推荐使用 git stash save。默认将工作区(working tree)、索引区(staged/indexed)的改动储藏起来。不包括 untracted file。 -u 加上 untracked file;-k 不储藏索引区
git stash -m '<说明>'
git stash <file> 只储藏指定文件
git stash list
git stash pop|apply [<stash id>]  --pop:同时删除储藏内容。应用储藏内容默认不改变索引区,--index 改变索引区
git stash drop|show <stash id>
git stash clear

大多数时候还是推荐commit 了再切换分支

合并代码、解决冲突

git merge <branch> 将branch的代码合并到当前分支。一般用 git merge origin/<branch>,如果没有origin,合并的是本地分支,而本地分支不一定更新了,需要切换到branch分支先pull代码。
git pull origin <branch> 合并远程分支代码到当前分支
git checkout --ours/--theirs <file/path>  使用本地/远程代码解决冲突文件
**挑拣代码:**
git cherry-pick <commit id>:将某个提交合入到当前分支。(2个隐含意思:1.这个提交是其它分支的。 2.这个提交本分支没有的)

remote是 remote repository 的缩写,也就是远程仓库,git clone 是下载仓库到本地,默认远程仓库的名字是 origin。每个仓库都有一个默认主分支,这个名字一般是 master。本地并不是远程代码的分支,而是镜像,也就是本地和远程变成了一样的。远程的所有版本和分支也会被下载下来。每个版本用一个UUID标记,FETCH_HEAD指向最新那个版本。
本地仓库可以对应多个远程仓库,前提是这2个仓库有交叉的分支历史,也就是这2个仓库曾经是一样的。这样才可以从这个交叉点之后的代码改动有选择地合并到远程仓库。

为什么有时提交的pr会显示别人修改的代码
原因:
按时间顺序,在分支 master上,前天小明提交了代码合进去了,昨天我在分支 branch上提了一个pr合到master,在提pr前没有更新master的最新代码(pull),pr也合进master了。今天,我继续提交一个pr,在提pr前进行了 pull。这时,branch 上会合入小明的pr,但小时的pr是在我昨天提交的代码后合入的,我执行 commit 时,就会认为我修改过小明的代码了,所以提pr时,显示的修改处就会包含小明的代码!!

<think>我们被要求生成一个关于Git常用命令的汇总列表。根据用户的要求,我们需要提供结构清晰的回答,并尽量保证真实可靠。同时,我们参考了站内引用中提供的Git命令信息。根据引用内容,我们可以整理出以下常用命令:1.基本操作(初始化、添加、提交等)2.分支管理3.远程仓库操作4.标签管理5.历史查看与撤销6.其他实用命令(如删除大文件、清理仓库等)我们将按照这些类别来组织命令。注意:由于引用中提供了一些特定问题的解决方案(如删除大文件),我们也会将其作为实用命令的一部分。另外,注意用户要求使用中文回答,并且行内数学表达式使用$...$格式(但本问题不涉及数学表达式,所以忽略),独立公式使用$$...$$格式(同样不涉及)。同时,在回答末尾生成相关问题。我们开始整理Git常用命令汇总:</think>### Git常用命令汇总 以下是Git常用命令分类整理,帮助您高效管理代码版本: #### 1. 仓库初始化与基础操作 ```bash # 初始化新仓库 $ git init # 克隆远程仓库 $ git clone <远程仓库URL> # 查看当前状态 $ git status # 添加文件到暂存区 $ git add <文件名> # 添加单个文件 $ git add . # 添加所有修改 # 提交更改 $ git commit -m "提交说明" ``` #### 2. 分支管理 ```bash # 创建分支 $ git branch <新分支名> # 切换分支 $ git checkout <分支名> $ git switch <分支名> # Git 2.23+推荐方式 # 创建并切换分支 $ git checkout -b <新分支名> $ git switch -c <新分支名> # 合并分支 $ git merge <要合并的分支名> # 删除分支 $ git branch -d <分支名> # 安全删除 $ git branch -D <分支名> # 强制删除未合并分支 ``` #### 3. 远程仓库操作 ```bash # 添加远程仓库 $ git remote add origin <远程仓库URL> # 查看远程仓库 $ git remote -v # 推送到远程仓库 $ git push -u origin <分支名> # 首次推送 $ git push # 后续推送 # 拉取远程更新 $ git pull origin <分支名> $ git pull --rebase origin <分支名> # 变基式拉取 # 删除远程连接 $ git remote rm origin ``` #### 4. 版本回退与撤销 ```bash # 查看提交历史 $ git log $ git log --oneline # 简洁版日志 # 撤销工作区修改 $ git checkout -- <文件名> # 撤销暂存区文件 $ git reset HEAD <文件名> # 版本回退 $ git reset --hard <commit_id> # 彻底回退 $ git reset --soft <commit_id> # 保留修改 # 恢复删除的文件 $ git restore <文件名> # Git 2.23+ ``` #### 5. 标签管理 ```bash # 查看标签 $ git tag # 创建标签 $ git tag <标签名> # 轻量标签 $ git tag -a v1.0 -m "版本说明" # 附注标签 # 推送标签 $ git push origin <标签名> # 删除标签 $ git tag -d <标签名> # 本地删除 $ git push origin :refs/tags/<标签名> # 远程删除 ``` #### 6. 高级维护 ```bash # 清理历史大文件 $ git filter-branch --force --index-filter \ 'git rm -rf --cached --ignore-unmatch <文件名>' \ --prune-empty --tag-name-filter cat -- --all # 回收存储空间 $ git reflog expire --expire=now --all $ git gc --prune=now # 查看仓库大小 $ git count-objects -vH ``` #### 7. 配置相关 ```bash # 设置用户名/邮箱 $ git config --global user.name "用户名" $ git config --global user.email "邮箱" # 查看配置 $ git config --list # 设置默认编辑器 $ git config --global core.editor vim ``` > **最佳实践提示**: > 1. 频繁提交小变更,保持提交记录清晰 > 2. 使用`.gitignore`文件排除无需版本控制的文件 > 3. 重要分支(如main/prod)设置保护规则 > 4. 推送前先执行`git pull --rebase`避免合并提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值