Git使用

查看远程仓库信息


# 查看所有已配置的远程仓库
git remote

# 详细查看远程仓库信息(包括URL)
# 命令显示了当前仓库配置的所有远程仓库及其对应的URL地址,fetch表示拉取地址,push表示推送地址
$ git remote -v
origin  https://github.com/xxx/xxx.git (fetch)
origin  https://github.com/xxx/xxx.git (push)

# 查看远程仓库信息
$ git remote show origin
* remote origin
  Fetch URL: https://github.com/xxx/xxx.git
  Push  URL: https://github.com/xxx/xxx.git
  HEAD branch: master
  Remote branches:
    dev    tracked
    master tracked
  Local branches configured for 'git pull':
    dev    merges with remote dev
    master merges with remote master
  Local refs configured for 'git push':
    dev    pushes to dev    (local out of date)
    master pushes to master (up to date)

查看分支

查看远程分支

$ git branch -r
  origin/HEAD -> origin/master
  origin/dev
  origin/master

合并分支

# 将指定分支(如 dev)合并到当前分支(main):
git merge dev

如果目标分支是待合并分支的直接上游(即待合并分支基于目标分支创建,且目标分支无新提交),Git 会默认执行「快速合并」—— 只是简单移动指针,不生成新的合并提交。

强制禁用快速合并(生成合并提交,便于追溯历史):
git merge --no-ff dev -m "合并dev分支的功能:用户登录模块"
--no-ff:禁用快速合并;-m:指定合并提交的备注信息(必须)。

合并时如果文件有冲突(比如两人修改了同一行代码),Git 会提示冲突文件,此时需要:
打开冲突文件,找到标记 <<<<<<< HEAD(当前分支代码)、=======(分隔符)、>>>>>>> dev(待合并分支代码)的位置,手动修改为正确代码;

标记冲突已解决:重新添加该文件即可
git add 冲突文件名

取消合并(合并中发现问题,未提交前)
如果合并过程中还没解决完冲突,想放弃合并:

git merge --abort

合并指定提交(而非整个分支)

如果不需要合并整个分支,只需要合并某个 / 某些提交,用 git cherry-pick 更合适:

# 合并单个提交(commit_id 是提交哈希,可通过 git log 查看)
git cherry-pick 1a2b3c4d
# 合并多个提交
git cherry-pick 1a2b3c4d 5e6f7g8h
# 合并连续的提交(从 A 到 B,包含 A 和 B)
git cherry-pick A..B

重置到指定提交

3334c162ab6ccba224cbf362080a28664e1a98bf

情形1: 回滚到之前的某版本,且删除该版本之后的提交
1)用 git log 查看版本号(commit后的就是版本号)
2)用 git reset --hard <版本号> 命令回滚到之前某版本. 此时本地已经回滚,远程仓库还未回滚

$ git reset --hard 3334c162ab6ccba224cbf362080a28664e1a98bf
HEAD is now at 3334c162a 该提交的message

3)用 git push -f 实现远程仓库的回滚

远程分支为dev
git push origin dev --force

情形2:回滚到之前的某版本,但保留该版本之后的提交
1)用 git log 命令查看版本号(commit后的就是版本号)
2)用 git revert -n <版本号> 命令回滚到之前某版本
3)用 git commit -m “<随便取名>” 提交到本地 git 库
4)用 git push 命令推送 到远程仓库

忽略文件

忽略将来的变更

文件已经被 Git 追踪了,现在想让 Git不再监听它的改动,同时保留文件在本地和仓库中。

直接加 .gitignore 是无效的,因为 .gitignore 只对从未被追踪的新文件生效。简单来说出现这种问题的原因就是Git已经开始管理这些文件了,所以你无法再通过过滤规则过滤它们。

会将文件删除的改动

https://stackoverflow.com/questions/10755655/git-ignore-tracked-files

Git 停止追踪指定文件 / 类型的改动:

# 忽略单个文件
git update-index --assume-unchanged 文件名

# 忽略一类文件(比如所有 .log 文件)
git update-index --assume-unchanged *.log

文件保留在仓库里,不会被删除
后续你修改这个文件,git status 完全不显示改动
提交、推送都不会包含这个文件的修改

# 先清空本地索引, 只删除 Git 索引里的记录, 完全不删除你本地的任何文件, 相当于让 Git “忘记” 所有文件
git rm -r --cached .

git rm --cached filename.ext
# For a folder:
git rm -r --cached folder_name

# 重新按照 .gitignore 规则添加所有文件
git add .

# 提交更新
git commit -m "chore: 按照 .gitignore 刷新文件索引"

生成的文件,会生成删除该文件的变更记录

之前有a文件,现在将a文件加在
https://www.cnblogs.com/echohye/p/18362333

git update-index --assume-unchanged

# 忽略 目录名/ 下的所有文件(包括子目录)
git update-index --assume-unchanged 目录名/*

# 示例:忽略 logs/ 整个目录
git update-index --assume-unchanged logs/*

# 示例:忽略 temp/ 整个目录
git update-index --assume-unchanged temp/*

git ls-files -z

git ls-files -z | git update-index -z --stdin

https://stackoverflow.com/questions/12288212/git-update-index-assume-unchanged-on-directory

git ls-files -- $DIR | xargs -l git update-index --assume-unchanged -- $DIR

Linux 下:
git ls-files -- ./.nuxt | xargs -l git update-index --assume-unchanged -- ./.nuxt

配置

查看配置:git config --list

账号名和邮箱需用双引号引起来
全局邮箱:git config --global user.email "你的邮箱"
全局名字:git config --global user.name "你的名字"

git config user.email "邮箱地址"
git config user.name "用户名"
git config user.name "名字" && git config user.email "邮箱"

代理配置

git config --global http.sslVerify false
git config --global --unset http.proxy
git config --global --unset https.proxy
git config http.postBuffer 524288000

Github 访问

仓库信息

查看远程仓库地址

> git remote -v
origin  https://github.com/gunsugunaydin/FullStack-Photo-Album-Application.git (fetch)
origin  https://github.com/gunsugunaydin/FullStack-Photo-Album-Application.git (push)

SSH vs HTTPS: If you're tired of typing your password (especially when pushing your Maven analysis backend updates), consider switching the URL to SSH format: git@github.com:username/repo.git.

重命名:如果想保留旧位置但添加一个新位置,可以先重命名旧位置:

git remote rename origin old-origin
git remote add origin <new-url>

git remote set-url origin

new-url 直接在Github复制clone的地址即可,可以是http或者ssh地址

大文件管理

https://git-lfs.com/

git lfs install

git lfs migrate import --include="*.msi"

https://stackoverflow.com/questions/33330771/git-lfs-this-exceeds-githubs-file-size-limit-of-100-00-mb

将psd文件添加进版本管理
git lfs track "*.psd"

git add .gitattributes

posted @ 2025-12-12 22:35  vonlinee  阅读(3)  评论(0)    收藏  举报