Git 工作區(qū)维费、暫存區(qū)和版本庫概念
1.工作區(qū):就是你在電腦里能看到的目錄蚀狰。
2.暫存區(qū):英文叫stage, 或index勾哩。一般存放在 ".git目錄下" 下的index文件(.git/index)中万伤,所以我們把暫存區(qū)有時也叫作索引(index)趋距。
3.版本庫:工作區(qū)有一個隱藏目錄.git牡辽,這個不算工作區(qū)喳篇,而是Git的版本庫。
配置SSHkey
在終端輸入cd ~/.ssh
若提示cd: no such file or directory: ~/.ssh就說明是沒有配置過态辛,繼續(xù)進行配置
git config --global user.name "你的賬號名"
git config --global user.email "你的gitlab郵箱"
ssh-keygen -t rsa -C "你的gitlab郵箱"
cat .ssh/id_rsa.pub
復(fù)制該文件內(nèi)的公鑰麸澜,粘貼到github/setting/SSH and GPG keys
在.ssh目錄下創(chuàng)建config文件,添加配置信息因妙,可以添加多個痰憎,以方便公司gitlab,自己的github都能正常操作
Host github.com
HostName github.com
User 注冊的github的昵稱
IdentityFile .ssh的絕對路徑/id_rsa
git初始化/查看狀態(tài)/提交/推送
git init
git status
git add
git commit -m "可以添加備注"
git push
git刪除
rm命令
rm test.txt 只刪除工作區(qū)的文件
并沒有刪除版本庫票髓,若需要刪除版本庫的需要再次執(zhí)行g(shù)it add,git commit
git rm命令
git rm test.txt 刪除工作區(qū)文件,并且將這次刪除放入暫存區(qū)铣耘。
想要刪除版本庫文件還要執(zhí)行g(shù)it add 和commit 操作洽沟,刪除工作區(qū)和版本庫的文件。也可以根據(jù)提示通過版本庫重置該文件
刪除過程
git rm -f 命令
git rm -f test.txt 刪除工作區(qū)和暫存區(qū)文件蜗细,并且將這次刪除放入暫存區(qū)裆操。
注意: 要刪除的文件已經(jīng)修改過,就是說和當前版本庫文件的內(nèi)容不同炉媒。
image.png
git rm --cached命令
git rm --cached test.txt 刪除暫存區(qū)文件踪区,但保留工作區(qū)的文件,并且將這次刪除放入暫存區(qū)吊骤。
image.png
git分支管理-查看/創(chuàng)建
git branch 查看本地分支
git branch -a 查看遠端分支
git checkout -b branch1 創(chuàng)建本地分支
git push --set-upstream origin branch1 首次提交遠端分支
git分支管理-刪除
不能直接刪除當前分支缎岗,需要切換到其他分支后,再刪除當前分支
刪除本地分支:
git checkout master
git branch -d branch1 刪除本地分支
git branch -D branch1 強制刪除
刪除遠端的分支:
git branch -r -d origin/branch1刪除
git push origin :branch1提交
注意:origin :branch1這里origin后面有個空格
遠端分支刪除操作
git分支管理-合并
git merge branch1 把branch1分支的代碼合并到當前分支
解決沖突:當出現(xiàn)沖突時白粉,git會提示沖突文件信息传泊,做處理
git版本操作-版本回退
1)工作區(qū)、暫存區(qū)鸭巴、版本庫都回退
git reset --hard HEAD^
git reset --hard HEAD~100 回到100個版本前
git reflog 查看所有版本
git reset --hard 21f7342 回到指定版本
2)只保留工作區(qū)眷细,暫存區(qū)、版本庫回退
git reset --mixed HEAD^
3)保留工作區(qū)鹃祖、暫存區(qū)溪椎,只有版本庫回退
git reset --soft HEAD^
image.png
git修改提交的版本備注信息
1.修改最新一次提交,用amend
git commit --amend,然后在彈出的編輯區(qū)修改備注保存提交
2.修改之前的任意次提交恬口,用rebase
git rebase -i HEAD~3
表示要修改當前版本的倒數(shù)第三次狀態(tài)校读。
這個命令出來之后,會出來三行東東:
pick:*******
pick:*******
pick:*******
如果你要修改哪個楷兽,就把那行的pick改成edit地熄,然后保存退出。
這時通過git log你可以發(fā)現(xiàn)芯杀,git的最后一次提交已經(jīng)變成你選的那個了,這時再使用:
git commit --amend
來對commit進行修改雅潭。
提交完成后使用git rebase --continue搞定
git存在修改記錄時揭厚,不能再次rebase,需要執(zhí)行完上一次的操作才行扶供∩冈玻可以繼續(xù),終止椿浓,跳過
git rebase (--continue | --abort | --skip)
git修改push的注釋
剛剛push到遠端還沒有人其他人下載或改動的:
git commit --amend
進入修改頁面修改注釋信息太援,修改后:wq保存退出闽晦。
再使用git push --force-with-lease origin master
遠端文檔被人改動后:
本地先修改對應(yīng)的文件提交信息,然后拉取遠端代碼合并后提岔,再push上去仙蛉,這樣修改注釋的風險是本地在暫存區(qū)的新文件會被提交。最好不要這樣操作碱蒙,風險比較大荠瘪。
git rebase -i HEAD~2
git commit --amend
git rebase --continue
git pull origin master
git push -u origin master
pull request
https://juejin.cn/post/6844904150543810573
image.png
merge request
image.png