얼마 전에 핵심 코드 보호 기능을 완료했습니다. 목표는 키 코드가 수정될 때 적시에 다른 사람과 동기화하여 검토 없이 온라인에 접속하여 발생하는 문제를 방지하는 것입니다. 프롬프트는 다음과 같습니다:
구현 중입니다. 이 과정에서 거의 사용되지 않는 일부 Git 기술이 요약됩니다.
현재 제출 중인 사용자 정보를 얻는 방법
이것은 비교적 간단합니다. git config user.name
:
04318deMacBook-Pro % git config user.name zhangshixin
git config를 사용하면 많은 구성 정보가 저장되며, 그중 일반적으로 사용되는 사용자 정의 단축키, 사용자 정보, 프로젝트 주소, 지점 정보 등이 있습니다. 등:
504318deMacBook-Pro % git config -l //快捷键 begin >>> 我们可以定义自己的 git 快捷键 alias.st=status alias.co=checkout alias.cb=checkout alias.p=pull alias.pr=pull alias.pu=push alias.cm=commit alias.br=branch alias.cm=commit alias.undo=reset alias.rbc=rebase alias.save=stash alias.pop=stash //快捷键 end <<< 我们可以定义自己的 git 快捷键 //用户名称和邮箱 begin >>> user.name=zhangshixin user.email=shixin.zhang@xxx.com //用户名称和邮箱 end <<< //项目和分支信息 begin >>> remote.origin.url=git@gitlab.xxx:android/xxx.git remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* branch.master.remote=origin branch.master.merge=refs/heads/master branch.Canary.remote=origin branch.Canary.merge=refs/heads/Canary //项目和分支信息 end <<< pull.rebase=true //默认 pull 是 merge 还是 rebase
如何获取当前分支
为了减少提示频率,最好只检测核心的分支的提交(包括 merge commit)。如何获取当前分支呢?有一个简单的方式:
git symbolic-ref --short HEAD
这句命令主要包括两个关键字:symbolic-ref
和 HEAD
。
symbolic-ref
可以读取、修改和删除符号引用。
什么是符号引用呢?它表示一个以 refs 开头的文件(比如 refs/heads/develop),这个文件保存着本地每个分支当前所处 commit。
我们可以打开 git 项目的 .git 文件夹,在其中的 refs/heads 文件夹中会保存各个分支当前所指向的 commit:
HEAD
指的是 .git/HEAD,就是一个文件,保存着当前指向的符号引用:
因此 git symbolic-ref --short HEAD
的含义就是读取 .git/HEAD 文件的内容,我这里就是 refs/heads/develop 文件,因此就得出当前分支是 develop 分支。
如何获取本地未 push 的所有 commit
有时候我们会在本地提交多次后再 push,因此在拦截 push 时,需要获取到当前要 push 的所有 commit 信息,然后获取每个 commit 修改的文件。
获取要 push 信息可以通过 git log @{u}.. --oneline
:
504318deMacBook-Pro ShixinDemo % git log @{u}.. --oneline 4e4655b (HEAD -> master) 拦截跳转 f947180 修改文件
git log
非常强大,它可以有这些使用场景:
- 获取本地和远端的 commit 差异
- 获取指定时间内的提交记录,可以具体到谁、什么时候、修改了哪些
- 获取具体某次提交修改的文件
上面我们使用的参数 @{u}..
就是表示获取本地和远端的 commit 差异,然后 --oneline
表示不打印具体信息,只打印 short commit id 和 commit message。
如果要获取指定时间内的提交记录,可以这样:
git log --pretty="%an(%cd) %h - %s" --since="2022-09-01" --no-merges --name-status
命令执行结果:
504318deMacBook-Pro ShixinDemo % git log --pretty="%an(%cd) %h - %s" --since="2022-09-01" --no-merges --name-status zhangshixin(Fri Dec 16 22:34:49 2022 +0800) 4e4655b - 拦截跳转 M app/src/main/java/com/example/heicdemo/MainActivity.kt zhangshixin(Fri Dec 16 22:34:30 2022 +0800) f947180 - 修改文件 M .idea/gradle.xml M .idea/misc.xml D .idea/runConfigurations.xml A android10_dem_heic_output.heic A app/src/main/assets/android10_dem_heic_output.heic R100 app/src/main/res/drawable/mushroom.jpg app/src/main/assets/mushroom.jpg A app/src/main/assets/mushroom.webp M app/src/main/java/com/example/heicdemo/MainActivity.kt A app/src/main/res/drawable/mushroom.webp M app/src/main/res/layout/activity_main.xml
pretty
的参数用于指定打印的内容和格式;since
参数用于指定查看时间范围;no-merges
表示过滤掉 merge 时生成的额外 commit;name-status
表示展示出文件的修改状态(M 表示修改;D 表示删除;A 表示增加;R 表示重命名)。
如何获取每个 commit 修改的文件
知道 commit ID 后,可以通过 git show --pretty="" --name-only $commitId
获取这个 commit 影响的信息:
04318deMacBook-Pro ShixinDemo % git show --pretty="" --name-only 4e4655b app/src/main/java/com/example/shixindemo/MainActivity.kt
git show
可以用来查看 commit 的 commit message 和修改的文件、文件具体内容等信息。上面的代码中我们使用了 name-only
参数表示只要查看修改的文件即可。
总结
这篇文章介绍了通过拦截 git push 时,获取当前用户、当前分支、未 push 的 commit 和修改的文件等命令,通过组合这些命令,就可以实现一个核心代码保护功能了!
위 내용은 핵심 코드를 보호하기 위한 중요한 Git 팁을 공유하세요!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

