Có hai cách tiếp cận này. Nếu có thể tôi sẽ bắt đầu với một thư mục sạch cho thư mục git làm việc mới của bạn và sau đó sao chép phiên bản của bạn sau này. Cái này có thể trông giống như *:
mv $dir $dir.orig
git clone $url $dir
rsync -av --delete --exclude '.git' $dir.orig/ $dir/
rm -rf $dir.orig
Tại thời điểm này, bạn nên có một bản sao làm việc khá sạch sẽ với thư mục làm việc trước đó của bạn như thư mục làm việc hiện tại để mọi thay đổi bao gồm xóa tệp sẽ hiển thị trên radar nếu bạn chạy git status
.
Mặt khác, nếu bạn thực sự phải làm theo cách khác, bạn có thể nhận được kết quả tương tự với một cái gì đó như thế này:
cd $dir
git clone --no-checkout $url tempdir
mv tempdir/.git .
rmdir tempdir
git reset --mixed HEAD
Dù bằng cách nào, điều đầu tiên tôi sẽ làm là chạy một cái gì đó như git stash
lấy một bản sao của tất cả các thay đổi cục bộ của bạn sang một bên, sau đó bạn có thể áp dụng lại chúng và làm việc thông qua những gì bạn muốn cam kết.
* Cả hai ví dụ đều cho rằng bạn bắt đầu trên shell trong thư mục mẹ của dự án.