Quản lý nhiều kho lưu trữ git


85

Thiết lập một dự án rất dễ dàng trong git và vì vậy tôi có thể có kho lưu trữ riêng ngay cả đối với tập lệnh nhỏ. Bây giờ vấn đề là quản lý chúng như thế nào.

Tôi làm việc ở nhiều nơi với những kho này. Khi tôi đã thực hiện các thay đổi đối với một số kho lưu trữ, tôi muốn có thể cập nhật các kho lưu trữ ở những nơi khác.

Vì vậy, tôi có một thư mục với nhiều kho lưu trữ trong đó.

  1. Làm cách nào để tìm nạp tất cả chúng?
  2. Làm cách nào để kiểm tra xem có bất kỳ thay đổi nào trong số chúng có các thay đổi chưa được cam kết hay không?
  3. Làm cách nào để kiểm tra xem có bất kỳ thay đổi nào để hợp nhất không?

Và sẽ rất tuyệt nếu có thể thực hiện những điều này bằng một lệnh.

Đầu ra cần đủ im lặng để thực sự nhận thấy những việc cần làm.


Câu hỏi tương tự đã trả lời cho hg mercurial.
Serge Stroobandt

Câu trả lời:


44

Tôi thực sự khuyên bạn nên sử dụng công cụ nhiều kho lưu trữ mr . Tôi đã từng sử dụng tập lệnh shell tùy chỉnh theo khuyến nghị của những người khác trong một thời gian, nhưng sử dụng mr có những lợi ích sau cho tôi:

  • Nó chung chung: Có thể sử dụng kết hợp nhiều hệ thống điều khiển phiên bản khác nhau, không chỉ git (ví dụ như Mercurial, SVN, v.v.).
  • Nó nhanh chóng: mr có thể thực hiện nhiều công việc song song. Tôi sử dụng một số kho lưu trữ git / thương mại và đồng bộ hóa chúng nhiều lần trong ngày. Mr cực kỳ đẩy nhanh quá trình này.
  • Thật dễ dàng và nhanh chóng để quản lý danh sách kiểm tra kho lưu trữ. Chỉ cần sử dụng 'mr register' thay vì sửa đổi danh sách các dự án trong tập lệnh tùy chỉnh của bạn.

Đối với câu hỏi của bạn về đầu ra im lặng: Mức độ chi tiết có thể được sửa đổi bằng cách sử dụng công tắc dòng lệnh -q. Tôi thích đầu ra mặc định có vẻ thống nhất độc đáo đầu ra trong một bản tóm tắt ngắn gọn và rõ ràng.

Tôi sử dụng bí danh sau cho lệnh mr để đảm bảo rằng mr luôn chọn danh sách dự án mặc định của tôi được lưu trữ trong $ HOME và sử dụng 5 luồng song song:

alias mr='mr -d ~/ -j 5 '

5
Nó có hỗ trợ Windows không?
Fitzchak Yitzchaki

nó là tuyệt vời nhưng không hỗ trợ gắn thẻ git (tính đến 2016-08)
Hugo Zaragoza

@CADbloke nó không đề cập đến các cửa sổ trong trang cài đặt, nhưng dưới dạng tập lệnh Perl, nó có thể / nên / có thể hoạt động trên các cửa sổ.
scipilot

2
@HugoZaragoza, bạn luôn có thể tự mình xác định lệnh này [DEFAULT] tag = git tag "$ @"
AlexS 14/02/18

2
alias pa='find . -name .git -print -execdir git pull \;'sau đó, palà đủ
DawnSong

19

Tôi phải nói rằng tôi đã bắt đầu với câu trả lời hiện được chấp nhận (chỉ là một loạt các tập lệnh trợ giúp lặp lại trên các kho lưu trữ), nhưng nhìn chung, đó là một kinh nghiệm thiếu đối với tôi.

Vì vậy, sau khi thử mr, repo và git-submodules, tôi thấy mỗi mô-đun thiếu một cách khác nhau, vì vậy, tôi đã thực hiện biến thể của riêng mình: http://fabioz.github.io/mu-repo , một công cụ dành cho người lớn tại điểm này - nó có quy trình công việc cho phép bạn:

  • sao chép nhiều repo
  • khác (và chỉnh sửa) các thay đổi hiện tại trong nhiều đại diện
  • xem trước các thay đổi sắp tới
  • chạy các lệnh trong nhiều repo song song
  • tạo các nhóm đại diện
  • chạy các lệnh không liên quan đến git qua nhiều repo
  • vv (xem trang chủ để biết thêm thông tin).

