git-add 동안 절대 파일 경로 지정을 피하는 방법
git add
파일 경로가 길어지면 명령 사용 이 지루해집니다. 예를 들어 git add src_test/com/abc/product/server/datasource/manager/aats/DSManger.java
절대 파일 경로 지정을 우회 할 수 있습니까? 어떤 종류의 패턴이나 무언가를 사용하고 있습니까?
나는 우리가 git gui
. 하지만 cmd 라인을 사용하여하고 싶습니다.
입력 해 주셔서 미리 감사드립니다.
유닉스 계열 시스템의 경우 항상 별표를 사용하여 파일을 가리킬 수 있습니다.
git add *DSManager.java
git은 현재 작업 디렉토리에서 시작하는 소스 트리에서 찾을 수있는 모든 DSManager.java 파일을 포함합니다.
다음은 파일을 추가하는 또 다른 방법입니다. 최소한 git 1.7.1에서 지원됩니다.
$ git add -i
staged unstaged path
1: unchanged +61/-61 a/very/long/path/that/we/really/dont/want/to/type.txt
2: unchanged +1/-1 another/very/long/path/that/we/really/dont/want/to/type.txt
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> 2
눌러 2
갱신을 선택하거나 입력합니다 u
.
staged unstaged path
1: unchanged +61/-61 a/very/long/path/that/we/really/dont/want/to/type.txt
2: unchanged +1/-1 another/very/long/path/that/we/really/dont/want/to/type.txt
Update>> 2
준비하려는 파일에 해당하는 번호를 누릅니다. 여러 숫자를 쉼표로 구분하십시오 (예 :) 1,2
.
staged unstaged path
1: unchanged +61/-61 a/very/long/path/that/we/really/dont/want/to/type.txt
* 2: unchanged +1/-1 another/very/long/path/that/we/really/dont/want/to/type.txt
Update>>
[enter]
여기를 누르 세요.
updated one path
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> q
Bye.
마지막으로 입력 7
하거나 q
종료합니다.
bash를 사용하면 "globstar"( shopt -s globstar
)를 설정하고 다음을 수행 할 수 있습니다.
git add **/DSManger.java
현재 디렉토리 아래에있는 DSManager.java라는 모든 파일을 추가합니다.
( **/
모든 디렉토리 및 하위 디렉토리와 일치합니다.)
질문을 이해하는지 잘 모르겠습니다.
모든 파일을 추가하려면 (아직 추가되지 않음) 다음을 사용하십시오.
git add .
파일을 하나만 제외하고 모두 추가해야하는 경우 모두 콜드 추가 한 다음 다음을 사용하여 파일을 제거합니다.
git reset HEAD <file>
다음을 사용하여 하위 디렉토리의 모든 파일을 추가 할 수도 있습니다.
git add subdir/
내가 아는 한 가지 성가신 점은 파일 이름을 바꿀 때 새 파일 이름을 추가하고 git rm 이전 이름을 추가해야한다는 것입니다. 디렉토리 이름을 바꿀 때 이것은 성 가실 수 있습니다. 이 (유닉스 전용) git 별칭은이 문제를 해결합니다 (~ / .gitconfig 파일에 넣으십시오.
[alias] ;add after this heading or create this heading if it does not exist
addremove = !git add . && git ls-files --deleted | xargs --no-run-if-empty git rm
이렇게하면 모든 새 파일이 추가되고 삭제 된 모든 파일이 제거되고 인덱스에 스테이징됩니다.
터미널 창이 현재 적절한 폴더 (src_test / com / abc / product / server / datasource / manager / aats)에 CD가있는 경우 "git add DSManger.java"라고 말하면됩니다. 그러니 그냥하세요 :
cd src_test/com/abc/product/server/datasource/manager/aats
git add DSManger.java
그렇지 않으면 별도의 repo를 만들지 않는 한 다른 방법을 생각할 수 없습니다.
이 목적을 위해 만든이 샘플 bash 스크립트를 살펴보십시오. Github Repo에 연결
#!/bin/bash
# Script Name: git-bash.sh
#
# Author: Krishnadas P.C<pckrishnadas88@gmail.com>
# Date : 05-05-2018
#
# Description: A simple script to manipulate git files.
# TODO add more options and add Error Handlers.
#declare color variables
red=`tput setaf 1`
green=`tput setaf 2`
reset=`tput sgr0`
#print the current git branch
echo "On Branch - $(git branch)"
#Get only staged files
gitstaged=($(git diff --name-only --cached))
#Get changes not staged for commit
gitnotstaged=($(git diff --name-only))
#Get only untracked files
gituntracked=($(git ls-files --others --exclude-standard))
if [ $# -ge 3 ];
then
if [ $2 == "st" ];
then
git $1 ${gitstaged[$3]}
elif [ $2 == "nt" ];
then
git $1 ${gitnotstaged[$3]}
elif [ $2 == "ut" ];
then
git $1 ${gituntracked[$3]}
else
echo "Invalid input provied."
fi
fi
#Get the new status after the command has been executed.
gitstaged=($(git diff --name-only --cached))
#Get changes not staged for commit
gitnotstaged=($(git diff --name-only))
#Get only untracked files
gituntracked=($(git ls-files --others --exclude-standard))
#print the staged files.
for i in ${!gitstaged[@]}; do
if [ $i -eq 0 ]; then
echo "Changes to be committed:"
fi
echo "${green}st$i - ${gitstaged[$i]}${reset}"
done
#print the changes not staged files.
for i in ${!gitnotstaged[@]}; do
if [ $i -eq 0 ]; then
echo "Changes not staged for commit:"
fi
echo "${red}nt$i - ${gitnotstaged[$i]}${reset}"
done
#print the untracked files.
for i in ${!gituntracked[@]}; do
if [ $i -eq 0 ]; then
echo "Untracked files:"
fi
echo "${red}ut$i - ${gituntracked[$i]}${reset}"
done
: 'Example how to:
#$ ./git-bash.sh
Untracked files
ut0 - git-bash.sh
ut1 - git-status.txt
ut2 - test
$./git-bash.sh add ut 0
Staged files
st0 - git-bash.sh
st1 - git-status.txt
Untracked files
ut0 - test
ut stands for untracked files.
nt stands for notstaged tracked files.
st stands for staged files.
'
샘플 출력
$ ./git-bash.sh
On Branch - * master
Untracked files:
ut0 - git-bash.sh
ut1 - git-status.txt
ut2 - test
$ ./git-bash.sh add ut 2
On Branch - * master
Changes to be committed:
st0 - test
Untracked files:
ut0 - git-bash.sh
ut1 - git-status.txt
참조 URL : https://stackoverflow.com/questions/6248917/how-to-avoid-specifying-absolute-file-path-while-git-add
'programing' 카테고리의 다른 글
elisp를 디버그하는 방법? (0) | 2021.01.18 |
---|---|
개인 메서드를 지정하는 방법 (0) | 2021.01.18 |
모든 텍스트에 대해 Android 앱에서 텍스트 색상을 설정하는 방법은 무엇입니까? (0) | 2021.01.18 |
리눅스의 소켓 버퍼 크기를 찾는 방법 (0) | 2021.01.18 |
Eclipse에 "기존 파일 추가"(프로젝트에)와 동일한 기능이 있습니까? (0) | 2021.01.18 |