關於Git的幾個概念
- 版本庫(倉庫):儲存代碼文件等的地方
- 本地倉庫:本機倉庫
- 遠程倉庫:充當‘中央服務器’,用於不同節點之間進行代碼交換的地方
- 克隆:複製
- 分支branch:不同分支做不一樣的事情,用於協同開發
- 標籤:用於標註版本信息的‘指針’指向某一個commit位置
常用指令
1、新建空目錄(用來創建倉庫)
mkdir kkgit # 創建目錄
cd kkgit # 打開空目錄
2、初始化倉庫,將目錄轉爲倉庫
git init # 初始化
ls -ah # 查看倉庫...
ls -al
ls
# 創建空倉庫後進行賬戶配置
git config --global user.email '[email protected]'
git config --global user.name 'klausLyu'
3、刪除倉庫:刪除文件夾下隱藏的 .git
文件夾即可,刪除該文件家後,倉庫轉爲目錄,目錄中的文件仍舊會保留。若回覆目錄爲倉庫,執行 git init
、 git add .
和 git.commit -m '...'
等指令
ls .git # 1) 轉到目錄下的 .git 文件
rm -rf .git # 2) 刪除 .git 文件,前面不加 git, ' rm -rf .git '
4、倉庫中創建文件(終端創建 或者 直接倉庫中創建好文件)
# 通過命令創建文件
touch test.txt # 創建txt文件, touch指令
vi test.txt # 終端中直接打開test.txt文件,瀏覽模式
i # 瀏覽模式 --> 插入模式 i 或 o 或 a (注意三者的區別),輸入內容即可
ESC # 插入模式 --> 瀏覽模式
:wq # 瀏覽模式下輸入 :wq 保存並退出文本編輯 (shift+:/; --> :)
cat test.txt # 查看文件
4、添加文件到 git 倉庫和刪除文件(添加但並未入庫,只是存儲在暫存區,等待入庫)
git add test.txt # 添加文件, 沒有任何提示表示沒問題
# 添加多個文件: git add abc.txt def.txt ---文件名之間用空格
# 批量添加所有文件:git add .
# 修改文件名:abc.txt --> abcd.txt
# code: git add abcd.txt
git rm abc.txt
git commit -m 'rename for abc.txt to abcd.txt'
# 刪除文件: git rm test.txt
5、使用git將文件提交到倉庫
git commit -m 'add a file of test.txt'
6、查看當前倉庫的狀態(是否有改動未add/rm和提交,未處理的)
git status # 若有未處理的,重複4和5的步驟,將所有改動處理並提交
7、查看修改的文件內容和日誌log文件
git diff test.txt # 查看修改的文件內容
git log # 查看日誌文件,獲取提交記錄
8、版本回退
git reset --hard HEAD^ # 回退到上一個版本
git reset --hard 版本號 # 版本號可通過git tag...指令進行指定
9、使用SSH進行上傳提交更新時需要公鑰(ssh協議
)
- 生成獲取pubkey:
ssh-keygen -t rsa -b 4096 -C 'youremail'
; - 生成的pubkey默認位置:
lixux:/home/tarena/.ssh
目錄下;windows:c:/Users/'accountname'/.ssh
目錄下 - 添加pubkey: 打開id_rsa.pub
cat id_rsa.pub
複製內容 在github中setting中SSH and GPG keys中添加SSH keys
添加內容爲複製的內容
(報錯,sign_and_send_pubkey:… 解決方法 運行 ssh-add)
10、git同步操作–建立遠程倉庫與本地倉庫連接(先有本地倉庫,後有遠程倉庫)
# 先有本地倉庫,後有遠程倉庫
# 獲取遠程倉庫,與本地倉庫之間建立鏈接關係
# '遠程倉庫名'系統默認的是 origin, 也可以自定義, 建議使用默認的origin, 不會忘
git remote add '遠程倉庫名' '遠程倉庫地址(https協議 / ssh協議)'
# https協議
git remote add origin https://github.com/KlausLyu/gitdemo.git
# ssh協議
git remote add origin git@github.com:KlausLyu/testdimokk.git
# 查看遠程倉庫
git remote -v
# 自定義:
git remote add klausgit https://github.com/KlausLyu/klausgit.git
tarena@tedu:~/klausgit$ git remote -v
klausgit https://github.com/KlausLyu/klausgit.git (fetch)
klausgit https://github.com/KlausLyu/klausgit.git (push)
# 默認:
git remote add origin https://github.com/KlausLyu/gitdemo.git
tarena@tedu:~/klausgit$ cd ../gitdemo
tarena@tedu:~/gitdemo$ git remote -v
origin https://github.com/KlausLyu/gitdemo.git (fetch)
origin https://github.com/KlausLyu/gitdemo.git (push)
# 刪除遠程倉庫名(不是刪除遠程倉庫,遠程倉庫網頁可直接刪除,本地倉庫 rm -rf .git)
git remote remove klausLyu
11、遠程倉庫和本地倉庫的同步 ()
# 從遠程倉庫同步到本地倉庫 (上班前download master到本地倉庫)
git pull origin master # master可換成branch名,tag名,分別下載分支或標籤
# 從本地倉庫提交同步代碼到遠程倉庫(下班前 upload master到遠程倉庫,也可以只上傳分支,master換成分支即可)
git push origin master # master可換成branch名,tag名,分別上傳分支或標籤
12、克隆遠程倉庫到本地目錄下—- 先創建遠程倉庫,再有本地倉庫
# 自動生成對應的本地倉庫,本地倉庫與遠程倉庫相對應, https://github.com/TryGhost/Ghost.git爲目標遠程倉庫地址
git clone https://github.com/TryGhost/Ghost.git
13、分支
# 創建分支
git branch branch_name # 語法
git branch dev
# 查看分支
git branch
# 切換分支
git checkout branch_name # 語法
git checkout dev # 會提示:已切換到dev分支
# 創建新分支並切換到該分支
git checkout -b abc # == (git branch abc; git checkout abc)
# 合併分支,將其他分支合併到當前分支
git merge other_branch_name # 語法
# 刪除分支,刪除不需要的分支
git branch -d branch_to_deleted # 語法
git branch -d abc
兩個分支中文件名重複且修改內容不一致怎麼辦?
衝突提示:...衝突(內容)...
解決方案:
查看衝突:git diff 文件名稱
衝突內容“
<<<<<<<<<<HEAD
當前分支修改的內容
==========
其他分支修改的內容
>>>>>>>>>>其他分支名稱
手動修改要保存的內容
git add 文件名稱
git commit -m ''
got merger 其他分支名稱
14、標籤
# 創建標籤
git tag label_name # 默認標籤是打在最新提交的commit上的
# 查看標籤
git tag # 查看當前的所有的標籤
git show labe_name # 查看標籤labe_name的內容
# 對已操作過的commit進行添加標籤:
git tag -a 標籤名稱 -m '標籤註釋' commit的id
# commit的id方法
git log --pretty=oneline # 完整顯示commit的id
git log --prett=oneline --abbrev-commit # id的簡寫