git 사용에 대한 기타 참고 사항
머리말
개발자로서 git
을 모르거나 아직 git
을 사용하지 못한다면 반성해볼 필요가 있습니다. 가서 소개 소개를 직접 읽어보세요. 오늘은 제가 일상생활에서 자주 사용하는 git
명령어와 사무실 효율을 높일 수 있고 좋다고 생각하는 명령어를 소개하겠습니다. 내용이 좀 난잡할 수도 있지만 확실히 고전적인 명령들이네요. 여기에 메모해 두었는데, 저를 감상하러 오시는 분들께 도움이 되었으면 좋겠습니다.
영역
그 전에 git
워킹디렉토리(working Directory)
- 공연지역(무대지수)
- 지역역사지역(역사)
명령어부터 시작해 볼까요. clone
원격 저장소를 로컬로 가져오는 명령입니다. 하지만 지정된 폴더로 가져오고 싶을 때는 직접 git
할 수 있습니다. 실제로는 이렇게 할 필요가 없으며, 하나의 명령으로 git colne
하면 됩니다. 매우 간단합니다. mkdir
git clone 远程仓库 文件名
rm
작업 중 이런 상황이 발생할 수 있습니다.
을 사용하여 작업 공간의 모든 수정된 파일을 임시 저장 영역에 직접 추가하지만 나중에는 Do가 있다는 것을 알게 됩니다. 먼저 파일을 추가하지 말고 다음 명령을 사용하여 파일을 작업 공간으로 되돌릴 수 있습니다.git rm --cached <file>
git add .
stash개발 중 온라인 긴급
이 발생하는 상황이 발생하여 현재 개발 중인 기능이 완료되지 않은 상태입니다. 제출하고 싶지 않다면 이 시점에서을 사용하여 작업공간에 모든 파일을 저장할 수 있습니다. 이때 안전하게 브랜치를 잘라내고 복구bug
하면 됩니다. 복구가 완료된 후 git stash
를 실행하여 이전에 저장된 것을 꺼내면 됩니다. 물론 bug
과 같은 다른 관련 명령도 있습니다. 저장된 기록을 확인하고, git stash pop
저장된 기록을 삭제하세요. git stash list
git stash drop
태그
개발 중에
태그를 지정하고 해당 태그를 원격 창고에 푸시해야 할 수도 있습니다. 이 경우 다음 명령을 사용하여 푸시할 수 있습니다.아아아git tag tagName
수정
나중에
보면 마지막에 파일이 추가되지 않았거나 일부 파일이 수정된 것을 발견했습니다. 지금은 새로운 commit
정보를 추가하지 않고 마지막 commit
에 추가하기만 하면 됩니다. 이때 commit
git push --tags tagName
commit
를 이용하여 임시저장영역에 파일을 추가할 수 있으며, 이때 정보를 수정할 수도 있습니다. commit
reset
의 효과를 얻을 수 있지만 다음 명령을 사용하여 이전 reset
git commit --amend <file>
rm
명령을 바꿀 수 있습니다. git rm --cached <file>
매개변수와 결합하면 어떤 노드로든 후퇴하여 작업할 수 있습니다. reset
git reset HEAD <file>
soft
이 명령을 실행한 후에는 commit
으로 돌아갑니다. .작업공간은 그대로 유지되며 임시저장공간은 당시의 장소로 복원됩니다. 매개변수도 있습니다. index
rreeindex
는 hard
의 반대라고 할 수 있는데, 그 효과는 작업 영역과 임시 보관 영역의 차이에 있습니다.
rebasesoft
는 리디렉션을 의미합니다. 현재 브랜치와 원격 브랜치
의 정보에 차이가 있는 경우 지금은 진행할 수 없음을 알려드립니다. 제출하기 전에 먼저 원격 rebase
정보를 로컬 정보로 가져와야 합니다. 이 경우 commit
명령을 사용할 수 있습니다. 아래와 같이 현재 push
브랜치 commit
rebase
develop
에서 명령
git reset --soft index
를 먼저 실행한 후 rebase
로 이동해야 합니다. the Remote
git reset --hard index
push
각 지점의 최종 상황은 위 사진과 같습니다. 명령어가 기억하기 어렵다면 하나의 명령어를 사용하여 위의 효과를 얻을 수도 있습니다. master
git fetch git rebase origin/master
의 간단한 응용이자 일반적인 명령어이기도 합니다. 다음은
의 선택적 매개변수를 소개합니다. rebase
rebase
--onto--onto
브랜치에 새 브랜치를 생성할 때 다양한 기능을 개발하기 위해 다양한 브랜치를 생성합니다. 함수 및 일부
도 제출했는데, 현재 원래 브랜치에 잘못된 A
이 있는 것을 발견했습니다. B
을 commit
에 추가하려면 이 잘못된 역시 우수해요. A
당신의 마법의 힘을 뽐낼 시간입니다. commit
当前处在B
分支,要得到上面的结果,只需执行如下命令
git rebase --onto master <b的commit hash code> B
这个不仅可以针对不同的分支,也能作用于同一个分支上。所以针对上面的情况可以只对分支B
进行操作,等价命令如下:
git rebase --onto <a的commit hash code> <b的commit hash code> B
--interactive
当我们要修改commit
信息的名称时,如果要修改的commit
处在第一个时,可以使用
git commit --amend
如果不是第一个时,我们就要使用到rebase
的--interactive
可选参数了,可以简写为-i
。
git rebase -i <commit hash code>
参数后面的commit hash code
为需要修改的commit
的前一个。执行之后就会出现如下类似的信息:
pick 137cf0a First coommit pick 163dc38 Second commit # Rebase f9aee6e..163dc38 onto f9aee6e (2 command(s)) # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x, exec = run command (the rest of the line) using shell # # These lines can be re-ordered; they are executed from top to bottom. # # If you remove a line here THAT COMMIT WILL BE LOST. # # However, if you remove everything, the rebase will be aborted. # # Note that empty commits are commented out
根据提示我们可以有6
个可选择的操作。相信提示已经说的很明显了,对于我们这种要修改First coommit
的情况,需要使用r
。
r 137cf0a First commit pick 163dc38 Second commit
执行之后会跳到修该First coomit
的界面,进行修改即可。
First commit # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # # Date: Thu Jan 26 23:07:10 2017 +0800 # # rebase in progress; onto f9aee6e # You are currently editing a commit while rebasing branch 'master' on 'f9aee6e'. # # Changes to be committed: # new file: file1
至于其他的操作项,有兴趣的可以自己去尝试一下。例如s
操作就可以用来合并commit
。
branch
相信branch
都很熟悉,我这里要说的是他的另一种可能会用到的情况。场景是这样的:如果在你进行创建新的分支时,并不想从当前的commit
信息节点进行创建分支。
要实现如上效果只需在创建分支时在后面再添加额外的参数,该参数就是你所需调到的commit
节点的hash code
git branch new_branch <commit hash code>
push
这里提一下push
的--set-upstream
,它的效果是设置上游分支,当我们将远程不存在的本地分支推送到远程时,如果不在推送的分支上,我们一般会使用如下命令进行推送。
git checkout push_branch git push origin push_branch
下面是简洁的方法,使用该参数无需切换分支,可以直接使用如下命令进行推送。
git push --set-upstream origin push_branch
cherry-pick
这个命令的场景是:当你所在的分支没用,你要删除它,但其中的一个commit
你还是想推送到远程master
上。
将分支切换到master
,执行以下命令:
git cherry-pick <b的 commit hash code>
merge
我们所熟知的是使用merge
来进行分支的合并,每次使用merge
时都会自动将副分支合并成一个commit
进行推送到主分支上,那么如果我不想它自动推送到主分支上时(可能我还需要进行修改),这时就可以使用--squash
操作
git merge --squash dev_branch
执行完以上命令后,我们就可以在暂存区看到一个还未提交的文件状态。
reflog
当我们切分支太频繁了之后,可能会忘了一些分支是从哪个分支切过来的,此时可以使用如下命令查看:
git reflog
894a16d HEAD@{0}: commit: commit another todo 6876e5b HEAD@{1}: checkout: moving from solve_world_hunger to kill_the_batman 324336a HEAD@{2}: commit: commit todo 6876e5b HEAD@{3}: checkout: moving from blowup_sun_for_ransom to solve_world_hunger 6876e5b HEAD@{4}: checkout: moving from kill_the_batman to blowup_sun_for_ransom 6876e5b HEAD@{5}: checkout: moving from cure_common_cold to kill_the_batman 6876e5b HEAD@{6}: commit (initial): initial commit
这样我们就可以看到所用的操作历史了。这样如果我们使用git reset
命令不小心删除了需要的东西。可以通过此来查找到删除操作的hash code
,之后就可以通过如下命令进行恢复。
git checkout <hash code>
目前想到的就这些了,希望能有所帮助
个人博客:http://www.php.cn/
前言
作为一个开发者,如果现在还不知道git
或者还不会使用git
,那么你应该好好的反省。自己去好好看一遍的入门介绍吧。今天只是对自己在日常中使用git
的一些常用命令的介绍与自己认为不错且能提高我们办公效率的命令。内容可能会有点杂乱,但绝对都是经典的命令,在此记下笔记,也希望能帮助来赏脸关顾的你们。
区域
在这之前,来介绍一下git
的三个区域
工作区(working directory)
暂存区(stage index)
本地历史区(history)
通过一张图就能简洁易懂的明白它们之间的转化。
clone
은 clone
명령으로 먼저 소개됩니다. git
를 사용해본 사람이라면 알 것입니다. git colne
원격 저장소를 로컬로 가져오는 명령입니다. 하지만 지정된 폴더로 가져오고 싶을 때는 직접 mkdir
할 수 있습니다. 실제로는 이렇게 할 필요가 없으며, 하나의 명령으로 git clone 远程仓库 文件名
하면 됩니다. 매우 간단합니다.
rm
작업 중 이런 상황이 발생할 수 있습니다. git add .
을 사용하여 작업 공간의 모든 수정된 파일을 임시 저장 영역에 직접 추가하지만 나중에는 Do가 있다는 것을 알게 됩니다. 먼저 파일을 추가하지 말고 다음 명령을 사용하여 파일을 작업 공간으로 되돌릴 수 있습니다.
git rm --cached <file>
stash
개발 중 온라인 긴급bug
이 발생하여 수정이 필요한 상황이 있는데, 현재 개발 중인 기능이 완료되지 않은 상황이고, 제출하고 싶지 않다면 이 시점에서 git stash
을 사용하여 작업공간에 모든 파일을 저장할 수 있습니다. 이때 안전하게 브랜치를 잘라내고 복구bug
하면 됩니다. 복구가 완료된 후 git stash pop
를 실행하여 이전에 저장된 것을 꺼내면 됩니다. 물론 git stash list
과 같은 다른 관련 명령도 있습니다. 저장된 기록을 확인하고, git stash drop
저장된 기록을 삭제하세요.
태그
개발 중에 git tag tagName
태그를 지정하고 해당 태그를 원격 창고에 푸시해야 할 수도 있습니다. 이 경우 다음 명령을 사용하여 푸시할 수 있습니다.
수정
나중에commit
보면 마지막 commit
에 파일이 추가되지 않았거나 일부 파일이 수정된 것을 발견했습니다. 지금은 새로운 commit
정보를 추가하지 않고 마지막 commit
에 추가하기만 하면 됩니다. 이때
git push --tags tagName
를 이용하여 임시저장영역에 파일을 추가할 수 있으며, 이때 commit
정보를 수정할 수도 있습니다.
reset
reset
도 이전 rm
의 효과를 얻을 수 있지만 다음 명령을 사용하여 이전 git rm --cached <file>
git commit --amend <file>
reset
매개변수와 결합하면 어떤 soft
노드로든 후퇴하여 작업할 수 있습니다. commit
git reset HEAD <file>
으로 돌아갑니다. .작업공간은 그대로 유지되며 임시저장공간은 당시의 index
장소로 복원됩니다. index
매개변수도 있습니다. hard
rree
의 반대라고 할 수 있는데, 그 효과는 작업 영역과 임시 보관 영역의 차이에 있습니다. soft
는 리디렉션을 의미합니다. 현재 브랜치와 원격 브랜치rebase
의 정보에 차이가 있는 경우 지금은 진행할 수 없음을 알려드립니다. commit
제출하기 전에 먼저 원격 push
정보를 로컬 정보로 가져와야 합니다. 이 경우 commit
명령을 사용할 수 있습니다. 아래와 같이 현재 rebase
브랜치 develop
명령 rebase
git reset --soft index
로 이동해야 합니다. the Remote push
master
git reset --hard index
git fetch git rebase origin/master
의 간단한 응용이자 일반적인 명령어이기도 합니다. 다음은 rebase
의 선택적 매개변수 rebase
를 소개합니다. --onto
브랜치에 새 브랜치를 생성할 때 다양한 기능을 개발하기 위해 다양한 브랜치를 생성합니다. 함수 및 일부 A
도 제출했는데, 현재 원래 B
브랜치에 잘못된 commit
이 있는 것을 발견했습니다. A
을 commit
에 추가하려면 이 잘못된 역시 우수해요. rebase
당신의 마법의 힘을 뽐낼 시간입니다. master
commit
--onto
은 현재 브랜치에 있습니다. 위의 결과를 얻으려면 다음 명령을 실행하세요.
git push origin master
이는 다른 브랜치를 대상으로 할 수 있을 뿐만 아니라 또한 동일한 지점에서 작업할 수도 있습니다. 따라서 위의 상황에서는 B
브랜치에서만 작업이 가능합니다.
git pull --rebase origin master
--interactiveB
정보를 원할 경우 수정된
이 첫 번째인 경우git rebase --onto master <b的commit hash code> B
commit
를 사용할 수 있습니다. 첫 번째가 아닌 경우 commit
의 선택적 매개변수를 사용해야 합니다. 🎜>, 줄여서 로 쓸 수 있습니다.
git rebase --onto <a的commit hash code> <b的commit hash code> B
rebase
매개변수 뒤의 --interactive
는 수정이 필요한 -i
앞의 매개변수입니다. 실행 후 다음과 유사한 메시지가 나타납니다. pick 137cf0a First coommit pick 163dc38 Second commit # Rebase f9aee6e..163dc38 onto f9aee6e (2 command(s)) # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x, exec = run command (the rest of the line) using shell # # These lines can be re-ordered; they are executed from top to bottom. # # If you remove a line here THAT COMMIT WILL BE LOST. # # However, if you remove everything, the rebase will be aborted. # # Note that empty commits are commented out
根据提示我们可以有6
个可选择的操作。相信提示已经说的很明显了,对于我们这种要修改First coommit
的情况,需要使用r
。
r 137cf0a First commit pick 163dc38 Second commit
执行之后会跳到修该First coomit
的界面,进行修改即可。
First commit # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # # Date: Thu Jan 26 23:07:10 2017 +0800 # # rebase in progress; onto f9aee6e # You are currently editing a commit while rebasing branch 'master' on 'f9aee6e'. # # Changes to be committed: # new file: file1
至于其他的操作项,有兴趣的可以自己去尝试一下。例如s
操作就可以用来合并commit
。
branch
相信branch
都很熟悉,我这里要说的是他的另一种可能会用到的情况。场景是这样的:如果在你进行创建新的分支时,并不想从当前的commit
信息节点进行创建分支。
要实现如上效果只需在创建分支时在后面再添加额外的参数,该参数就是你所需调到的commit
节点的hash code
git branch new_branch <commit hash code>
push
这里提一下push
的--set-upstream
,它的效果是设置上游分支,当我们将远程不存在的本地分支推送到远程时,如果不在推送的分支上,我们一般会使用如下命令进行推送。
git checkout push_branch git push origin push_branch
下面是简洁的方法,使用该参数无需切换分支,可以直接使用如下命令进行推送。
git push --set-upstream origin push_branch
cherry-pick
这个命令的场景是:当你所在的分支没用,你要删除它,但其中的一个commit
你还是想推送到远程master
上。
将分支切换到master
,执行以下命令:
git cherry-pick <b的 commit hash code>
merge
我们所熟知的是使用merge
来进行分支的合并,每次使用merge
时都会自动将副分支合并成一个commit
进行推送到主分支上,那么如果我不想它自动推送到主分支上时(可能我还需要进行修改),这时就可以使用--squash
操作
git merge --squash dev_branch
执行完以上命令后,我们就可以在暂存区看到一个还未提交的文件状态。
reflog
当我们切分支太频繁了之后,可能会忘了一些分支是从哪个分支切过来的,此时可以使用如下命令查看:
git reflog
894a16d HEAD@{0}: commit: commit another todo 6876e5b HEAD@{1}: checkout: moving from solve_world_hunger to kill_the_batman 324336a HEAD@{2}: commit: commit todo 6876e5b HEAD@{3}: checkout: moving from blowup_sun_for_ransom to solve_world_hunger 6876e5b HEAD@{4}: checkout: moving from kill_the_batman to blowup_sun_for_ransom 6876e5b HEAD@{5}: checkout: moving from cure_common_cold to kill_the_batman 6876e5b HEAD@{6}: commit (initial): initial commit
这样我们就可以看到所用的操作历史了。这样如果我们使用git reset
命令不小心删除了需要的东西。可以通过此来查找到删除操作的hash code
,之后就可以通过如下命令进行恢复。
git checkout <hash code>
目前想到的就这些了,希望能有所帮助
更多git使用杂记 相关文章请关注PHP中文网!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

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

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

