顯示具有 git usage 標籤的文章。 顯示所有文章
顯示具有 git usage 標籤的文章。 顯示所有文章

2021年9月14日 星期二

git 打 patch的方法

 假設我現在的Source code有git資訊,也就是可以用 "git status" 或是 "git diff" 等指令來查看目前狀態或是差異

 假設我目前修改了檔案,路徑與檔名為
  /home/danny/src/example/aaa.c
 當前所在目錄為 /home/danny/ 底下

打一個patch(讓別人Merge你的修改) 
於是我們可以很簡單的,使用下面的命令,先打一個patch檔案
 git diff src/example/aaa.c > aaa.c.patch
於是就會多出一個檔案,位於 /home/danny/aaa.c.patch

 aaa.c.patch大概內容會如下,可以看到差異:

--- a/src/example/aaa.c
+++ b/src/example/aaa.c
@@ -33,7 +33,11 @@
-      printf("Hello\n");
+     printf("Hello World\n");

如何把patch檔Merge入自己的code
假設我現在是在 /home/andy/ 目錄下,先把 aaa.c.patch 複製到此目錄底下
接著確定此檔案確實存在 src/example/aaa.c
使用以下指令把patch檔打入
  patch -p1 < aaa.c.patch

這樣就可以了!!

2021年6月11日 星期五

git checkout 到歷史某個版本的方法

 當想要把整個branch回到以前的某一個 git hash,可以用下面的方法

1. 在branch 目錄下,使用command :

# git log       

我們可以看到所有的log 紀錄,包含很長一串的 hash碼










2. 假如想要回到上圖的紅色框框版本,只需使用git checkout command如下:

# git checkout e243a6ea1da337db1b03432f07c6ba57cce221f2         


2020年12月11日 星期五

常用到的 git command

1.  =====透過git server 下載Source Code ======
# git clone git@github.com:zlargon/git-test.git

2. ====== 上傳新增的檔案(上傳之後還要commit與push) =======
# git add aaa.c bbb.c
   ====== 上傳整個資料夾裡面東西(假設要add 資料夾 123) =======
#
git add --all 123


3. ====== 上傳修改的檔案,也就是commit 檔案(commit之後還要push才會真的上Server) =======
# git commit aaa.c bbb.c -m "Modify two files!"      (-m 後面帶入commit的原因,git log可以看到)


4. ====== 將commit的檔案,真正上傳到git Serve =======
# git push


5. ====== 查看歷來更改的log訊息 =======
# git log


6. ====== 查看歷來更改的log訊息,以及更改的檔案內容 =======
# git log -p


7. ====== 查看某個commit的版本修改的內容(ex; commit abcdefghijk) ========
# git log -p abcdefghijk


8. ====== 查看此包Code目前的branch以及有哪些branch =======
# git branch -a

9. ====== 將被修改的檔案還原此次版本的內容 ======
# git checkout -- file

10. ====== 將被刪除的檔案回復 ========
# git checkout file


11. ====== 切換到某個branch,ex: danny,並且更新本地檔案與git Server同步 =======
# git checkout danny
# git pull

12. ====== 新增一個branch,名字為 danny =======
#
git checkout -b danny
# git push -u origin danny

13. ====== 打tag,V0.0.1版 =======
# 
git tag -a V0.0.1 -m "V0.0.1"
# git push origin 
V0.0.1

14. ====== 想要把git server上面,回復到前一版 =====
# git reset --hard HEAD~ (或是 git reset --hard HEAD~1)
# git push -f

15. ====== 刪除本地tag ======
# 
git tag -d 標籤名

16. ====== 刪除遠端git server上面的tag ====
# git push origin --delete tag 標籤名

17. ===== 已經git commit,但是還未push,想回復到前一版 ======
# git reset --soft HEAD^

18. ====== 回到特定 tag 版本 ====
# git checkout 00.03.03.03

19. ====== 刪除git上面的檔案/資料夾 =======
# git rm "file_name"  (刪檔案)
# git rm -r --cached "folder_name" (刪資料夾)