<!-- {%hackmd @bou/style %} --> # Git 常用語法及概念 ## what is git? 反正就是用來上傳code到github上的東西。 ## HOW TO USE IT ### 下載GIT #### [GIT官方網頁](https://git-scm.com/downloads)  下載的部分就是一直next,不用更改~~ ### 下載 vs code(非必要) 關於這部分,請自己上網搜尋你要的程式語言。 ### 創建Github帳號 就是按照預設的設置一直下一步就好,不需要特別更改內容。 ### 創建一個repositor(儲存庫)  點選「New」  打上名字以及描述(optional)就好  再來會進到以下頁面  接下來,我們使用 SHH 上傳,因為 HTTPS 好像自2020年時就不支援 git 按「Settings」  滑到下面,選擇「 Developer settings 」  再點選「Personal access tokens」  接下來,按下「Windows+R」再輸入 cmd <center>  </center> 輸入以下(包含引號,要改成自己的email) <pre><code class="hljs ruby">ssh-keygen -t rsa -b <span class="hljs-number">4096</span> -C <span class="hljs-string">"your_email@example.com"</span> </code></pre> 會出現以下幾行 <pre><code class="hljs delphi">Generating <span class="hljs-keyword">public</span>/<span class="hljs-keyword">private</span> rsa key pair. Enter a <span class="hljs-keyword">file</span> <span class="hljs-keyword">in</span> which <span class="hljs-keyword">to</span> save the key (/Users/you/.ssh/id_rsa): [Press enter] Enter passphrase (empty <span class="hljs-keyword">for</span> no passphrase): [<span class="hljs-keyword">Type</span> a passphrase] Enter same passphrase again: [<span class="hljs-keyword">Type</span> passphrase again] </code></pre> 一直按enter就好囉! 最後,打開檔案總管之後開啟C槽,再打開user,裡面會有一個 .ssh 資料夾裡面會有一個「id_rsa.pub」 的檔案 使用 vscode 或是 記事本打開,複製全部 ( 由 ssh-rsa開頭,自己的 email 結尾 ) 接著返回 Github 儲存庫的頁面,自訂一個名稱,再把剛剛那一大串複製進去就好囉~ (最後還要再輸入一次帳號密碼) :::info SSH 原理介紹 SSH 就是在電腦中設定好金鑰,然後藉由剛剛的動作把公鑰複製上去 上傳時與電腦中的私鑰進行比對,相同的話就開始動作。 ::: 回到 Github 的頁面,切換成「SSH」並複製。  ### 上傳檔案 接下來,打開準備要上傳的資料夾。 若目前沒有檔案在裡面,就隨便放個圖片或是txt就好。 有兩個方法: #### GIT bash  :::warning 是打開「Git Bash」!! ::: #### Vs Code 選擇打開資料夾,打開要上傳的那個資料夾即可。 ### Terminal 中 指定目錄 Git bash 顯示  Vs Code 顯示  :::spoiler 如果不是要上傳的資料夾目錄 [教學連結(click me!)](https://www.ibm.com/docs/zh-tw/ssw_aix_71/devicemanagement/HT_cmd_change_otherdir.html) 總之就是透過「cd」這個指令來做更改~~ ::: ### 接下來 進入之後,輸入 `git init` 資料夾中就會有出現一個隱藏資料夾「 .git 」 可以先輸入 `git status` 會看到有紅字,稍後會再解釋。 輸入 `git add ` 如果要全部的話,就加上 `.` 如果要特定檔案的話,就加上檔名 再輸入一次 `git status` 就會看到不一樣的內容喔~ 輸入 `git commit -m "更新資訊"` :::warning 雙引號要保留喔! ::: 接下來輸入 `git remote add origin git@github.com:boyu0710/cpp-problem_colve.git` :::warning 其中的「origin」 可以更改成自己想要的名字 後面那串改成剛剛在 Github 複製下來的那串文字 ( 格式與上面的那串相同 ) ::: 上面那行程式是代表 origin 就等於我的那個儲存庫 SSH url 更好的解釋就是【數據庫簡稱】 如果同時有很多儲存庫的話,就一樣 add 但是名字要換就好 ~~ :::info **remote 相關指令** ``` git remote -v ``` 可以看到目前的 remote 清單( 包含 url ) //可以試試看去掉最後的「-v」 ``` git remote set-url origin git://new.url.here ``` 顧名思義就是更改名字 ``` git remote remove origin ``` 就是刪除舊有 remote ::: 再來輸入以下 ``` git branch -M main ``` 其中的"main"這是可以自己換的~ :::info 關於 " main " 若是「完全按照我上面的指示」的話,目前這個儲存庫是不會有任何 branch 的 至於 branch 是什麼,可以想像成在整個儲存庫下資料夾 通常會命名成 "main" 或是 "master" 或是自己取,都可以 ::: 最後 ``` git push -u origin(要改成自己取的名字喔!) main(自己建立的 branch) ``` 再回到Github頁面刷新就好了~~  兩個 branch 這是我第一次接觸這個,花了一個下午@@ 最後搞懂後其實很簡單,希望不要再有人跟我一樣XD 所以我才會寫這篇 最後,我寫了一個自動的程式,放在我的 github ```cpp= #include<iostream> #include<windows.h> #include<ctime> #include<algorithm> #include<string> #include<cstdlib> using namespace std; // struct tm { // int tm_sec; // s 0~60 exp:61 // int tm_min; // min 0~60 exp:61 // int tm_hour; // h 0~23 // int tm_mday; // 幾月幾號 1~31 // int tm_mon; // month 0~11 // int tm_year; // 西元年 since 1900 // int tm_wday; // monday~sunday 0~6 // int tm_yday; // 1~365 // int tm_isdst; // 夏令時間 // }; string reverse(string s){ string ans=""; for(int d=s.size()-1;d>=0;d--){ ans+=s[d]; } return ans; } string int2str(int a){ string ans=""; while(a){ ans+=a%10+'0'; a/=10; } ans=reverse(ans); return ans; } int main(){ time_t now=time(0); tm *ltm = localtime(&now); system("git status"); system("git add ."); string cmd="git commit -m \""; cmd+=int2str(1900+ltm->tm_year); if(1+ltm->tm_mon<10){ cmd+="0"+int2str(1+ltm->tm_mon);; } else{ cmd+=int2str(1+ltm->tm_mon); } if(ltm->tm_mday<10){ cmd+="0"+int2str(ltm->tm_mday); } else{ cmd+=int2str(ltm->tm_mday); } cmd+='"'; cout<<cmd<<"\n"; const char* c_s = cmd.c_str(); system(c_s); system("git push origin master"); cout<<"\n\nupload success!!"; } ```
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.