1、Ubuntu 配置 ssh Keys
打開電腦終端,生成ssh的key
輸入命令:
ssh-keygen -o -t rsa -b 4096 -C "登錄郵箱"
注意: -C 後面的郵箱,是你自己註冊的時候的郵箱
成功之後的結果
2、gitlab中添加ssh key
終端輸入:cat ~/.ssh/id_rsa.pub,將你的key拷貝出來添加到gitlab中設置中,Add key。
3、本機使用git
3.1 git 全局配置 Git global setup
填寫自己的用戶名和郵箱
git config --global user.name "***"
git config --global user.email "****@qq.com"
3.2 創建新的項目 Create a new repository
git clone 網址.git
cd 項目文件家
touch README.md
git add README.md
git commit -m "操作意義"
git push -u origin master
3.3 上傳已有的項目 Push an existing folder
cd existing_folder
git init #初始化工作目錄
git status # 查看git工作區的狀態信息
git remote add origin 網址.git
git add . # 添加文件 到暫存區域
git commit -m "Initial commit" # 提交暫存區區域文件到git本地倉庫 # -m 之後的表示標註,說明信息 -a表示直接添加文件
git push -u origin master
4、常用的命令
tree .git/ #存儲所有歷史版本信息即配置文件,是通過git init生成的目錄
add #添加文件內容至索引
branch #列出、創建或刪除分支
checkout #檢出一個分支或路徑到工作區
clone #克隆一個版本庫到一個新目錄
commit #記錄變更到版本庫
init #創建一個空的 Git 版本庫或重新初始化一個已存在的版本庫
log #顯示提交日誌
merge #合併兩個或更多開發歷史
mv #移動或重命名一個文件、目錄或符號鏈接
pull #獲取併合並另外的版本庫或一個本地分支
push #更新遠程引用和相關的對象
rm #從工作區和索引中刪除文件
show #顯示各種類型的對象
status #顯示工作區狀態
tag #創建、列出、刪除或校驗一個GPG簽名的 tag 對象
4 暫存區數據操作
4.1 git刪除數據
01. 未添加到暫存區的數據->直接使用rm命令刪除即可
02.已添加到暫存區的數據
1 git rm --cached database 2 #將文件從git暫存區域的追蹤列表移除,並不刪除當前工作目錄內的數據文件->只刪除緩存 3 git rm -f database 4 #將文件數據從git暫存區和工作目錄一起刪除->永久刪除
4.2 git重命名數據
01.未添加到暫存區的數據->直接mv/rename改名即可
02.已添加到暫存區數據
1 git mv README NOTICE # README修改前/NOTICE修改後;最後進行提交git倉庫 2 注意:也可mv修改名稱→刪除git倉庫的文件快照git rm '*.txt'→將新的文件添加進去→提交git倉庫
5 歷史記錄數據
5.1 查看歷史記錄
git log #查看提交歷史記錄
git log -2 #查看最近幾條記錄
git log -p -1 #-p顯示每次提交的內容差異,例如僅查看最近一次差異
git log --stat -2 #--stat簡要顯示數據增改行數(能夠看到提交中修改過的內容,對文件添加或移動的行數,並在最後列出所有增減行的概要信息)
git log --pretty=oneline #--pretty根據不同的格式展示提交的歷史信息
git log --pretty=fuller -2 #以更詳細的模式輸出提交的歷史記錄
git log --pretty=fomat:"%h %cn" #查看當前所有提交記錄的簡短SHA-1哈希字串與提交着的姓名
使用format參數來指定具體的輸出格式
%s 提交說明
%cd 提交日期
%an 作者的名字
%cn 提交者的姓名
%ce 提交者的電子郵件
%H 提交對象的完整SHA-1哈希字串
%h 提交對象的簡短SHA-1哈希字串
%T 樹對象的完整SHA-1哈希字串
%t 樹對象的簡短SHA-1哈希字串
%P 父對象的完整SHA-1哈希字串
%p 父對象的簡短SHA-1哈希字串
%ad 作者的修訂時間
5.2 還原歷史記錄
Git服務程序中有一個版本指針HEAD,當用戶申請還原數據時,將HEAD指針指向到某個特定的提交版本。但Git爲避免歷史記錄衝突用SHA-1算出十六進制的哈希字串來區分提交版本。默認HEAD指針會指向到最近一次提交記錄,上一個提交版本即HEAD^,上上一個版本即HEAD^^ (HEAD~5簡化表示往上數第五個提交版本)
git reset --hard HEAD^ #還原歷史提交版本上一次
git reset --hard 3de15d4 # 還原到制定節點的歷史點 找到歷史還原點的SHA-1值後,就可以還原(值未寫全時系統會自動匹配)
5.3 還原未來數據
即還原到歷史數據後想再次撤銷更改,但是git log已經找不到這個版本了
git reflog #查看未來歷史更新點
5.4 標籤使用(於commit之後)
git tag v1.0 #當前提交內容打一個標籤(方便快速回滾),每次提交都可以打個tag
git tag #查看當前所有的標籤
git show v1.0 #查看當前1.0版本的詳細信息
git tag v1.2 -m "version 1.2 release is test" 5 #對當前版本(最新)打標記,用於commit提交之後接着進行打標記(-a指定標籤名,-m爲說明信息)
git tag -d v1.0 #我們爲同一個提交版本設置了兩次標籤,刪除之前的v1.0
6 分支管理
在實際的項目開發中儘量保證master分支穩定,僅用於發佈新版本,平時不要直接修改裏面的數據文件。而開發都在dev分支進行修改,即每個人從dev分支創建自己個人分支,開發完合併到dev分支,最後合併到master分支
6.1 創建分支
git branch linux #創建分支
git branch #查看分支情況,當前分支前有*號
git checkout linux #Switched to branch 'linux' 切換分支
git checkout --<file> #一鍵還原,直接將git倉庫的文件覆蓋當前文件[危險]
6.2 合併分支(自動合併)
需求:把linux的工作成果合併到master分支上
git checkout master #切換到master分支
git merge linux #合併Linux分支至master
git branch -d linux #確認合併完成後,建議刪除分支
注意:系統默認不編輯空分支
6.3 合併衝突模擬(手動合併)
注意:只有同目錄同文件同行纔會造成合並衝突的情況,只要有一點不同就能夠進行合併
01.準備:
cd git_data
echo 'master code' >>README
git commit -a -m 'this master branch commit'
git checkout linux
cat README
echo 'linux code' >>README
git commit -a -m 'this linux branch second commit'
git checkout master
02.現象:
# git merge linux
Auto-merging README ->自動合併 README
CONFLICT (content):Merge conflict in README ->衝突(內容):合併衝突於 READM
Automatic merge failed; fix conflicts and then commit the result.
->自動合併失敗;修正衝突然後提交修正的結果
03.解決:人工選擇想要的內容,同時修改master和linux分支同文件並提交,最後merge
# vim README
this is linux branch hello world
master code
linux code
# git commit -a -m '解決合併衝突'
[master 19cb918] 解決合併衝突
# git merge linux
Already up-to-date.
4 刪除分支
由於之前已合併了linux分支,故現在看到它在列表中,在這個列表中分支名字前沒*號的分支通常可用git branch -d刪除且不會失去任何東西
# git branch --no-merged #查看所有包含未合併工作的分支testing
# git branch -d testing ->刪除分支
error: The branch 'testing' is not fully merged. ->分支'testing'未進行合併
If you are sure you want to delete it, run 'git branch -D testing'. ->若確定想刪除它,即使用-D強制刪除