Lưu ý rằng nó hỗ trợ bất kỳ hệ điều hành nào mà Python chạy;)


Câu trả lời của bạn gợi ý rằng mu-repo tốt hơn những gì mr làm. Nhưng mu-repo không hỗ trợ repo không phải git.
Shaunak Sontakke

1
Whell, mục đích thực sự là chỉ hỗ trợ git repos (đó là câu hỏi được đặt ra) - mặc dù bạn có thể mu sh <some command>thực hiện một số lệnh tùy ý trong nhiều repo, nhưng toàn bộ điểm cuối cùng của nó là xử lý git chứ không phải các hệ thống điều khiển phiên bản khác .. Nếu bạn cần, thì có, vui lòng sử dụng một công cụ khác.
Fabio Zadrozny

14

gr (git-run) mở rộngchức năng của mr (chỉ dành chogit). Tôi thấy việc tổ chức nhiều git repos bằng hệ thống thẻ của nó dễ dàng hơn. Tuy nhiên, mã chogrkhông được duy trì tốt. Nếu bạn đang sử dụng bash, hãy đảm bảo rằng bạn sử dụng nó vớibiểu mẫu-t tagthay vì#tagbiểu mẫu.


Dường như phát triển đã chọn sao lưu một chút kể từ đó: github.com/mixu/gr/graphs/contributors
Dave Forgac

8

Bạn có thể thử sử dụng repo với một manifest.xmltệp tùy chỉnh để chỉ định vị trí các kho của bạn. Có một số tài liệu về cách thực hiện việc này.

Ngoài ra, bạn có thể sử dụng git-submodule(1) .


2
git-submodule sẽ tốt, nếu tôi muốn giữ các kho lưu trữ ở cùng một trạng thái chính xác, nhưng không phải vậy. Tập hợp các kho không giống nhau ở mỗi nơi. Có thể có những thay đổi không được cam kết. Có thể có những thay đổi mà tôi chưa muốn hợp nhất.
iny

Tôi không biết về git-submodule. Cảm ơn vì đã đề cập đến nó.
sykora

Tài liệu cho repo khá tối thiểu và có vẻ như nó dành cho các loại quy trình công việc khác nhau mà tôi muốn sử dụng.
iny

6

Tôi đã viết một công cụ có tên " RepoZ " tự động phát hiện ra các kho lưu trữ git ngay sau khi bạn sao chép chúng hoặc thay đổi bất kỳ thứ gì trong chúng như chuyển đổi một nhánh chẳng hạn.

Sau khi tìm thấy, các kho được "theo dõi". Điều đó sẽ chỉ hiển thị chúng trong danh sách các kho lưu trữ cục bộ bao gồm thông tin trạng thái dày đặc lấy cảm hứng từ posh-git . Điều này chứa nhánh hiện tại và những thứ khác như chỉnh sửa tệp và số lượng cam kết đến hoặc đi.

Giao diện người dùng RepoZ

Điều này giúp theo dõi các kho lưu trữ cục bộ của bạn và các công việc chưa hoàn thành để cam kết hoặc đẩy. Ngoài ra, bạn có thể sử dụng danh sách kho lưu trữ làm điều hướng để chuyển từ kho này sang kho khác.

Điều hướng RepoZ

"Làm thế nào tôi có thể lấy tất cả chúng?"

Phiên bản dành cho Windows cung cấp một menu ngữ cảnh để tìm nạp hoặc kéo một kho lưu trữ. Với nhiều lựa chọn, bạn có thể chạy các hành động trên nhiều kho lưu trữ cùng một lúc.

Tuy nhiên, bạn có thể thấy một tính năng khác rất hữu ích:

Tự động tìm nạp RepoZ

Với Tự động tìm nạp, bạn có thể yêu cầu RepoZ tìm nạp các điều khiển từ xa của tất cả các kho lưu trữ git của bạn theo định kỳ trong nền. Tất nhiên, những lần tìm nạp này sẽ không xung đột với các cam kết cục bộ của bạn. Không có nỗ lực hợp nhất cục bộ như với git pull.


Vâng, quá tệ và không xứng đáng. Mở cửa cho các PR bất cứ lúc nào. Ping tôi.
Waescher

5

gitslave là một công cụ có thể chạy cùng một lệnh trên nhiều kho lưu trữ bằng cách tạo mối quan hệ siêu dự án / dự án con giữa siêu dự án và dự án con. Điều này (theo mặc định) cung cấp tóm tắt đầu ra để bạn có thể tập trung vào các kho lưu trữ cung cấp đầu ra duy nhất (hữu ích cho trạng thái git, không hữu ích cho các tệp git ls).