GitHub의 핵심 기능에는 버전 제어, 지점 관리, 코드 검토, 문제 추적 및 프로젝트 관리가 포함됩니다. 1. 버전 제어 및 지점 관리는 GIT를 기반으로하므로 코드 변경 및 실험 개발을 추적 할 수 있습니다. 2. 코드 검토는 PullRequest를 통해 구현되어 코드 품질 및 팀 협업을 개선합니다. 3. 문제 추적 및 프로젝트 관리는 프로젝트 투명성 및 추적 성을 향상시키기 위해 문제와 프로젝트 관리위원회를 통해 수행됩니다.

Github는 소프트웨어 개발의 효율성과 품질을 향상시키는 강력한 도구입니다. 1) 버전 제어 : GIT를 통해 코드 변경을 관리합니다. 2) PullRequests : 코드 검토를 수행하고 코드 품질을 향상시킵니다. 3) 문제 : 버그 및 프로젝트 진행 상황을 추적합니다. 4) githubactions : 건설, 테스트 및 배치 프로세스를 자동화합니다.

GIT는 버전 제어 시스템이며 GitHub는 GIT 기반 코드 호스팅 플랫폼입니다. GIT는 코드 버전을 관리하는 데 사용되며 로컬 작업을 지원합니다. GitHub는 문제 추적 및 풀 레크와 같은 온라인 협업 도구를 제공합니다.

GIT는 개발자가 파일 변경을 추적하고 협력하며 코드 버전을 관리하는 데 도움이되는 오픈 소스 분산 버전 제어 시스템입니다. 핵심 기능에는 1) 레코드 코드 수정, 2) 이전 버전으로의 폴백, 3) 협업 개발 및 4) 병렬 개발을위한 분기 생성 및 관리가 포함됩니다.

Git과 Github도 같은 것이 아닙니다. GIT는 버전 제어 시스템이며 GitHub는 GIT 기반 코드 호스팅 플랫폼입니다. GIT는 코드 버전을 관리하는 데 사용되며 Github은 온라인 협업 환경을 제공합니다.

HTML 프로젝트를 관리하기 위해 GitHub를 사용하는 이유는 버전 제어, 협업 개발 및 작품 발표를위한 플랫폼을 제공하기 때문입니다. 특정 단계에는 다음이 포함됩니다. 1. Git 저장소 작성 및 초기화, 2. HTML 파일 추가 및 제출, 3. GitHub에 푸시, 4. GitHubPages를 사용하여 웹 페이지를 배포, 5. GitHubactions를 사용하여 빌드 및 배포를 자동화하십시오. 또한 GitHub은 HTML 프로젝트를 최적화하고 협업하는 데 도움이되는 코드 검토, 문제 및 풀 레크 기능 기능을 지원합니다.

GIT에서 시작하는 것은 버전 제어 원칙에 대한 깊은 이해에 더 적합하며 GitHub에서 시작하는 것은 협업 및 코드 호스팅에 중점을 두는 데 더 적합합니다. 1. git은 코드 버전 기록을 관리하는 데 도움이되는 분산 버전 제어 시스템입니다. 2. GitHub는 GIT를 기반으로 한 온라인 플랫폼으로 코드 호스팅 및 협업 기능을 제공합니다.

Microsoft는 Git을 소유하지 않지만 Github를 소유하고 있습니다. 1. Git은 2005 년 Linus Torvaz가 만든 분산 버전 제어 시스템입니다. 2. Github는 GIT를 기반으로 한 온라인 코드 호스팅 플랫폼입니다. 2008 년에 설립되어 2018 년 Microsoft에서 인수했습니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기
