add git 指定类型文件夹_git add-如何避免在git-add时指定绝对文件路径

本文介绍了一个bash脚本,用于方便地管理和操作git的已跟踪、未跟踪和未暂存的文件,无需每次都输入绝对文件路径。通过提供选项如'st'、'nt'和'ut',用户可以快速添加指定状态的文件到git。
摘要由CSDN通过智能技术生成

请看一下我为此目的创建的示例bash脚本。 链接到Github回购

#!/bin/bash

# Script Name: git-bash.sh

#

# Author: Krishnadas P.C

# 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值