Điều này thường được sử dụng cho các dự án mà bạn cần tập hợp nhiều kho lưu trữ lại với nhau và giữ chúng trên cùng một nhánh hoặc thẻ cùng một lúc hoặc bất cứ điều gì. Đối với thư mục kho lưu trữ (bare) của tôi, tôi chỉ có một tệp makefile nhỏ cho phép tôi chạy các lệnh git tùy ý, như bạn thấy, tôi chủ yếu sử dụng cho fsck và gc:

full: fsck-full gc-aggressive
        @:

fsck-full:
        for f in */.; do (cd $$f; echo $$f; git fsck --full || echo $$f FAILED); done

gc-aggressive:
        for f in */.; do (cd $$f; echo $$f; git gc --aggressive || echo $$f FAILED); done

%:
        for f in */.; do (cd $$f; git $@ || echo $$f FAILED); done

5

Tôi đã tạo một bí danh và một hàm để chạy bất kỳ lệnh git nào trên tất cả các kho lưu trữ có sẵn trong một thư mục (một cách đệ quy). Bạn có thể tìm thấy nó ở đây: https://github.com/jaguililla/dotfiles/git

Đây là mã:

#!/bin/sh
# To use it: source git_aliases

# Example: rgita remote \;
alias rgita='find . -type d -name .git -execdir git'

# Example: rgit remote -vv
rgit() {
  rgita "$@" \;
}

Hy vọng nó giúp :)


1
mỏng và hữu ích!
Kevin Chou

Fantatstic! Đơn giản một-liner để đưa vào .bash_aliases: alias rgit='function _rgit(){ find . -type d -name .git -printf "\n%p\n" -execdir git "$@" \;; }; _rgit'. Nguồn nó, sau đó ví dụ như cuộc gọi rgit status.
ford04,

4

Bạn có thể sử dụng git-status-allđá quý cho việc này: https://github.com/reednj/git-status-all

# install the gem    
gem install git-status-all

# use the status-all subcommand to scan the directory
git status-all

Ngoài ra còn có một tùy chọn tìm nạp sẽ tìm nạp từ nguồn gốc cho tất cả các kho lưu trữ trước khi hiển thị trạng thái:

git status-all --fetch

trạng thái git tất cả


1
Cách tiếp cận rất tốt. Ngược lại với hầu hết các công cụ được bình chọn cao hơn, không cần phải đăng ký kho lưu trữ trước, thay vào đó nó chỉ cần kiểm tra tất cả các thư mục con.
luator

find . -name .git -print -execdir git status \;ổn
DawnSong 29/1218

3

Tôi sử dụng tập lệnh này để dễ dàng thực hiện các lệnh git trong tất cả các kho lưu trữ của mình.

#!/bin/sh
if [ ! "$1" = "" ] ; then

   if [ "$GITREPO" = "" -a -d "$HOME/cm/src" ] ; then
      GITREPO="$HOME/cm/src"
   fi

   if [ "$GITREPO" != "" ] ; then

      echo "Git repositories found in $GITREPO"
      echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-"

      DIRS="`/bin/ls -1 $GITREPO`"

      for dir in $DIRS ; do

         if [ -d $GITREPO/$dir/.git ] ; then
            echo "$dir -> git $1"
            cd $GITREPO/$dir ; git $@
            echo
         fi

      done
   else

      echo "Git repositories not found."

   fi
fi

Theo mặc định, tập lệnh sẽ tìm các kho lưu trữ git trong ~ / cm / src nhưng bạn có thể ghi đè điều này bằng cách đặt biến môi trường GITREPO theo ý muốn của bạn.

Kịch bản này dựa trên kịch bản này .


find . -name .git -print -execdir git pull \;làm những gì bạn nghĩ.
DawnSong

3

Tôi đã viết một công cụ dòng lệnh có tên gita để quản lý nhiều repo. Nó hiển thị trạng thái của các repo đã đăng ký cạnh nhau, chẳng hạn

nhập mô tả hình ảnh ở đây

Nó cũng có thể ủy quyền các lệnh / bí danh git từ bất kỳ thư mục làm việc nào.

Bây giờ để trả lời câu hỏi của bạn bằng cách sử dụng công cụ này:

Làm cách nào để tìm nạp tất cả chúng?

gita fetch

