課程目標
- 知道 GitHub 和 Git分別是什么,有什么作用
- 熟悉Git 的基本使用,能使用 Git 向 GitHub 提交代碼
命令行與Git
1. 什么是命令行
- GUI(Graphical user interface)圖形界面,例如QQ登錄界面
- Cli(Command-line)命令行,例如windows開機代碼界面
- Windows回車用兩個字符表示(文本上移10+換行13)-next line + return
- Windows V.S. Linux
相同點:都是用Command-line來與系統進行交互
不同點:命令基本都不一樣
Windows:cmd(默認)、PowerShell
Linux:Terminal、iTerm(Mac)
2.常用命令
- pwd 當前所處目錄(當前路徑的全稱)。
- ls 當前目錄下的所有文件都被打開(列出)。
-
ls -a 相較于ls會多出以
.
開頭的文件,./ ../
。.
開頭的文件可做隱藏文件。
./即當前目錄;../即上一層目錄。/可以省略
ls ./ 把當前目錄的列表打開
ls ../ 把上一層目錄的列表打開 -
ls -l 當前目錄下所有文件的具體信息
drwxr-xr-x 1 hahadekuai 197121 3528024 十二 15 03:56 12306Bypass_1.10.74/
d 目錄
rwx 管理員對它的權限
xr-x 用戶組對它的權限
xr-x 當前用戶對它的權限
hahadekuai 誰擁有它
35028024 它的大小,352多k
十二 15 03:56 時間
12306Bypass_1.10.74 文件名 -
cd 切換目錄
~ 表示當前用戶的根目錄
cd .. 切換到上一層目錄
cd+文件名前綴+tab自動補全文件名+回車。跳轉到自動補全的目錄 -
mkdir 創建目錄。
madir+ 文件夾名 創建文件夾
touch+ 文件名 創建文件 -
mkdir -p 同時創建多個文檔
mkdir -p a/b/c 同時創建a、b、c三個文檔 -
rm
rm+ 文件名 刪除文件
rm -rf+ 文件夾名 刪除文件夾 -
mv 重命名
mv frank frank2
1.mkdir frank
mv frank frank2 移動frank文件到frank2
2.mkdir frank;mv frank frank2 創建frank文件,將frank重命名為frank2
mkdir frank && mv frank frank2
; 與 && 間區別:
; 是一個命令一個命令去執行,即使前面的命令錯誤,后面的命令一樣會生成
&& 是前面的命令必須要成功,后面的命令才能運行 -
cp 復制
cp a b 把a復制成b -
echo
echo 1 > test.txt 把1的內容打到test.txt文件中 -
cat
cat test.txt 把test.txt文件中內容顯示出來
瀏覽方法可用cat test.txt | less 用J K操作上下;按Q退出
| 管道,前面的命令傳給后面的命令 -
head 顯示命令的前幾行
head -n 3 test.txt 顯示test.txt.文本中前三行 - tail 顯示命令的尾幾行,用法同head
- du -sh 顯示目錄大小(多少k)
-
man xxx man閱讀xxx手冊
man ls 閱讀ls的手冊(與 -h; --help相同) - xxx -h 不是總被接受
-
xxx help
ls --help | less 閱讀ls的幫助文檔 -
path 告訴命令行去哪找命令(特殊使用方法,在計算機高級設置path環境變量中,在/user/bin后面+;文件名)
which ls 告知ls在哪里 - 命令行的使用規則:
命令行 子命令 -p --param --param2=xxx
參數里有空格加引號
大小寫敏感(Windows不區分) -
vi與vim
輸入:i(進入可編輯模式)
退出:ESC:qw 或 ESC ZZ
新手最常見的問題:怎么退出vim?輸入:,write保存;再輸入:quit。縮寫:wq。
小技巧:
- alt+. 重復輸入過的參數
- !! 重復上一層命令
- . 當前目錄
- .. 上一層目錄
- “ ” 告知是一個整體,參數中有空格是加引號
- ~ 當前所處目錄
-
- 回到上一層目錄,同..
cd - 同 cd .. 返回上一層目錄
- 復制與粘貼 可用鼠標中鍵
Git命令
1.本地倉庫(本地操作)
- git中紅色表示不能被提交,綠色表示可以被提交。
-
git add .
添加所有.
開頭的文件
git add *
添加所有除了.
開頭的文件
add
文件是add
本次狀態與上次狀態之間的差別(變動);兩次add
顯示的是第二次add的狀態
add
的是文件的改動,add
也會有開啟文件跟蹤的效果 -
commit
提交;把add過的變動提交到本地倉庫中 -
git commit -m "本次提交內容的敘述"
一次提交多個add過的文件,- m "xxx"
可跳過vi編輯界面。 -
git commit -v
-v
會列出所有變更
git commit -v --amend
-
commit
后文件會被存儲到head
的.git
本地倉庫 -
git checkout -- readme.txt
丟棄工作區修改(撤銷命令) -
git checkout -b dev
切換dev
分支 -
git diff readme.txt
查看的是readme.txt上一次add后,對其修改的內容;如修改后add到暫存區,則不會顯示修改內容。 -
git log --pretty=oneline
查看提交記錄(簡短的) -
git reflog 十六進制編碼
查看命令記錄,尋找commit id
,用于恢復記錄。 -
git reset --hard 十六進編碼
回退版本 git reset HEAD readme.txt 把暫存區(add過的文本)的修改撤銷,重放回工作區 之后用git checkout -- readme.txt,丟棄工作區修改
git checkout -- readme.txt 一種是readme.txt自修改后還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態; 一種是readme.txt已經添加到暫存區后,又作了修改,現在,撤銷修改就回到添加到暫存區后的狀態。 總之,就是讓這個文件回到最近一次git commit或git add時的狀態。 --存在是為撤銷修改,不填寫--則為切換分支
- 刪除文件的兩種情形:
一、一般情況下,直接在文件管理器中把沒用的文件刪了,或者用rm命令刪了。從版本庫中刪除文件分三步: 1.rm test.txt 2.git rm test.txt 3.git commit -m "remove test.txt"
二、刪錯了,想要恢復版本庫的文件: git checkout -- test.txt
2.遠程倉庫(推送改動)
Git遠程單人操作:
方法一:
1.empty repo(github上) 2.git clone 3.touch README.me 4.git add 5.git commit 6.git push
-
git clone +(https or ssh)
將遠程倉庫克隆到本地 git status 查看當前目錄文件狀態 git status -s (同git status --short) 簡短查看 git status -b 顯示在哪個分支上 git status -sb 以上兩步的簡寫(綠色是本地分支,紅色是遠程分支)
-
origin 默認遠程倉庫倉庫名
master 默認默認分支名
本地的分支名和對應遠程的分支名可以不同
git remote add origin+git@github.com:fantasy-hub/test2.git
添加遠程倉庫 -
git push origin master:master
本地的master(前)分支push到遠程的master(后)分支 origin倉庫中
方法二:
1.mkdir test2 2.git init 3.touch README.md (vi README.md ) (cat README.md) 4.git add . 5.git commit . 6.git push --set-upsteam origin master (git push -u origin master 本地的master(前)分支push到遠程的master(后)分支 origin倉庫中 加上了-u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分 支和遠程的master分支關聯起來,在以后的推送或者拉取時就可以簡化命令。)
Git遠程多人操作
1.git push 2.UU README.md 這個文件沖突了 3.解決沖突:==== <<<< >>>> 4.git add . 5.git commit . 6.git push
git reset --hard HEAD
-
git pull
把GitHub的代碼下載到Git上 -
git status -sb
運行提示UU
為沖突
解決沖突的方法:
1.vi README.me
去搜索====
2.往上找<<<<
本地沖突的部分,往下找>>>>
遠程沖突的部分
之間的內容為本地和遠程的沖突 -
git pull
與git fetch
區別:git fetch只同步倉庫內容,對index中內容不做處理
優點:可以不關心沖突 -
git merge origin/master
把遠程的master分支合并到當前
總結:
1.git clone 2.git pull 3.解決沖突 4.git push
解決沖突后又回到單人操作
1.git init 2.git add . 3.git commit . 4.git push( -u origin master)
新建遠程分支
1.git branch feature1 新建feature1分支 git branch 查看分支,出現: feature1 *master *表示當前所在分支 2.git checkout feature1 切換到feature1分支 git branch 查看分支 3.git push origin feature1:feature1 把本地的feature1(前)push到遠程的(feature1) 或 git push -u origin feature1 合并分支 4.git checkout master 切換到主分支 5.git merge feature1 合并分支 刪除分支-本地分支 6.git branch -d feature1 刪除分支 強制刪除用D 7.git brach -a 可以查看所有的包括遠程的分支(綠色是本地分支,橙色是遠程分支) 刪除分支-遠程分支 8.git push origin :feature1 本地不寫分支名,把空分支推送到feature1
重置
-
git reset
只要commit過,就不會丟失。即使reset --hard過 -
git reflog
恢復
3.GitHub
- GitHub是負責托管Git的遠程倉庫
GitHub生成SSH key的方法
- 創建倉庫,如果要使用
Use SSH
,需要上傳ssh public key
。
方法:
1.點擊右上角頭像,選中Settings
2.左邊出現一列選項,選中SSH and SSH keys
3.右上角點擊New SSH key (可利用谷歌搜索:coding.net 生成 ssh key。選中搜索結果第一個—SSH公鑰配置 - Coding)
4.在生成工鑰欄中,復制代碼ssh-keygen -t rsa -b 4096 -C "your_email@example.com",添加到git中,連敲三個回車
5.在代碼Your public key has been saved in /c/Users/Administrator/.ssh/id_rsa.pub.行中,選中后半部分復制。在git中輸入:cat /c/Users/Administrator/.ssh/id_rsa.pub 回車
6.出現ssh-rsa引導的很長的代碼——復制到github的key文本框中
全流程:
use-ssh-key流程.png