찾다
개발 도구자식핵심 코드를 보호하기 위한 중요한 Git 팁을 공유하세요!

얼마 전에 핵심 코드 보호 기능을 완료했습니다. 목표는 키 코드가 수정될 때 적시에 다른 사람과 동기화하여 검토 없이 온라인에 접속하여 발생하는 문제를 방지하는 것입니다. 프롬프트는 다음과 같습니다:

핵심 코드를 보호하기 위한 중요한 Git 팁을 공유하세요!

구현 중입니다. 이 과정에서 거의 사용되지 않는 일부 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-refHEAD

symbolic-ref 可以读取、修改和删除符号引用。

什么是符号引用呢?它表示一个以 refs 开头的文件(比如 refs/heads/develop),这个文件保存着本地每个分支当前所处 commit。

我们可以打开 git 项目的 .git 文件夹,在其中的 refs/heads 文件夹中会保存各个分支当前所指向的 commit:

핵심 코드를 보호하기 위한 중요한 Git 팁을 공유하세요!

HEAD 指的是 .git/HEAD,就是一个文件,保存着当前指向的符号引用:

핵심 코드를 보호하기 위한 중요한 Git 팁을 공유하세요!

因此 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 非常强大,它可以有这些使用场景:

  1. 获取本地和远端的 commit 差异
  2. 获取指定时间内的提交记录,可以具体到谁、什么时候、修改了哪些
  3. 获取具体某次提交修改的文件

上面我们使用的参数 @{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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 juejin에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
Github : 개발자 및 프로젝트를위한 플랫폼Github : 개발자 및 프로젝트를위한 플랫폼Apr 13, 2025 am 12:01 AM

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

GitHub의 행동 : 예 및 사용 사례GitHub의 행동 : 예 및 사용 사례Apr 12, 2025 am 12:16 AM

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

Git vs. Github : 버전 제어 및 코드 호스팅Git vs. Github : 버전 제어 및 코드 호스팅Apr 11, 2025 am 11:33 AM

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

간단한 말로 git은 무엇입니까?간단한 말로 git은 무엇입니까?Apr 09, 2025 am 12:12 AM

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

git은 github와 동일합니까?git은 github와 동일합니까?Apr 08, 2025 am 12:13 AM

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

HTML에 github를 사용하는 방법은 무엇입니까?HTML에 github를 사용하는 방법은 무엇입니까?Apr 07, 2025 am 12:13 AM

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

git 또는 github로 시작해야합니까?git 또는 github로 시작해야합니까?Apr 06, 2025 am 12:09 AM

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

Microsoft는 git 또는 github를 소유합니까?Microsoft는 git 또는 github를 소유합니까?Apr 05, 2025 am 12:20 AM

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

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

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

DVWA

DVWA

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

SublimeText3 영어 버전

SublimeText3 영어 버전

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

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기