IT

모든 Git 명령을 시작할 때“git”을 입력하지 않으려면 어떻게해야합니까?

lottoking 2020. 5. 13. 08:15
반응형

모든 Git 명령을 시작할 때“git”을 입력하지 않으려면 어떻게해야합니까?


git모든 Git 명령의 시작 부분에 단어를 입력하지 않아도되는 방법이 있는지 궁금합니다 .

"Git mode"git 로 들어가기 위해 명령 프롬프트를 연 후 처음에 한 번만 명령 을 사용하는 방법이 있다면 좋을 것 입니다.

예를 들면 다음과 같습니다.

git>

그 후에 우리가 입력하는 모든 명령은 기본적으로 Git 명령으로 해석됩니다.

MySQL 쉘을 사용하여 데이터베이스 명령을 작성하는 방법과 유사한 방식으로 :

mysql>

이렇게하면 git하루에 수백 번 입력하지 않아도됩니다 .

참고 :git-bash Windows 에서을 사용 하고 있습니다.


gitsh 시도해 볼 수 있습니다 . 그들의 readme에서 :

gitsh프로그램은 git 용 대화식 쉘입니다. 내부에서 gitsh로컬 별명과 구성을 사용하더라도 git 명령을 실행할 수 있습니다.

  • 힘내 명령은 그룹으로 오는 경향이 있습니다. git전용 git 쉘에서 실행 하여 반복해서 입력하지 마십시오 .
sh$ gitsh
gitsh% status
gitsh% add .
gitsh% commit -m "Ship it!"
gitsh% push
gitsh% ctrl-d
sh$

또는 연결된 다른 프로젝트를 살펴보십시오.

  • git-sh- Git 프롬프트, 별명 및 완료를 가진 사용자 정의 bash 쉘.
  • gitsh -Perl로 작성된 간단한 Git 쉘.
  • repl -REPL에서 부속 명령이있는 프로그램을 랩핑합니다.

참고 : 이것을 직접 사용하지 않았습니다.


이것을 할 Perl one-liner :

perl -nE 'BEGIN {print "git > "} system "git $_"; print "git > "'

그러면 접두사가 앞에 입력 한대로 실행됩니다 git. 그리고 당신이 때릴 때까지 계속 그렇게 할 것 ^D입니다.


이것은 정확히 당신이 요구하는 것이 아니지만 ~/.bashrc가장 자주 사용하는 Git 명령에 대해 쉘 별명을 설정할 수 있습니다.

alias commit='git commit'
alias checkout='git checkout'
...

또한 Git 자체 내에서 별칭을 만들 수 있습니다.

git config --global alias.ci commit
git config --global alias.co checkout
...

이것은 당신이 입력 할 수 있습니다 git ci대신 git commit등등합니다.


내 GitBash에 ~ / .bash_profile에서 별칭을 사용하는 것을 좋아합니다. 이 접근 방식을 사용하면 다음과 같은 즐겨 찾기가 있습니다.

# git
alias gw='git whatchanged'
alias gg='git grep -n -C8'
alias ggi='git grep -i -n -C8'
alias gb='git branch'
alias gbd='git branch -D'
alias gba='git branch -a'
alias gc='git checkout'
alias gcp='git cherry-pick'
alias gfo='git fetch origin'
alias s='git status'
alias gmom='git merge origin/master'
alias grom='git rebase origin/master'
alias gpom='git pull origin master'
alias pplog='git log --oneline --graph --decorate'

편집기를 사용하십시오.

vs 코드commit같이 좋아하는 편집기에서와 같은 명령을 입력하고 git을보다 효율적으로 사용하십시오.

여기에 이미지 설명을 입력하십시오

또는 입력 git하여 모든 명령을 가져옵니다.

여기에 이미지 설명을 입력하십시오


내 친구가 이것을 달성하는 작은 bash 스크립트를 만들었습니다. Replify 라고 합니다 .

$ replify git
Initialized REPL for [git]
git> init
Initialized empty Git repository in /your/directory/here/.git/

git> remote add origin https://your-url/repo.git

git> checkout -b new-branch
Switched to a new branch 'new-branch'

git> push