GIT를 통해 로컬로 프로젝트를 다운로드하려면 다음 단계를 따르십시오. GIT를 설치하십시오. 프로젝트 디렉토리로 이동하십시오. 다음 명령을 사용하여 원격 저장소 클로닝 : git 클론 https://github.com/username/repository-name.git

GIT 코드를 업데이트하는 단계 : 코드 확인 : git 클론 https://github.com/username/repo.git 최신 변경 사항 가져 오기 : Git Fetch Merge 변경 사항 : GIT 병합 원산지/마스터 푸시 변경 (옵션) : Git Push Origin Master

git 저장소를 삭제하려면 다음 단계를 따르십시오. 삭제하려는 저장소를 확인하십시오. 로컬 리포지토리 삭제 : rm -rf 명령을 사용하여 폴더를 삭제하십시오. 원격으로 창고 삭제 : 창고 설정으로 이동하고 "창고 삭제"옵션을 찾은 후 작동을 확인하십시오.

로컬 git 코드를 업데이트하는 방법은 무엇입니까? Git Fetch를 사용하여 원격 저장소에서 최신 변경 사항을 가져옵니다. Git Merge Origin/& Lt; 원격 지점 이름 & gt; 합병으로 인해 발생하는 갈등을 해결합니다. git commit -m "merge branch & lt; 원격 브랜치 이름 & gt;" 병합 변경 사항을 제출하고 업데이트를 적용합니다.

