git代码修改后相关文件打包
文摘 Linux Ubuntu 2020-01-3 阅读:17837- 差异文件打包
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.txt
和 file2.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
条评论
作者
Pixiv日榜Top50