Git
1.安裝
- 下載下傳安裝包,安裝,預設安裝了
和Git GUI Here
。Git Bash Here
- 需要在哪裡使用 git,隻需在檔案夾空白處右鍵,選擇
即可打開 git 指令行。( git 内也可以使用 cd 指令選擇檔案夾)Git Bash Here
2.配置
- 添加全局資訊
$ git config --global user.email "[email protected]"
$ git config --global user.name "user_name"
// 必須設定郵箱和名字,否則無法 commit
3.Git指令
- 初始化指令
$ git init // 在現有項目中初始化 git
- 檢視狀态
$ git status // 檢視目前檔案狀态
$ git status -s(或short) // 狀态簡覽
狀态:
- nothing to commit, working director clean => 工作區無檔案,包括已跟蹤和未跟蹤
- Untracked files =>未跟蹤的檔案,可以使用 add 跟蹤檔案
- changes to be commited => 已暫存的修改,此時可以送出,且該版本的檔案将會儲存在log曆史記錄中
- changes not staged for commit => 已跟蹤的檔案修改後未處于暫存區,須再次使用 add 指令使其進入暫存區
- 跟蹤檔案
$ git add . // 跟蹤所有檔案,跟蹤的檔案将會進入暫存區;
$ git add hello.txt // 跟蹤單個檔案
$ git add *.js // 跟蹤所有 .js 字尾的檔案
- 送出指令
$ git commit // 送出修改,并在log中有記錄
// 執行此指令會打開一個編輯器,編輯器中按下 Esc 後輸入兩個大寫的 Z 退出編輯
$ git commit -m "commit_word" // 快捷送出,引号内是送出說明
$ git commit -a -m "commit_word" // 将跟蹤的檔案暫存,并快捷送出
- 推送指令
$ git push remote-name branch-name // 推送至遠端倉庫的指定分支
$ git push // 預設推送至 origin 倉庫的 master 分支
// 若推送前項目的版本與clone的時候有差别(在你clone之後,push之前有其他人已經push),要先pull拉取更改,合并操作後再push(若有沖突還要解決沖突等操作)
- 拉取指令
$ git push remote-name branch-name // 從遠端倉庫的指定分支拉取
$ git push // 預設拉取 origin 倉庫的 master 分支的内容
- 檢視送出曆史
$ git log // 檢視所有送出曆史
$ git log -p -2 // 顯示每次送出的差異,并且隻顯示最後兩次的送出
$ git log stat // 顯示每次送出的簡略資訊
// 提示:大寫的 Q 推出 log 指令
// 提示:可以為送出模式設定别名 alias
- 倉庫管理
$ git remote // 列出所有指定的遠端倉庫簡寫
$ git remote -v // 顯示遠端倉庫的簡寫及其 URL
$ git remote add <short-name> <url> // 添加遠端倉庫,并指定别名
$ git fetch <short-name> // 拉取遠端倉庫中你沒有的資訊;該指令會拉取至本地倉庫,需手動合并
$ git remote show <remote-name> // 列出遠端倉庫的 URL 與跟蹤分支的資訊
$ git remote rename <old-name> <new-name> // 更改遠端倉庫名字
$ git remote rm <remote-name> // 删除指定的遠端倉庫
- 分支管理
$ git branch // 檢視分支
$ git checkout <branch-name> // 切換至指定分支
$ git checkout -b <branch-name> // 建立并切換至分支
$ git branch <branch-name> // 建立分支,但要手動切換
$ git branch -d <branch-name> // 删除分支
GitHub
1.生成并配置SSH密鑰:
// 1.生成密鑰
$ ssh-keygen
// 2.生成密鑰成功後,在C槽找到id_rsa.pub檔案,打開拷貝裡面的内容
// 3.打開GitHub的 Profile --> SSH and GPG keys --> New SSH key --> 粘貼密鑰(title可以忽略) --> Add SSH key
2.建立第一個 GitHub 倉庫
申請密鑰之後,就可以關聯
GitHub
上的個人倉庫了,而且現在
GitHub
已經免費提供私人倉庫了。
1)打開 GitHub 首頁,點選 New,建立倉庫
這裡我沒有勾選建立 README 檔案,第一次關聯倉庫會簡單點。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuITN4cTO5kjN10yMzcTM0QjM3EzNxEDM5EDMy0CM0cTO2MTMvwVMwkTMwIzLcBDN3kjNzEzLcd2bsJ2Lc12bj5ycn9Gbi52YugTMwIzZtl2Lc9CX6MHc0RHaiojIsJye.png)
2)建立完成
由于沒有建立 README 檔案,目前的倉庫是完全空的。下面也提示了可以進行的操作:
- 建立一個本地倉庫,然後關聯推送到遠端倉庫
- 将已有本地倉庫,關聯推送到遠端倉庫
-
其他
而本地倉庫就是用
在本地建立的倉庫,遠端倉庫就是剛剛在 GitHub 建立的git init
hello-world
倉庫。
不管怎樣,本地倉庫都是要 關聯遠端倉庫 之後,才能 推送 到遠端倉庫的,就是箭頭所指的兩步。
3)本地倉庫的建立
- 建立一個檔案夾,打開檔案夾,在空白處右鍵,選擇
打開 Git 指令行,初始化 Git 倉庫:Git Bash Here
- 接着在檔案夾内建立檔案
,随便寫點内容,不寫也可以,然後添加檔案到暫存區:hello.txt
- 送出修改,輸入送出說明:
- 添加遠端倉庫
- 推送至遠端倉庫
- 至此,GitHub 倉庫已經存儲了本地倉庫推送的内容,打開 GitHub 倉庫,發現一個送出記錄
- 點選進去檢視,可以看到送出的資訊,和本地
顯示的是一樣的git log
3. 建立第一個 GitHub 倉庫——已有 READEME
1)當建立倉庫時,點選了建立 READEME 檔案:
2)此時倉庫就不是空倉庫了,而且包含了一次送出:
3)點選打開,看到一次初始化送出
4)接着複制倉庫的位址:
5)本地倉庫的建立,步驟一樣,但是發現直接推送時出現了問題:
問題在于:本地倉庫不是在遠端倉庫的基礎上開發/送出的
- 遠端倉庫有 README 檔案,本地倉庫沒有
- 本地倉庫有 hello.txt 檔案,遠端倉庫沒有
此時需要先将遠端倉庫的内容拉取到本地,執行
git pull
,提示:沒有目前分支的跟蹤資訊。
先執行紅框中的指令,其中
<branch>
為需要拉取的遠端倉庫的分支,
master
為拉取至本地倉庫的
master
分支:
接着提示本地倉庫的
master
分支已經跟蹤至遠端倉庫的
master
分支,再嘗試拉取:
又出現提示:拒絕合并不相關的曆史。這是在初始化遠端倉庫添加 READEME檔案 時有了一次
commit
,而本地倉庫也有一次送出記錄
create hello.txt
,執行指令,允許合并不相關曆史,然後會執行一次
merge
操作:
上面是
merge
後的結果,其中執行指令時會彈出預設的編輯器,如果是 Vim:輸入送出資訊後,按下
ESC
後再鍵入兩個大寫的
Z
,會推出編輯器并且送出
最後就可以
push
到遠端倉庫了:
6)再 GitHub 上檢視,檔案已經推送成功了,并且送出記錄變成了三條
7)點選檢視送出記錄,記錄是由下至上的(最上面的是最新的)
- 最下面的是初始化倉庫的送出
- 再上一條是本地倉庫的送出記錄
- 最上面的是
操作merge
也就是說,本地倉庫的送出曆史寫入了遠端倉庫送出曆史中了,在本地
git log
也能檢視從遠端倉庫合并的送出曆史。
總結: 總的來看,這種方式是比較麻煩的,一般來說,處理個人的遠端倉庫,直接
git clone
下來,修改完再推送上去就行了。
4. clone 個人倉庫
1)拷貝倉庫位址,執行指令
這裡将倉庫名重命名為
clone-hello
2)進入檔案目錄,建立一個
local-hello.txt
檔案,依次執行指令:
本地倉庫的修改就會送出到遠端倉庫了,另外
- 當在
遠端倉庫後在clone
之前的這段時間中,遠端倉庫發生了改變,要先push
拉取遠端倉庫的改變,有沖突的話還要git pull
,接着才能merge
push
-
的前提是本地有推送至目标倉庫的權限,否則提示push
Please make sure you have the correct access rights
3)在 GitHub 中檢視倉庫,發現檔案已經推送上來了
4)在送出記錄中,也看到了本地的送出
總結
熟悉一些基礎的 Git 指令和 GitHub 的使用,以及記錄在使用 GitHub 的過程中遇到的問題。
轉載于:https://www.cnblogs.com/alicell/p/10283396.html