Làm cách nào để kiểm tra xem có bất kỳ thay đổi nào trong số chúng có các thay đổi chưa được cam kết hay không?

Các gita lslệnh show 3 biểu tượng có thể bên cạnh tên chi nhánh, mà chỉ ra

  • +: thay đổi theo giai đoạn
  • *: thay đổi không theo giai đoạn
  • _: tệp / thư mục không được theo dõi

Làm cách nào để kiểm tra xem có bất kỳ thay đổi nào để hợp nhất không?

Tên chi nhánh được tô màu theo 5 cách

  • trắng: chi nhánh địa phương không có chi nhánh từ xa
  • màu xanh lá cây: chi nhánh cục bộ giống với chi nhánh từ xa
  • màu đỏ: chi nhánh cục bộ đã tách khỏi chi nhánh từ xa
  • màu tím: nhánh cục bộ đi trước nhánh từ xa (tốt để đẩy)
  • màu vàng: chi nhánh cục bộ nằm sau chi nhánh từ xa (tốt để hợp nhất)

Để cài đặt nó, chỉ cần chạy

pip3 install -U gita

2

Nếu ai đó vẫn đang xem chủ đề này, vui lòng kiểm tra tập lệnh shell của tôi có tên gitme

bạn sẽ cần phải nhập kho git cục bộ theo cách thủ công nhưng tôi sử dụng công cụ này hàng ngày để cộng tác nhiều dự án git trên nhiều máy tính.

bạn có thể chạy git clone https://github.com/robbenz/gitme.git

cũng là kịch bản được đăng bên dưới

#!/bin/bash -e

REPOS=( 
/Users/you/gitrepo1
/Users/you/gitrepo2
/Users/you/gitrepo3
/Users/you/gitrepo4
)

MOVE="Moving to next REPO... \n" 

tput setaf 2;echo "What ya wanna do? You can say push, pull, commit, ftp push, or status"; tput sgr0

read input

if [ $input =  "commit" ]
then
    tput setaf 2;echo "Do you want a unique commit message? [y/n]";tput sgr0
    read ans
    if [ $ans = "y" ]
    then 
        for i in "${REPOS[@]}"
        do
            cd "$i"
            tput setaf 6;pwd;tput sgr0 
            git add . -A
            read -p "Commit description: " desc  
            git commit -m "$desc"
            tput setaf 2;echo  $MOVE;tput sgr0 
            sleep 1
        done 
    else 
        for i in "${REPOS[@]}"
        do
            cd "$i"
            tput setaf 6;pwd;tput sgr0 
            git add . -A
            git commit -m "autocommit backup point"
            tput setaf 2;echo  $MOVE;tput sgr0 
            sleep 1
        done
    fi 
elif [ $input = "push" ] || [ $input = "pull" ] || [ $input = "ftp push" ] || [ $input = "status" ]
    then
        for i in "${REPOS[@]}"
do
    cd "$i"
    tput setaf 6;pwd;tput sgr0 
    git $input 
    tput setaf 2;echo  $MOVE;tput sgr0 
    sleep 1
    done 
else tput setaf 1;echo "You have zero friends";tput sgr0 
fi

Tôi thiết lập một bí danh trong ~ / .bash_profile của mình nên alias gitme='sh /path/to/gitme.sh'


1

Bạn nên kiểm tra rgit trên CPAN thực thi đệ quy lệnh git trên tất cả các kho trong cây thư mục.

Từ các tài liệu:

Tiện ích này tìm kiếm đệ quy trong thư mục gốc (có thể là thư mục đang làm việc hiện tại hoặc - nếu nó đã được đặt - thư mục được cung cấp bởi biến môi trường GIT_DIR) cho tất cả các kho lưu trữ git, sắp xếp danh sách này theo đường dẫn kho lưu trữ, chdir vào từng kho chúng và thực hiện lệnh git được chỉ định.


1

Tôi vừa tạo ra một công cụ làm những gì bạn muốn!

  1. Làm cách nào để tìm nạp tất cả chúng? gmaster fetch
  2. Làm cách nào để kiểm tra xem có bất kỳ thay đổi nào trong số chúng có các thay đổi chưa được cam kết hay không? gmaster status
  3. Làm cách nào để kiểm tra xem có bất kỳ thay đổi nào để hợp nhất không? gmaster status

Nó được gọi là gitmaster: https://github.com/francoiscabrol/gitmaster


1

Tôi đã viết hàm bash đơn giản này vào .bash_profile của mình để có thể chạy git, maven, gradle hoặc bất kỳ lệnh bash nào khác chỉ trong tất cả các kho lưu trữ git:

