git:分佈式版本控制系統
svn:集中式版本控制系統
1.安裝git,傻瓜式安裝
2.要使用git命令行前,要先切換到git bash模式
3.git配置:
用戶信息: git config --global user.name "zcy"
git config --global user.email "[email protected]"
檢查所有的配置:git config --list
4.獲取Git倉庫
4.1. 本地初始化一個文件夾
新建一個文件夾,然後右鍵git bash 或者vscode中調到bash模式,然後在該文件夾中初始化:git init,目的是讓當前的文件夾被Git管理,生成 .git 文件夾
4.2.拉取遠程倉庫到本地
克隆現有的倉庫:cd Desktop/ 到桌面上 git clone url
5.三個工作區域:工作目錄,暫存區域(git add),Git倉庫(git commit)
6.以快照的方式來存儲版本,根據哈希值來進行回退版本等操作
7.Git更新狀態命令
追蹤文件與暫存已經修改文件:git add
提交更新:git commit
查看狀態:git status
查看修改:git diff
8.在只有git init 初始化倉庫的情況下,新建一個index.html,暫存:git add index.html
暫存所有文件:git add . ,提交:git commit -m "第一次提交"
9.查看文件狀態(Untracked:沒有追蹤,Unmodified:沒有修改,Modified:修改,Staged:暫存): git status
10.查看修改:
10.1. git diff 查看工作目錄與暫存區域的不同
10.2. git diff --staged 比較暫存區域與上個版本有什麼不同
10.3. git diff --HEAD 比較當前工作目錄與上個版本有什麼不同
10.4. 如果全部提交上去,就沒有查看修改的必要了
11. Git查看提交歷史:git log
12. Git撤銷前,先要查看狀態:git status
12.1. 撤銷到暫存 git checkout -- <file>,git checkout -- index.html
12.2. 撤銷暫存 git reset HEAD <file>,git reset HEAD index.html
13. Git分支:指針,svn分支比較麻煩,沒有什麼人去使用
默認分支:master
創建分支:git branch testing
分支切換:git checkout <名字>
13.1.如果當前提交的東西已經是一個版本,簡便的寫法: git commit -a -m "描述",不適合包含未追蹤的文件
13.2.查看在哪個分支上:git status
13.3. 創建新分支:git branch dev,但是當前指針還是指向master,所以要切換到dev分支:git checkout dev
13.4. 切換回master分支:git checkout master,沒有新分支dev提交的內容,master創建index.js文件,dev也創建index.js文件
,它們分別進行不同的操作,協作開發。
13.5. 重要:我們不要在主分支上修改代碼
如果主分支上面有BUG,我們要再創建一個新的分支來專門修改BUG如:
git branch issus1 ,git checkout issus1
如果我們修改完BUG,要git add . git commit -m "修改BUG",然後切換到主分支:git checkout master,如果修改BUG的issus1 沒問題的話,我們要把這個分支和主分支合併, git merge issus1,但是要注意,兩個人不要修改同一個文件夾,
會引起衝突,怎麼解決呢?把(當前更改)和(傳入的更改)這兩個刪掉,把要的代碼保留,然後再 git add . git commit
14.使用遠程倉庫
兩種方式:1.已本地倉庫爲基準,2.已遠程倉庫爲基準:git clone
1.已本地倉庫爲基準:
1.1. 新建文件夾
1.2. git init 初始化倉庫
git add . 提交到暫存區
git commit -m "內容"
1.3. 協作開發,新建遠程倉庫,確保遠程倉庫是空倉庫
1.4. 查看本地倉庫與遠程倉庫是否存在聯繫:git remote
1.5. 建立本地倉庫與遠程倉庫的聯繫:git remote add origin 遠程地址 ,一個本地倉庫可以跟多個遠程倉庫連接
1.6. 查看本地與遠程倉庫的連接狀態: git remote -v
1.7. 把本地倉庫的代碼推送到遠程倉庫去 git push origin master
提交到遠程倉庫後,如果我們想繼續更新的話,還是 git add . 和 git commit -m "內容",但是這時候遠程倉庫並沒有更新,我們爲了讓倉庫去記住我們,不用輸入 git push origin master這一串,所以我們改成git push -u origin master,下次推送的話,直接用git push就可以了。
1.8. 查看當前本地的分支:git branch,查看所有的分支:git branch -va
2.已遠程倉庫爲基準:git clone
1.新建文件夾
2. git bash
3. git clone 遠程地址,git clone http://zcy:zcy@vipgit 給一個用戶名和密碼
4. 查看版本 git log
5.雖然我們測試兩個人提交,但是還是顯示同一個用戶,我們去修改一下
設置當前文件夾的用戶名和密碼:
git config user.name zcy1
git config user.email [email protected]
6. 查看一下都有什麼 git config --list
7.zcy1先做完先提交了代碼,zcy後面才做完,這時候,zcy的代碼和遠程代碼不同步(會報錯),要怎麼操作呢?
要把本地倉庫和遠程倉庫合併,要拉取遠程倉庫,git fetch origin
查看所有的分支:git branch -va,看一下少了哪些版本
然後要同步的話,git merge origin/master
多人協作
發現本地倉庫和遠程倉庫不同步,要先拉取代碼,然後合併
拉取:git fetch <name>,看一下別人提交了什麼內容
合併:git merge <branch>
拉取加合併:git pull <name> <branch>,如:git pull origin master
推送: git push <name> <branch>
:q :退出
8. 查看本地分支跟蹤的遠程分支: git branch -vv
GitHub的使用
1.New-->選擇public,注意不要初始化,不要勾選readme,-->勾選create-->先點HTTPS-->複製自己剛剛新建的遠程地址-->
git remote add github 遠程地址 --> git remote --> 往自己的GitHub上推送代碼,git push github master-->需要賬戶和密碼-->
然後推送成功
因爲我們不想每次提交都輸入用戶名和密碼,所以我們要把HTTPS改成SSH。
自己的倉庫-->右上角頭像-->Settings-->SSH and GPG keys --> generating SSH keys -->Generating a new SSH key and adding it to the ssh-agent -->在隨意的文件夾下輸入命令,
ssh-keygen -t rsa -b 4096 -C "[email protected]"
然後它會把密碼保存在一個文件夾中(C盤...),看你自己需要要不要修改
一路回車,產生完後出現一個圖形
然後複製上面的地址,去自己的電腦中找,會發現兩個文件(私鑰和公鑰):1.id_rsa,2.id_rsa.pub
打開公鑰然後複製,在GitHub上面點New SSH key 按鈕,把剛剛複製往Key裏面黏貼,然後點Add SSH key按鈕,然後我們就可以以SSH的方式複製遠程地址,GitHub就不會找我們要用戶名和密碼
Git工作流
有四種:集中式工作流,功能分支工作流,Gitflow工作流,Forking工作流
集中式工作流:
cd Desktop/ -->git clone 遠程地址,克隆遠程倉庫--> git add . --> git commit -m "提交內容" --> git push,如果出現問題 -->
git fetch origin,拉取代碼,看看別人更新了什麼 --> git merge origin/master 合併,如果有衝突,要解決,然後再-->git add . -->git commit -m "解決衝突" --> git push
有個問題,在GitHub上不想看到解決衝突(提交歷史),怎麼解決呢?(但是不符合真實操作流程)
git add . --> git commit -m "提交內容" --> git push,如果出現問題 -->git fetch origin,拉取代碼,看看別人更新了什麼 -->
git rebase origin/master,如果沒有衝突的話 --> git push,這時候,就不會把解決衝突提交上去
git rebase origin/master,如果有衝突的話 -->git fetch和git rebase融合,git pull --rebase -->解決衝突 -->git add. -->
git rebase --continue -->git push
問題:一般人都不會直接修改master上的代碼
功能分支工作流:
新建分支開發,開發完上傳到遠程倉庫分支,pull request 接受或者修改