一.開發中為什么需要Git
因為在多人開發中Git可以管理代碼,而且每個人都可以從庫里面下載代碼進行修改,每個人上傳和修改Git都會有記錄,如果出現大錯誤,還可以回退到正常版本。
二.Git原理
我們首先從代碼庫(Remote)下載代碼到工作區(workspace),然后寫代碼,寫好代碼放到暫存區(index),覺得沒問題了,就上傳到本地庫(Repository),本地庫再上傳到代碼庫(Remote)。
三. 基本操作
1.創建一個遠端代碼庫(Remote),示例:在ubuntu上面創建遠端代碼庫
?????隨便創建一個文件夾,用于存放git管理的代碼庫
sudo mkdir GitLib //創建文件夾
???????git init --bare //創建裸代碼庫,創建完后,自動生成別名origin,后面用
2. 在工作區拉取遠端代碼庫。
- 本地端創建一個工作區的文件夾,進入Git Bash Here
- 總共有四種協議(http,https,ssh,git)來和遠端交互通,常用我們用ssh公鑰進行git服務器交互就行。
ssh-keygen -t rsa //生成公鑰
- ?一直回車,就會把公鑰放在C:\Users\SF\.ssh,復制里面公鑰
- 把公鑰放到服務器上面
cd ~ cd .ssh vi authorized_keys 然后把剛剛復制的公鑰放進去保存就行
- 拉取服務器代碼
git clone ssh://harry@192.168.235.130:/home/harry/VsCodeProject/GitLib
就會出現以下文件夾,(當然文件夾名字隨便改,這是我改過的,原來的名字和服務器上面一樣)
3.基礎設置(用于后面知道是誰上傳的代碼什么的)
cd GitLib-sxf //進入文件夾
git config user.name sxf //設置用戶名
git config user.email sxf@qq.com //設置郵箱
4.?Git各種操作指令
git add . //把所有文件放到暫存區(index)
git add 文件名 //把單個文件放到暫存區(index)git commit . -m "feat:function" //把所有文件放到本地代碼庫(Repository)
git commit 文件名 -m "feat:function" //把單個文件放到本地代碼庫(Repository)git push origin master//把存放在本地代碼庫的代碼放到服務器上面(Remote),origin是創建服務器時候默認名,master是分支,意思是從那支分支提交到服務器origingit pull //從服務器拉取代碼到工作區git status //查看狀態,代碼處于什么階段
git log //生成提交日志,看誰,在什么時候提交什么東西
5.逆向操作
git restore -S 文件名 //index->workspace,暫存區回退到工作區git reset --soft head^ //Repository->index,本地庫回退到暫存區index
git reset --mixed head^ //Repository->workspace,本地庫回退到工作區workspace
git reset --hard head^ //Repository->null,本地庫直接刪除之前操作git checkout //workspace -> null,重置workspace里面的修改,例如:你添加一個函數,但你不想要了,可以使用這個
git checkout -- file
git checkout -f
6.整理操作
git commit --amend //整理上一次提交,一個代碼,你每次加一個函數就提交一次,日志里面就有你多次提交記錄,顯得很麻煩,如果只想日志里面出現一次,就用這個git rebase -i //多次提交日志合并成一個
7.分支操作
git branch //查看分支git branch 分支名 //創建分支
git checkout -b 分支名 //創建分支,并進入這個分支
git checkout 分支名 //切換到指定分支
git switch 分支名 //切換到指定分支 git merge //合并分支git branch -d 分支名 //刪除分支如果你是在分支線上面添加修改代碼,就得以下步驟更新代碼數據:1.拉取 master最新數據;
git switch master//進入主線
git pull //拉取最新代碼2.先把 master合并到develop
git switch 分支名 //變更到分支
git merge master //合并主線最新代碼3.然后測試代碼
進入代碼解決沖突(因為人家比你先寫好代碼提交,所有你拉取最新代碼后,占用同樣位置,所有產生沖突)
git add.
git commit . -i -m "......" //.是提交所有文件,-i是解決沖突提示文件,-m是添加提示4.合并到master,測試如果ok提交到遠端
git checkout master
git merge 分支名
git push origin master