# usefull function to work with multiple git repositories
all() {
    failed=0
    printf '>>> START RUNNING: "%s" >>>' "$*"
    for d in */; do
        pushd "$d" > /dev/null
        if [ -d ".git" ]
        then
            printf '\n--------------------------------------------\n\n'
            pwd
            eval $@
            if [ $? -ne 0 ]
            then
                failed=1
                break;
            fi
        fi
        popd > /dev/null
    done
    if [ $failed -eq 0 ]
    then
        printf '\n--------------------------------------------\n'
        printf '<<< RAN "%s" WITH SUCCESS!!! <<<' "$*"
    else
        printf '\n<<< FAILED!!! <<<'
    fi
}

Điều này có thể được sử dụng theo cách này

all git st
all git pull
all ./gradlew clean test
etc.

người ta cũng có thể chạy tất cả chúng song song sử dụng: tất cả các './gradlew kiểm tra sạch &'
ChaudPain

0

Tuyên bố từ chối trách nhiệm: Tôi đang làm việc trên công cụ này tại www.repoflow.com

Làm thế nào tôi có thể tìm nạp tất cả chúng?
Làm cách nào để kiểm tra xem có bất kỳ thay đổi nào để hợp nhất không?

  • Bạn có thể tìm nạp tất cả các kho lưu trữ có liên quan (hoặc đẩy / kéo / cam kết chúng), sau khi tìm nạp, giao diện người dùng sẽ được cập nhật với trạng thái kho lưu trữ mới, nếu kho lưu trữ bị phân kỳ, bạn có thể thấy loại xung đột và bắt đầu hợp nhất chúng.

nhập mô tả hình ảnh ở đây

Làm cách nào để kiểm tra xem có bất kỳ thay đổi nào trong số chúng có các thay đổi chưa được cam kết hay không?

  • Trên giao diện người dùng, bạn có thể thấy trạng thái của các tệp cho từng kho lưu trữ (Bạn có thể thêm / xóa chúng riêng lẻ hoặc hàng loạt).

nhập mô tả hình ảnh ở đây

Tôi đang giải quyết vấn đề này, nhưng điều này cũng giải quyết các câu hỏi OP và giúp quản lý nhiều kho lưu trữ nói chung, bạn có thể sử dụng giao diện người dùng hoặc API GraphQL bên dưới để tạo các tập lệnh của riêng bạn, vui lòng xem xét nó như một tùy chọn khác.


0

Có một công cụ tiện dụng để tìm nạp tất cả nhiều kho lưu trữ. git-pull-alllà một công cụ dòng lệnh để thực thi trên nhiều kho lưu trữ git một cách không đồng bộ.

Cài đặt

npm install -g git-pull-all

Sử dụng

Giả sử bạn có các tệp và thư mục này:

~/Projects/
  cool-examples/
    .git/
  funny-movies/
  my-todos.txt
  super-express/
    .git/

Khi bạn chạy git-pull-alllệnh trên ~/Projectsthư mục, nó sẽ tìm thấy các kho lưu trữ git con (trong trường hợp trên là cool-examplesuper-express ) rồi thực thi git pulltrên từng kho .

$ cd ~/Projects
$ git-pull-all
funny-movies/
Not a git repository
cool-examples/
Already up-to-date.
super-express/
Already up-to-date.
Done!
git-pull-all ~/Projects

Liên kết GitHub: https://github.com/tatsuyaoiw/git-pull-all


0

Tôi sử dụng mã Visual Studio. Chúng tôi có khoảng 20 thư viện trong cơ sở mã của chúng tôi, tất cả đều là các kho lưu trữ Git riêng biệt và tab điều khiển nguồn trong Visual Studio Code khá tốt để xem "trong nháy mắt" về mức độ phía sau hoặc phía trước của các kho lưu trữ cục bộ. Ngoài ra còn có các cài đặt để tìm nạp định kỳ để luôn cập nhật thông tin đó, cũng như nút làm mới.

Nó không thuận tiện như script, nhưng khi nói đến kiểm soát nguồn đối với tôi, tôi muốn là người thực hiện thay đổi. Cần phải có một tập lệnh được viết rất tốt để cẩn thận không ghi đè lên các thay đổi, v.v. Với phương pháp VS Code, bạn nhanh chóng có được một lượng thông tin tốt mà bạn có thể tự hành động.

Đây là ảnh chụp màn hình của nó trông như thế nào:

