我在GIT上有项目。我需要测试它的旧版本,而不会丢失实际版本。我更喜欢在我的计算机上安装2个文件夹:一个保留最新版本,一个保留旧版本。项目在一个分支。怎么做?我正在使用SourceTree,我的项目是在Visual Studio 2015中制作的C ++。
答案 0 :(得分:2)
使用git worktree功能。
这样可以让您在检出新版本的情况下克隆您的存储库。 并在另一个文件夹中创建一个工作树,并检出另一个旧分支。
做类似的事情:
#include <QtWidgets>
#include <windows.h>
//link against user32.lib when compiling in MSVC
#ifdef _MSC_VER
#pragma comment(lib, "User32.lib")
#endif
class GlobalPrintScreenBlocker {
public:
GlobalPrintScreenBlocker():mHKeyboardHook(NULL) {}
//to avoid leaking the hook procedure handle
~GlobalPrintScreenBlocker(){ unblock(); }
//hook callback function (called on every system-wide key press)
static LRESULT CALLBACK LowLevelKeyboardProc(int nCode,
WPARAM wParam, LPARAM lParam) {
if(nCode == HC_ACTION) {
PKBDLLHOOKSTRUCT p = reinterpret_cast<PKBDLLHOOKSTRUCT>(lParam);
if(p->vkCode == VK_SNAPSHOT) return 1; //block print-screen key
}
//this is not a message we are interested in
return CallNextHookEx(NULL, //ignored paramater
nCode,
wParam,
lParam);
}
void block(){
mHKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, //low-level keyboard hool
&LowLevelKeyboardProc, //callback
GetModuleHandle(NULL),
0);
}
void unblock(){
if(mHKeyboardHook) UnhookWindowsHookEx(mHKeyboardHook);
mHKeyboardHook = NULL;
}
private:
HHOOK mHKeyboardHook;
};
int main(int argc, char* argv[]) {
QApplication a(argc, argv);
GlobalPrintScreenBlocker blocker;
QPushButton button("Disable ScreenShot");
button.setCheckable(true);
QObject::connect(&button, &QPushButton::toggled, [&](bool isChecked){
if(isChecked)
blocker.block();
else
blocker.unblock();
});
button.show();
return a.exec();
}