编程工具

Git

注:feature/test表示分支名

子模块

git submodule add <url> <path>
1

如果本地已经提交过相关内容,会报'<path>' already exists in the index

git rm -r <path>
1

解决refusing to merge unrelated histories

git pull <remote> <branch> --allow-unrelated-histories
1

两个无关的项目合并

问题原因:

  • 您已经克隆了一个项目,并且.git目录以某种方式被删除或损坏。这导致Git不了解您的本地历史记录,因此,当您尝试推入或拉出远程存储库时,它将导致它引发此错误。
  • 您已经创建了一个新的存储库,并向其中添加了一些提交,现在您正尝试从已经具有自己的提交的远程存储库中提取信息。Git在这种情况下也会抛出错误,因为它不知道两个项目之间的关系。

解决方案:git pullgit merge命令之后,使用--allow-unrelated-histories修饰

git pull origin master --allow-unrelated-histories
1

git 本地忽略已提交的文件

在FILE处输入要忽略的文件。
git update-index --assume-unchanged FILE 
如果要还原的话,使用命令:
git update-index --no-assume-unchanged FILE

# 如果是想忽略一个文件夹
git ls-files -z {{文件夹名}} | xargs -0 git update-index --assume-unchanged
# 还原文件夹
git ls-files -z {{文件夹名}} | xargs -0 git update-index --no-assume-unchanged

1
2
3
4
5
6
7
8
9
10

删除分支

# 删除本地分支
git branch -D feature/test
# 删除远程分支(-r表示强制删除)
git branch -D -r origin/feature/test
git push origin +fa432:feature/test
1
2
3
4
5

切换到远程分支

git checkout -b feature/test [--track] origin/feature/test
1

版本回退

reset

强制回退(Git上无任何痕迹)

假如需要回退的commitId是2beac2d,分支名是feature/test

# 查看历史
git log 
# 穿梭某个commit
git reset --hard 2beac2d
# 如果想执行回退强制合并
# git reset -p --hard 2beac2d
# 然后把这个提交强制push到远端
git push origin +2beac2d:feature/test
1
2
3
4
5
6
7
8

revert

revert可以只回退历史中某一笔提交,而且有历史记录

下拉指定分支指定版本

解决.git文件丢失报错问题(error object file is empty , The remote end hung up unexpectedly)

删除所有因为数据损坏导致的空物件档案(remove any empty object files)。执行第一步没有任何输出

$ find .git/objects/ -type f -empty | xargs rm
1

下载上一步删除的物件档案(fetch down the missing objects)

git fetch -p
1

做一次全面的储存物件检查(do a full object store check)

git fsck --full
1

将源项目代码同步到 Fork 出来的个人项目上:

代码:

#拉取Fork出来的分支
git clone Fork的分支url
#注意:进入项目根目录,执行下面操作
#查看所有远程库(remote repo)的远程url
git remote -v
#添加源分支url
git remote add upstream 替换成源项目url
#查看所有远程库(remote repo)的远程url
git remote -v
#从源分支获取最新的代码
git fetch upstream
#切换到主分支
git checkout master
#合并本地分支和源分支,本地库和远程的github原仓库同步
git merge upstream/master
#push到fork分支,本地的仓库提交到github
git push origin master
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

GitLab fork from Github

  1. make an empty repository in Github
  2. clone the empty project
  3. git remote add upstream https://github.com/user/repo
  4. git pull upstream master
  5. git push origin master

添加.gitignore后并删除远端存在的内容

git rm -r --cached 需要忽略的文件名
1

本地忽略某些文件(不影响远端)

git update-index --assume-unchanged [fileName] # 忽略
git update-index --no-assume-unchanged [fileName] # 还原
!git ls-files -v | grep "^[[:lower:]]" # 查看已忽略的文件
1
2
3

git忽略本地更改

git checkout -q -- [file&folder]
1

本地忽略文件夹(不影响远端)

cd 到想要忽略的文件夹,执行

git update-index --assume-unchanged $(git ls-files | tr '\n' ' ')
1

查看信息git log

查看两个提交之间的信息

git log --ancestry-path b37a0..97a06a --pretty=format:"%cn:%s" --no-merges
1

Git代理设置

针对所有域名生效:

git config –-global http.proxy {{protocol}}://127.0.0.1:{{port}}
1

protocol表示代理协议,如http,https,socks5等,port指端口号

git config –-global http.url.proxy protocol://127.0.0.1:port
1

例如只针对github.com设置代理,本机端口为1087

git config --global http.https://github.com.proxy http://127.0.0.1:1087
1

针对错误protocol error: bad pack header

git config --global pack.windowMemory "100m"
git config --global pack.SizeLimit "100m" 
git config --global pack.threads "1"
1
2
3

所有分支

git branch -a

git cherry-pick 合并部分提交

阮一峰教程

git提交规范

  • feat:新功能(feature)。
  • fix/to:修复bug,可以是QA发现的BUG,也可以是研发自己发现的BUG。
  • fix:产生diff并自动修复此问题。适合于一次提交直接修复问题
  • to:只产生diff不自动修复此问题。适合于多次提交。最终修复问题提交时使用fix
  • docs:文档(documentation)。
  • style:格式(不影响代码运行的变动)。
  • refactor:重构(即不是新增功能,也不是修改bug的代码变动)。
  • perf:优化相关,比如提升性能、体验。
  • test:增加测试。
  • chore:构建过程或辅助工具的变动。
  • revert:回滚到上一个版本。
  • merge:代码合并。
  • sync:同步主线或分支的Bug。

重新设置提交信息

git commit --amend

克隆指定分支代码

git clone -b <branch> <remote_repo>

git拉取tag代码

git checkout -b 本地分支 远程tag名 (不需要origin)

git拉取指定tag代码

  1. clone git clone --depth 1

  2. fetch git fetch --depth 1 origin

  3. 切换 git reset --hard

  4. 查看当前commit git rev-parse HEAD

忽略本地文件修改(只是本地生效)

忽略

git update-index --assume-unchanged web/assets/fonts/MaterialIcons-Regular.otf

还原

git update-index --no-assume-unchanged web/assets/fonts/MaterialIcons-Regular.otf

查看记录

查看某个文件更改记录 git log -- [file_path]

查看某个文件最后一次更改记录,-1改为-2就是最后2次记录 git log -1 -- [file_path]

lfs

真实文件未下载

git lfs pull --include=<file_pattern>

Last Updated: 10/26/2024, 2:26:21 PM