GIT 코드 병합 프로세스 : 충돌을 피하기 위해 최신 변경 사항을 가져옵니다. 병합하려는 지점으로 전환하십시오. 병합을 시작하고 병합을 지정합니다. 병합 충돌을 해결하십시오 (있는 경우). 커밋 메시지를 제공하여 병합을 준비하고 커밋합니다.

해결 : GIT 다운로드 속도가 느리면 다음 단계를 수행 할 수 있습니다. 네트워크 연결을 확인하고 연결 방법을 전환하십시오. GIT 구성 최적화 : 포스트 버퍼 크기를 늘리고 (GIT 구성-글로벌 http.postBuffer 524288000) 저속 제한 (git config --global http.lowspeedlimit 1000)을 줄입니다. git 프록시 (예 : git-proxy 또는 git-lfs-proxy)를 사용하십시오. 다른 git 클라이언트 (예 : Sourcetree 또는 Github 데스크탑)를 사용해보십시오. 화재 보호를 확인하십시오

Git Commit은 프로젝트의 현재 상태에 대한 스냅 샷을 저장하기 위해 파일 변경을 GIT 저장소에 기록하는 명령입니다. 사용 방법은 다음과 같습니다. 임시 저장 영역에 변경 사항 추가 제출 메시지를 저장하고 종료하기 위해 간결하고 유익한 제출 메시지를 작성하여 제출을 완료하기 위해 제출물을 완료하십시오. 제출자에 서명을 추가하여 제출 내용을보기 위해 GIT 로그를 사용하십시오.

전자 상거래 웹 사이트를 개발할 때 어려운 문제가 발생했습니다. 대량의 제품 데이터에서 효율적인 검색 기능을 달성하는 방법은 무엇입니까? 기존 데이터베이스 검색은 비효율적이며 사용자 경험이 좋지 않습니다. 일부 연구 후, 나는 검색 엔진 타입을 발견하고 공식 PHP 클라이언트 Typeense/Typeense-PHP를 통해이 문제를 해결하여 검색 성능을 크게 향상 시켰습니다.
