Procházet zdrojové kódy

新增reset的三种模式

Huan před 5 roky
rodič
revize
dd77a3ee34
2 změnil soubory, kde provedl 21 přidání a 7 odebrání
  1. 11 3
      GIT.py
  2. 10 4
      Git_Ctrl.py

+ 11 - 3
GIT.py

@@ -79,7 +79,7 @@ def Main():
     tkinter.Button(top, bg=bbg, fg=fg, text='查看状态', command=lambda :not_Args(Git.status), font=FONT, width=width_B,
                    height=height_B).grid(column=a_x+2, row=a_y, sticky=tkinter.E + tkinter.W)
 
-    global log_Type
+    global log_Type,reset_Type
     a_y += 1
     log_Type = []
     lable = ['显示轴','commit完全显示','简化显示']#复选框
@@ -97,6 +97,13 @@ def Main():
     tkinter.Button(top, bg=bbg, fg=fg, text='删除文件', command=rm_file, font=FONT, width=width_B,
                    height=height_B).grid(column=a_x+2, row=a_y, sticky=tkinter.E + tkinter.W)
 
+    a_y += 1
+    reset_Type = tkinter.IntVar()#正,负,0
+    lable = ['回退到工作区','回退到暂存区','无痕回退']#复选框
+    for i in range(3):
+        tkinter.Radiobutton(top,bg = bg,fg = fg,activebackground=bg,activeforeground=fg,selectcolor=bg,text=lable[i],
+                            variable=reset_Type, value=i).grid(column=a_x+i, row=a_y, sticky=tkinter.W)
+
     a_y += 1
     tkinter.Button(top, bg=bbg, fg=fg, text='查看分支', command=lambda :not_Args(Git.check_Branch), font=FONT, width=width_B,
                    height=height_B).grid(column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
@@ -447,10 +454,11 @@ def Back_File():
     update_Git_Dir()
 
 def Back_version():
-    global Git,head
+    global Git,head,reset_Type
     HEAD = head.get()
     if HEAD == '': HEAD = 'HEAD~1'
-    do_Sys(Git.back_version,(get_Name(),HEAD))
+    Type = reset_Type.get()
+    do_Sys(Git.back_version,(get_Name(),HEAD,Type))
     update_Git_Dir()
 
 def do_Sys(func,args,name='CoTan Git',break_time=0,show=True,text_n='',th=False,wait=False,stop=True):

+ 10 - 4
Git_Ctrl.py

@@ -85,8 +85,14 @@ class git_Repo:#git的基类
     def Diff_File(self,MASTER='HEAD'):#执行diff
         return subprocess.Popen(f'echo 文件日志: && {git_path} diff {MASTER} && echo {self.make_stopKey()}',cwd=self.Repo_Dic,**sys_seeting)
 
-    def reset(self,HEAD='HEAD~1'):
-        return subprocess.Popen(f'echo 回退... && {git_path} reset --hard {HEAD} && echo {self.make_stopKey()}',cwd=self.Repo_Dic,**sys_seeting)
+    def reset(self,HEAD='HEAD~1',Type=0):
+        if Type == 0:
+            type_ = '--mixed'#退回到工作区
+        elif Type == 1:
+            type_ = '--soft'#退回到暂存区
+        else:
+            type_ = '--hard'  # 退回到暂存区
+        return subprocess.Popen(f'echo 回退... && {git_path} reset {type_} {HEAD} && echo {self.make_stopKey()}',cwd=self.Repo_Dic,**sys_seeting)
 
     def checkout(self,file_list):
         if len(file_list) >= 1:#多于一个文件,不用--,空格
@@ -321,8 +327,8 @@ class git_Ctrol:
     def diff_File(self,name,MASTER):
         return self.get_git(name).Diff_File(MASTER)
 
-    def back_version(self,name,HEAD):
-        return self.get_git(name).reset(HEAD)
+    def back_version(self,name,HEAD,Type=0):
+        return self.get_git(name).reset(HEAD,Type)
 
     def checkout_version(self,name,file):
         return self.get_git(name).checkout(file)