다른 방법이 있습니다. 그것은 또한 요청 된 내용이 아니지만 얼마 동안 사용 해 왔으며 꽤 좋습니다. 에 다음 줄을 추가하십시오 ~/.bashrc.

complete -E -W git

이제 빈 Bash 프롬프트에서 Tab을 누르면 "git"이 입력됩니다.


나는 이것이 매우 늦은 대답이라는 것을 알고 있지만,이 질문 은 꽤 오랫동안 한동안 이런 종류의 반복 으로 고통 받고 있기 때문에 나에게 메모를 쳤다 .

나는 당신에 대해 확실 하지 않지만 솔직히 모든 명령에 대해 별칭을 만들고 싶지 는 않지만 ( DO N'T 반복 하지 않음 ) git대신 이 문제를 해결하기 위해 NoGit 이라는 Python 스크립트를 작성했습니다 .

#!/usr/bin/env python
import sys, os, signal, atexit, readline, subprocess

commands, stop, history_file = [], False, os.path.join(os.getcwd(), "git.history")

def run_commands():
  stop = True
  for cmd in commands:
    command = ["git" if not cmd.startswith("git ") else ""]
    command = [cmd] if command[0] == "" else [command[0], cmd]
    subprocess.Popen(command).communicate()
    commands = []

def signal_handler(sig, frame):
  run_commands()
  sys.exit(0)

try:
  readline.read_history_file(history_file)
  signal.signal(signal.SIGINT, signal_handler)

  while True:
    if stop == True:
      break
    command = input("git> ")
    if command == "%undo":
      commands.pop()
    elif command == "%run":
      run_commands()
    elif command == "%exit":
      sys.exit(0)
    else:
      commands += [cmd.strip() for cmd in command.split(";")]

  signal.pause()
  readline.set_history_length(-1)
except IOError:
  pass

atexit.register(readline.write_history_file, history_file)

NoGit 은 "git"키워드의 불필요한 반복을 막기위한 간단한 파이썬 스크립트입니다.

선적 서류 비치:

  • %undo명령은 스택에서 마지막 명령을 제거합니다
  • %run명령은 스택의 명령을 실행하고 스택을 지 웁니다
  • %exit명령은 아무것도하지 않고 CLI를 닫습니다
  • 누르는 ctr+c것은 달리기와 같다%run; %exit
  • 스크립트는 스크립트 git.history와 같은 폴더에 있는 파일에 실행 된 명령을 저장합니다
  • 세미콜론을 사용하여 한 줄에 여러 명령을 추가 할 수 있습니다
  • git명령 시작 부분에 키워드 사용할 수 있으며 스크립트는 키워드 를 복제 하지 않습니다 ( EG : git init 는되지 않음 git git init).

명령 예 :

  1. init
  2. add .
  3. stage .
  4. commit -m "inital commit"
  5. %run; %exit

추가 정보 (Linux 사용자의 경우) :

원하는 경우 .py확장을 제거하고 다음을 사용하여 실행 파일로 변환 할 수 있습니다 .

mv ./git.py ./git
chmod +x ./git

그런 다음 스크립트를 다음과 같이 호출하는 대신

python3 git.py

대신 이것을 실행하십시오 :

./git

추가 정보 (게으른 사람들을위한) :

게으르고 입력하지 않으려면 ./이 스크립트를 /bin/폴더 로 이동 하고 별칭을 만들 수 있습니다.

당신이 있다면 정말, 정말 게으른, 다음 명령을 사용합니다 :

sudo cp ./git /bin/nogit
sudo chmod +x /bin/nogit
alias nogit='/bin/nogit'

당신이 있다면 정말, 정말, 정말 게으른, 복사하고 다음 한 줄을 붙여 :

sudo cp ./git /bin/nogit && sudo chmod +x /bin/nogit && alias nogit='/bin/nogit'

게으름이 이전에 인류에게 알려지지 않은 수준에 도달 한 경우 동일한 단일 라이너의 더 컴팩트 한 버전입니다.

sudo cp ./git /bin/nogit;sudo chmod +x /bin/nogit;alias nogit='/bin/nogit'

행운을 빕니다.


모든 명령에서 작동하는 또 다른 방법은 Ctrl + R (reverse-i-search)을 사용하는 것입니다.

reverse-i-search를 사용하면 명령 기록을 검색 할 수 있습니다. 검색 문자열을 누른 후 Ctrl + R을 반복하여 같은 문자열로 다시 검색을 반복하십시오.

명령을 한 번만 입력하면 명령의 하위 문자열에서 해당 명령을 호출 할 수 있습니다. 대부분의 경우 2 ~ 3 개의 잘 배치 된 검색어로 매우 긴 명령과 다양한 변형을 모두 불러올 수 있습니다. 쉘을 정상적으로 사용하는 것 외에는 사전 구성이 필요하지 않으며 쉘을 사용한 방법에 자동으로 적응하므로 전체 명령을 한 번만 입력하면 명령이 명령 내역에 자동으로 추가됩니다.

  • git commit --amend: <Ctrl+R>am
  • git pull: <Ctrl+R>pu
  • git rebase --rebase-merges -i --onto origin/develop origin/develop feature/blue-header: <Ctrl+R>blu
  • git rebase --abort: <Ctrl-R>ab
  • git rebase --continue: <Ctrl-R>con
  • docker-compose stop && git pull && make && docker-compose up -d: <Ctrl-R>up
  • 기타

또한 Ctrl-R은 bash에서만 작동하지 않지만 Python 셸, IPython, mysql 셸, psql 셸, irb (ruby) 등과 같이 readline 라이브러리를 사용하는 많은 프로그램이 있습니다 (많은 프로그램이 있습니다).


이 예에서는 MySql 프롬프트와 비교합니다. 작동 방식은 MySql 프로세스가 시작되고 해당 프로세스에 명령을 제공하는 것입니다. 따라서 선택한 언어로 비슷한 것을 작성해보십시오. 다음은 C ++의 간단한 예입니다.

#include <iostream>
#include <cstdlib>

int main(int argc, char *argv[]){
    while(true){
        std::cout << "git> ";
        std::cout.flush();
        std::string command;
        std::getline(std::cin, command);
        if(command == "exit") break;
        std::system("git " + command);
    }

    return 0;
}

방금 메모리에서 썼고 컴파일러로 확인하지 않았습니다. 사소한 구문 오류가있을 수 있습니다.


기본 사항의 경우 다음을 수행 할 수 있습니다.

function ggit(){ while true; do printf 'git> '; read; eval git $REPLY; done }
git> status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    deleted:    yarn.lock

no changes added to commit (use "git add" and/or "git commit -a")
git> add .
git> status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    deleted:    yarn.lock

git>

ctrl + c로 종료


Conemu와 함께 Windows 7을 사용할 때 개발 환경 시작 스크립트에 다음을 추가했습니다.

doskey g=git $*

이를 g통해을 입력하는 대신 명령을 사용할 수 있습니다 git. 마지막으로 Windows 10 및 Conemu로 시도했지만 작동하지 않았습니다. 버그가 있다고 생각하지만 시도해 볼 가치가 있습니다.


대괄호 편집기를 사용하면 코드 및 git 명령을 쉽게 사용할 수 있으며 많은 기능이 있습니다.

여기에 이미지 설명을 입력하십시오

오른쪽 상단에서 두 번째 쌍안 아이콘이 확장을 설치하는 데 사용됩니다.

여기에 이미지 설명을 입력하십시오

brackets git위 이미지와 같은 확장 프로그램을 검색 하여 설치하십시오.

여기에 이미지 설명을 입력하십시오

다시 오른쪽 상단에 네 번째 아이콘이 표시되므로 위 이미지와 같은 변경 사항을 클릭하여 확인하십시오.

대괄호를 설치하려면 다음 명령을 사용하십시오.

sudo add-apt-repository ppa:webupd8team/brackets
sudo apt-get update
sudo apt-get install brackets

자세한 내용 Ubuntupit의 Ubuntu 및 Linux Mint브래킷 코드 편집기를 설치하는 방법을 참조하십시오 .

참고 URL : https://stackoverflow.com/questions/56505000/how-do-i-avoid-typing-git-at-the-begining-of-every-git-command

반응형