git一些命令
1.更新远程分支
比如远程上新建分支了,本地idea上还没有这个分支,使用命令:git remote update origin
origin的意思是:https://www.zhihu.com/question/27712995
2.查看当前远程仓库链接标记和链接本身:
# 查看远程仓库链接标记名(或叫远程仓库链接别名)
git remote
# 查看远程仓库链接标记名及链接本身(v是verbose,在这里是多输出点信息让你看的意思)
git remote -v
输出:
> git remote origin > git remote -v origin https://github.com/xiebruce/test.git (fetch) origin https://github.com/xiebruce/test.git (push)
3.git clone命令
$ git clone https://github.com/tianqixin/runoob-git-test another-runoob-name 拷贝远程 git 项目,本地项目名为 another-runoob-name
$ git clone -b master2 ../server . 表示克隆名为master2的这个分支,如果省略-b <name>表示克隆master分支。
在默认情况下,Git会把"Git URL"里最后一级目录名的'.git'的后辍去掉,做为新克隆(clone)项目的目录名: (例如. git clone http://git.kernel.org/linux/kernel/git/torvalds/linux-2.6.git 会建立一个目录叫'linux-2.6')
4.git rm文件找回
git log查看hash
版本回退:
git reset --hard 00e5cf78919ba15d153fb6463f30c062d1833f24
注意:此命令会将本地已修改的文件全部都删除,还原到和服务器上的一模一样,谨慎操作!
git reset指令的核心功能是移动当前分支的指针,使其指向不同的提交。根据参数的不同,其行为也有所差异:
git reset --soft <commit>:仅移动分支指针,工作区和暂存区的内容保持不变,适合用于 “撤销” 最近的提交,保留修改以便重新提交。
git reset --mixed <commit>(默认参数):移动分支指针,同时将暂存区的内容重置为目标提交的状态,但工作区的修改会被保留,常用于取消暂存的文件。
git reset --hard <commit>:移动分支指针,同时将工作区和暂存区的内容全部重置为目标提交的状态,会丢弃工作区中未提交的修改以及目标提交之后的所有提交记录。
使用idea进行版本回退:
参考文档: https://wwwxz.blog.csdn.net/article/details/138319319
1.在git提交版本日志上,右键,Reset Current Branch to Here...
2.push到远程仓库,idea上一定要选择Force Push,或者控制台执行命令:git push origin HEAD --force
5.查看提交的文件清单:
idea上git提交的记录,右键Copy Revision Number
在命令行窗口:git show --name-only 版本号
6.将某个文件从git管理中删除,移除暂存区
使用 git reset HEAD <文件名> 从暂存区移除单个文件
git reset HEAD .gitignore
7.使用命令来提交并push新建的git文件:
# 初始化仓库
git init
# 创建分支并切换
git checkout -b feature/new-feature
# 第1步:查看状态(推荐先执行)
git status
# 用途:查看哪些文件被修改/新增/删除
# 第2步:添加文件到暂存区
git add <文件名> # 添加特定文件
git add . # 添加所有修改和新文件(不包括删除)
git add -A # 添加所有变化(包括删除)
git add -u # 添加已跟踪文件的修改和删除
# 第3步:提交到本地仓库
git commit -m "提交说明信息"
# 例如:git commit -m "修复用户登录bug"
# 推送到默认远程仓库(通常为origin)
git push origin <分支名>
# 常用简化命令
git push # 推送到当前分支关联的远程分支
git push origin main # 推送到main分支
git push origin master # 推送到master分支(旧项目)
git push --force # 强制推送(谨慎使用!会覆盖远程)
场景1:提交单个文件:
git add README.md
# -m 表示 message,引号内是提交信息
git commit -m "更新项目说明文档"
git push origin main
本地实际操作中git push遇到报错:

这时候使用git push origin main,会弹出github认证,让你输入密码,认证成功后就可以了:


git push origin main,这里的main就是代码的分支名称:

场景2: 修改了文件之后进行提交并push:
$ git status
$ git add config-dev.yml
$ git commit -m "修改配置文件version值"
$ git push

8.忽略.gitignore文件本身:
转自:Git 技巧:忽略 .gitignore 本身?一招搞定无需 git add
先来看一个常见的场景:我们修改了 .gitignore 文件(比如添加了忽略 .idea/ 的规则),执行 git status 后会看到如下提示:
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .gitignore
此时如果不想提交 .gitignore 的修改,又希望它不再出现在 git status 的输出中,该怎么办?
git update-index --assume-unchanged .gitignoregit update-index --assume-unchanged 命令,它可以让 Git 暂时忽略指定文件的变化。
| 命令部分 | 具体作用 |
| git | Git 核心命令前缀,所有 Git 操作的入口 |
| update-index | 操作 Git 索引(Index)的命令,索引是 Git 跟踪文件状态的“中间缓存区” |
| --assume-unchanged | 核心选项,意为“假设未修改”,给文件添加一个状态标记 |
| .gitignore | 被标记的目标文件,可替换为任意需要忽略跟踪的文件路径 |
这个操作不是“永久生效”的,如果后续需要恢复跟踪 .gitignore(比如要提交它的修改到团队仓库),执行以下命令即可:git update-index --no-assume-unchanged .gitignore
撤销后再次执行 git status,.gitignore 的 modified 状态会重新显示,此时可以正常 git add 和 git commit。
查看已标记的文件
如果忘记了哪些文件被标记为 --assume-unchanged,可以用以下命令查看:
git ls-files -v | grep '^h'
输出结果中,标记为 h 的文件就是被 --assume-unchanged 标记的文件。
对已暂存文件无效
如果在执行标记命令前,已经执行过 git add .gitignore(文件已进入暂存区),需要先执行以下命令移除暂存区的跟踪,再标记才会生效:git rm --cached .gitignore
9.git cherry-pick
git cherry-pick 的核心作用是“挑选”特定的提交,将其应用到当前分支,而不用合并整个分支的所有更改 。简单说就是从别的分支里精准摘取一个或几个提交,复制到你当前所在的分支上,每个被挑选的提交会变成一个全新的提交 。
- 只想要某个 bug 修复:比如 develop 分支修了个 bug,但只想把修复同步到 main 分支,不想合并其他未完成的代码 。
- 跨分支移植功能:某个特性分支上有几个提交想复用到稳定版分支 。
- 不小心提交错了分支:把本该在 A 分支的提交误提交到 B 分支,可用 cherry-pick 移植到正确分支 。
merge 是合并整个分支的所有提交,cherry-pick 是只挑选特定提交,且生成的新提交 ID 与原提交不同
1)第一步:找到目标提交的哈希值 (Commit Hash)
2)第二步:切换到目标分支
3) 第三步:执行 Cherry-pick
git cherry-pick 0bda9a7d
4) git push
其他操作命令:
一次性摘多个提交:如果你想把 dev 上的两个独立修复一起摘过来:
git cherry-pick abc1234 def5678
只暂存不提交
# 只将变更加入暂存区,不自动提交(可继续修改)
git cherry-pick -n a1b2c3d
要中止 cherry-pick 过程并返回到之前的状态, 请使用以下命令,这将撤销 cherry-pick 过程中的任何更改:
git cherry-pick --abort
---
浙公网安备 33010602011771号