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遇到报错:

image

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

image

image

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

image

场景2: 修改了文件之后进行提交并push:

$ git status
$ git add config-dev.yml
$ git commit -m "修改配置文件version值"
$ git push

image

 

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 .gitignore
git 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

 

 

 

---

 

posted on 2022-03-16 21:31  有点懒惰的大青年  阅读(202)  评论(0)    收藏  举报