<!-- {%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
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up