Cửa sổ điều khiển nguồn trong VS Code


0

Tôi đã tìm thấy một giải pháp tuyệt vời để kéo từ nhánh hiện tại từ tất cả các thư mục con có thư mục .git, ngay cả khi mỗi kho có một nhánh khác nhau được kiểm tra. Lệnh là một lớp lót, đủ linh hoạt để sửa đổi cho các lệnh git khác nhau và có thể được đặt bí danh.

Chỉ cần sao chép và dán những thứ sau:

find . -type d -maxdepth 2 -name .git -exec sh -c 'cd $0 && cd .. && git pull origin $(git rev-parse --abbrev-ref HEAD)' {} \;

Chia nhỏ nó:

find . -type d -maxdepth 2 -name .git 

Tìm tất cả các thư mục (-type d) trong thư mục hiện tại (find.) Có tên ".git" (-name .git), tìm tối đa hai thư mục sâu (2 thay vì 1 vì chúng tôi đang tìm thư mục git trong thư mục git repo).

-exec sh -c 

Chạy lệnh shell sau (execute sh -c)

'cd $0 && cd .. && git pull origin $(git rev-parse --abbrev-ref HEAD)'

Thay đổi thư mục thành đối số đầu tiên (cd $ 0), sau đó thay đổi thư mục một cấp để rời khỏi thư mục .git (cd ..) sau đó thực hiện git pull origin trong khi chỉ định nhánh bằng cách chạy git rev-parse ... cho nhánh hiện tại HEAD cam kết.

{} \;

"{}" Là đường dẫn liên quan đến kết quả mà chúng ta nhận được từ lệnh tìm ban đầu . Các ; được sử dụng để kết thúc lệnh.

Đã thử nghiệm trên MacOS 10.14.6 trên zsh. Hiện tại, chỉ hoạt động khi các chi nhánh từ xa và cục bộ được đặt tên giống nhau, AFAIK.

Bạn có thể sửa đổi điều này để có được trạng thái. Tôi hy vọng bạn có thể thêm các đối số để tiếp tục làm cho điều này linh hoạt hơn nhưng tôi chưa thử.


-1

https://github.com/wwjamieson3/envisionTools có một tập lệnh bash được gọi là gitstat thực hiện điều này và nhiều hơn nữa. Nó tương thích với GNU và mac. Nó có thể thực hiện tìm nạp từ điều khiển từ xa nếu được yêu cầu. Nó hiển thị các tệp chưa được theo dõi, sửa đổi, thêm, xóa và theo giai đoạn. Nó khác biệt với điều khiển từ xa bằng cách hiển thị cam kết không hợp nhất trên điều khiển từ xa và cam kết cục bộ chưa được đẩy. Nó cũng có thể hiển thị các kết quả được mã hóa màu ở chế độ tóm tắt hoặc chi tiết và thậm chí cả HTML. Nó sử dụng định vị thay vì tìm vì nó nhanh hơn vô cùng và thậm chí sẽ nhắc nhở cập nhật cơ sở dữ liệu định vị của bạn nếu nó quá cũ.


2
Cảm ơn đã đăng câu trả lời của bạn! Hãy nhớ đọc kỹ Câu hỏi thường gặp về Tự quảng cáo . Cũng lưu ý rằng bạn bắt buộc phải đăng tuyên bố từ chối trách nhiệm mỗi khi bạn liên kết đến trang web / sản phẩm của chính mình.
Andrew Barber

3
Rất tiếc, liên kết github wwjamieson3 / envisionTools bị hỏng.
Brenda J. Butler,

@williamJamieson là envisionTools là một kho lưu trữ GitHub riêng?
eebbesen

-5

Có vẻ như viết một kịch bản để làm điều đó khá dễ dàng. Về cơ bản, nó cần phải lặp lại các kho và sau đó sử dụng các lệnh như git ls-files, git diff và git log.


Tôi biết là đã muộn, nhưng bạn có thể xuất bản kịch bản không?
l0b0

Không có "kịch bản". Tôi đang sử dụng một kịch bản mà tôi đã viết cho nhu cầu của riêng mình, nhưng nó không chung chung.
iny

"git diff" thực sự phức tạp nếu bạn muốn lấy một tệp khác biệt duy nhất có thể được hoàn nguyên và áp dụng lại bằng một lệnh vá duy nhất.
proski

4
Theo nghĩa đen, bất kỳ câu trả lời nào trong số các câu trả lời phải là câu trả lời được chấp nhận nhưng điều này.
Kennet Celeste
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.