Tôi có một repo riêng trên máy chủ và thường xuyên rebase / force-đẩy tới nó, điều này khiến cho việc thiết lập lại nhánh cục bộ trên máy tính khác của tôi thường xuyên là cần thiết. Do đó, tôi đã tạo ra bí danh "bắt", cho phép thực hiện điều này cho nhánh hiện tại. Không giống như câu trả lời khác, không có tên nhánh được mã hóa cứng trong bí danh này.
Giữ chặt.
[alias]
catchup = "!f(){ echo -n \"reset \\033[0;33m$(git symbolic-ref -q --short HEAD)\\033[0m to \\033[0;33m$(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD))\\033[0m? (Y/n) \"; read -r ans; if [ \"$ans\" = \"y\" -o \"$ans\" = \"Y\" -o -z \"$ans\" ]; then git reset --hard $(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)); else echo \"catchup aborted\"; fi }; f"
Được định dạng đúng (sẽ không hoạt động với các dòng mới trong .gitconfig) giống như sau:
"
!f(){
echo -n \"reset \\033[0;33m$(git symbolic-ref -q --short HEAD)\\033[0m to \\033[0;33m$(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD))\\033[0m? (Y/n) \";
read -r ans;
if [ \"$ans\" = \"y\" -o \"$ans\" = \"Y\" -o -z \"$ans\" ]; then
git reset --hard $(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD));
else
echo \"catchup aborted\";
fi
}; f
"
- Các
\\033[0;33m
và \\033[0m
là để nhấn mạnh các chi nhánh hiện tại và thượng nguồn với màu sắc.
$(git symbolic-ref -q --short HEAD)
là tên chi nhánh hiện tại
$(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD))
là thượng nguồn của chi nhánh hiện tại.
Vì đặt lại là một cuộc gọi nguy hiểm tiềm tàng (đặc biệt là với tùy chọn --hard, bạn sẽ mất mọi thay đổi không được cam kết), trước tiên, nó sẽ cho bạn biết những gì nó sẽ làm. Ví dụ: nếu bạn đang ở trên nhánh dev-container có điều khiển từ xa được gọi là qcpp / dev-container và bạn nhập git catchup
, bạn sẽ được nhắc:
đặt lại dev-container thành qcpp / dev-container? (Y / n)
Nếu sau đó bạn gõ y hoặc chỉ cần nhấn return, nó sẽ thực hiện thiết lập lại. Nếu bạn nhập bất cứ điều gì khác, việc thiết lập lại sẽ không được thực hiện.
Nếu bạn muốn siêu an toàn và lập trình ngăn chặn mất các thay đổi không được thực hiện / không được cam kết, bạn có thể điều chỉnh các bí danh ở trên bằng cách kiểm tra chỉ số khác .
Từ cảnh báo bắt buộc: Nếu bạn đang làm việc trên một kho lưu trữ công cộng mà người khác đã làm việc dựa trên và bạn cần bí danh này, bạn đã làm sai ™ .