git代码修改后相关文件打包

文摘 Linux Ubuntu 2020-01-3 阅读:17837

git.jpg


  • 差异文件打包
git diff --name-only | xargs zip usb11_uvc.zip
  • 两次提交差异文件打包
git diff 608e120 4abe32e --name-only | xargs zip update.zip
  • 最后一次提交文件打包
git show --name-only | xargs zip last.zip
  • git apply 可以排除指定文件
    git apply 命令的语法如下:
git apply [options] <patch>

其中 <patch> 参数是一个 patch 文件的路径,可以通过 -p 选项指定应用 patch 文件时要忽略的路径前缀,比如 -p1 表示要忽略一个路径前缀。
要排除指定文件,可以使用 --exclude 选项。--exclude 选项允许您指定一个或多个 shell 通配符模式,以从 patch 文件中排除匹配的文件。

例如,要排除名为 file1.txtfile2.txt 的文件,可以使用以下命令:

git apply --exclude='file1.txt' --exclude='file2.txt' <patch>

请注意,'--exclude' 选项匹配的是文件名而不是路径,因此如果要排除某个目录中的所有文件,需要指定该目录下的所有文件名。


Repo 相关

  • Repo 遍历某用户所有提交

repo forall -p -c git log --author=126.com > 126_commit.txt
  • 1、怎样在代码文件夹下所有git库都建立分支?
repo start --all <分支名>
  • 2、怎样删除代码文件夹下所有git库的分支?
repo abandon <分支名>
  • 3、怎样知道代码文件夹下都改动了那些?
repo diff
  • 4、怎样把我的提交上传的gerrit上?
repo upload
  • 5、不想同步所有代码,只想同步一部分?
repo sync ......
  • 6、repo upload以后后悔了,需要再修改一些?
在原有分支上修改文件
git commit --amend 
repo upload --replace <工程名>
出现文件以后去掉第1行的#,中括号里面填上 change-id
  • 设置远程仓库(repo remote)
repo remote addd remoteName url
如:
repo remote add org ssh://172.16.1.31/git_repo
  • 如何更改已签出项目的清单?
repo init -m master.xml
repo sync
  • 如何创建固定清单?
repo manifest -r -o pinned.xml
  • 仅从本地checkout出来代码,不从远程fetch
repo sync --local-only
  • 回退所有project 到指定日期
repo forall -c 'commitID=`git log --before "2021-05-10 07:00" -1 --pretty=format:"%H"`; git reset --hard $commitID'
  • repo 查看最近两天的修改记录
repo forall -p -c git log --since=2.days
  • repo 小技巧

1采用repo 方式,那么多git,怎么知道一次更新了哪些?

repo forall -c 'git fetch rk'

repo forall -c 'pwd; git log HEAD..remotes/m/android-4.4'

2 怎样直观的看到改了哪些文件?

repo forall -c 'pwd; git log --stat HEAD..remotes/m/android-4.4'

3 很久没有更新,怎样查看更新内容,合并需要的内容?

初略看下一段时间内的提交数,可以

.repo/repo/repo forall -p -c "git log --since=2022-09-11"

看这个会以某个时间起始点去查看

4 如果是一个git,我用git log; (查看当前) git pull (更新); git log (查看最新) 就

能看到更新了哪些?

对应的操作是:

.repo/repo/repo manifest -r -o xxx-version.xml(保存当前版本信息)

.repo/repo/repo sync -n (相当于git fetch)

.repo/repo/repo forall -p -c "git log HEAD..remotes/m/android-4.4" (相当于git log)

.repo/repo/repo sync (相当于git fetch && git merge 或 git merge )

5 查看A 版本和B 版本的差异?

前提是要备份当时版本的manifest.xml,要有A 和B 的xml

.repo/repo/repo manifest -r -o xxx-version.xml(保存当前版本信息)

通过如下命令,可以比较版本间的差异

cp A.xml .repo/manifest.xml

.repo/repo/repo sync -l

.repo/repo/repo forall -p -c "git tag A"

cp B.xml .repo/manifest.xml

.repo/repo/repo sync -l

.repo/repo/repo forall -p -c "git tag B"

.repo/repo/repo forall -p -c "git diff A B"

repo 检查本地分支的提交是否已经全部推送到了远程分支

#!/bin/bash

# 遍历所有 git project

for project_path in $(repo forall -c 'echo $REPO_PATH'); do

    # 切换到项目目录

    cd $project_path

    # 获取当前分支和远程分支的 HEAD

    current_head=$(git rev-parse HEAD)

    remote_head=$(git rev-parse mediatek/$(git rev-parse --abbrev-ref HEAD))

    # 比较当前分支和远程分支的 HEAD 是否相等

    if [ "$current_head" != "$remote_head" ]; then

        # HEAD 指向的不是远程分支,输出项目路径和分支名

        echo "Project branch not pushed: $project_path $(git rev-parse --abbrev-ref HEAD)"

    fi

    # 切换回 repo 管理代码的根目录

    cd $OLDPWD

done

0条评论

© 2024 芯缘异码. Powered by Typecho