gitLab
GitLab 是一個用於倉庫管理系統的開源項目,使用Git作為代碼管理工具,並在此基礎上搭建起來的web服務。下面是使用步驟
1. 注冊
進入注冊頁面(需要公司的人提供地址)例如: http://xx.xxx.xx.xx:18000/users/sign_in 注冊完成,將賬號給管理員,開通權限。
2. 安裝git客戶端(生成ssh key, 提交代碼什么的都需要它)
下載地址: https://www.git-scm.com/download/ 下載完成, 默認安裝即可
3. 生成 ssh key
3.1 隨便打開一個文件夾,右鍵 點擊 Git Bach Here (沒有安裝git客戶端是找不到的)
3.2 設置全局變量:例如注冊名是 abc; 郵箱是 youxiang@xx.com
git config --global user.name "abc" (加上雙引號,不加沒有試過)
git config --global user.email "youxiang@xx.com"
3.3 生成ssh key 命令:
ssh-keygen -t rsa -C "youxiang@xx.com" (上面的郵箱地址)
成功的截圖:(找到C:\Users\登錄用戶名\.ssh 目錄,里面有兩個文件:id_rsa和id_rsa.pub)
4. 配置ssh, 登錄gitLab 見下面截
執行上面步驟之后,應該就可以拉取代碼了;
git相關
https://www.liaoxuefeng.com/wiki/896043488029600/900394246995648
一些概念:
工作區間: 即我們創建的工程文件, 在編輯器可直觀顯示;
緩存區: 只能通過git GUI或git shell 窗口顯示,提交代碼、解決沖突的中轉站;
本地倉庫: 只能在git shell 窗口顯示,連接本地代碼跟遠程代碼的樞紐,不能聯網時本地代碼可先提交至該處;
遠程倉庫: 即保存我們代碼的服務器,本文以公共版本控制系統:github為例,登錄github賬號后可直觀顯示;
1. 代碼克隆-遠程庫已經建立了,需要拉取代碼到本地的步驟:
找到地址
1.2 新建一個空的文件夾, 使用
1.3 git終端 輸入:git clone ssh地址 ;此時提示 yes/no 那么輸入 yes (不然很有可能拉取不了代碼);
拉取成功,會出現項目的文件夾, cd 到 項目目錄,出現master說明當前是在 master 分支上
2. 本地庫關聯遠程庫的步驟:
1. github上新建一個空的遠程倉庫:
新建完成后會有一個ssh地址: 例如:https://github.com/ImCccc/test001.git
2. 添加ssh key(生成的方法上面已經說明,其實和gitlab添加是一個道理)
輸入命令:在本地的項目打開git終端,輸入下下面的命令:
git init
git add -A
git commot -m '提交注釋'
git remote add origin https://github.com/ImCccc/test001.git
git push -u origin master
`git init ` 表示在當前的項目目錄中生成本地的git管理;
`git add -A` :使用-A:將新增、刪除、修改的文件改動全保存至緩存區;
`git commit -m "first commit"` :將代碼從緩存區保存至本地倉庫,實際開發中一般使用`git commit -am "說明的文字"`,使用 -a:如果沒文件更改操作(增、刪、改名)就可以省略git add指令;
`git remote add origin ssh地址` :將本地倉庫與指定的遠程倉庫創建 聯系;
`push -u origin master` 將本地倉庫代碼推送至遠程倉庫,實際開發中該指令后需要輸入github 賬號以及密碼。(首次提交注意別遺漏`-u`指定默認主機)
以上指令正常執行后, 本地倉庫的代碼就提交到遠程倉庫了:
分支操作
新建切換分支
新建: git branch dev
切換: git checkout dev
新建切換一起: git checkout -b dev
提交到遠程倉庫: git push origin -u dev
打開瀏覽器就看到新建的分支了:
查看分支:
git branch
刪除遠程dev分支:
git branch -r -d origin/dev
git push origin :dev
master分支合並到當前分支:
git merge master
git push origin (合並之后提交至遠程倉庫)
拉取代碼:
git pull
等於下面2個命令:
git fetch
git merge 分支
新增代碼:
看看是否有文件需要`git add`: git status
按順序執行以下命令:
git add . (添加當前目錄的所有代碼)
git commit -m '提交留言' (提交在本地的,遠程還沒有看到)
git push origin -u dev (提交到遠程的 dev 分支, 成功之后,瀏覽器應該會看到提交的代碼)
合並分支merge,或者拉取代碼push, 出現沖突解決方案:
出現以上提示, 說明本次更新代碼失敗;主要在於本地工作區間跟遠程倉庫的新代碼沖突了, 圖解如下:
有兩種方式處理沖突: 放棄本地修改或 解決沖突后提交本地修改
1. 放棄本地修改
放棄本地修改意味着將 遠程倉庫 的代碼完全覆蓋 本地倉庫 以及本地工作區間
git checkout head .
更新遠程倉庫的代碼就不會出現沖突了:
git pull 或者 git merge dev
2. 解決沖突后提交本地修改
將本地修改放入緩存區(成功后本地工作區間的代碼跟本地倉庫代碼會同步), 具體指令:
git stash
從遠程倉庫獲取最新代碼,具體指令:
git pull 或者 git merge dev
取出本地修改的代碼,沖突的代碼就很清晰的展現在我們面前了, 具體指令:
git stash pop
然后手工解決沖突,提交代碼:
git add README.md
git commit -am '解決沖突'
git push origin master
版本回退:
回退到上一個版本(上一個版本就是HEAD^,上上一個版本就是HEAD^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成HEAD~100):
git reset --hard HEAD^
回調未來版本:
Git提供了一個命令git reflog
用來記錄你的每一次命令:
回到未來:git reset --hard 97e962c
現在總結一下:
-
HEAD
指向的版本就是當前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit_id
。- 穿梭前,用
git log
可以查看提交歷史,以便確定要回退到哪個版本。 - 要重返未來,用
git reflog
查看命令歷史,以便確定要回到未來的哪個版本。
撤銷修改:
git checkout -- readme.txt
git checkout -- readme.txt
意思就是把readme.txt
文件在工作區的修改全部撤銷,這里有兩種情況:
一種是readme.txt
自修改后還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;
一種是readme.txt
已經添加到暫存區后,又作了修改,現在,撤銷修改就回到添加到暫存區后的狀態。
總之,就是讓這個文件回到最近一次git commit
或git add
時的狀態。
git checkout -- file
命令中的--
很重要,沒有--
,就變成了“切換到另一個分支”的命令
緩存當前的代碼在其他分支干別的事:
如果要修復一個bug,不過當前正在dev上進行的工作只進行到一半,還沒法提交,Git還提供了一個stash
功能,可以把當前工作現場“儲藏”起來,等以后恢復現場后繼續工作:
git stash
首先確定要在哪個分支上修復bug,假定需要在master
分支上修復,就從master
創建臨時分支:
git checkout master
git checkout -b issue-101
修復完成后,切換到master分支,並完成合並,最后刪除issue-101分支:
git checkout master
git merge issue-101
現在,是時候接着回到dev分支干活了!
git checkout dev
恢復現場:
git stash pop
命令方式提交代碼太麻煩下面是 vscode 集成 gitLab
下載安裝: https://code.visualstudio.com/
vscode 集成 git 無需安裝 擴展插件,下面是使用vscode 提交代碼的說明(前提是完成gitLab相關的配置,未完成請參考gitLab教程)
提交代碼的流程是: 拉取 -> 暫存 -> 提交 -> 推送
1) 查看修改文件
2) 拉取
拉取的意思是同步服務器上的最新代碼,為了防止代碼沖突,推送之前需要先拉取代碼,操作如下:
3) 暫存更改
單文件暫存:
暫存所有更改:
4) 放棄更改
意思是將修改的文件還原為服務器上的版本;
和暫存更改的操作一樣,選的時候選擇放棄更改即可;
5) 取消暫存更改
暫存更改之后,會顯示已經暫存的文件,可以取消暫存修改:
取消之后,文件在更改列表中:
6) 提交
提交的意思是將代碼提交在你本地的分支上,提交成功,服務器上是沒有你的提交記錄的,必須推送之后才有,操作如下:
7) 推送
推送的意思是將代碼推送到分支上,成功之后,服務器上就有你的提交記錄,別人就可以拉取到你提交的代碼,操作如下: