當(dāng)前使用git進(jìn)行版本管理越來越頻繁诺擅,但是難免還是有些命令記不全泉瞻,曾當(dāng)前閑暇記錄一下咙鞍,免得需要時(shí)漫天找尋
一、 配置用戶信息
1切距、git config 【配置git 用戶信息】
配置git 用戶信息
# 設(shè)置提交代碼時(shí)的用戶信息
$ git config [--global] user.name "用戶名"
$ git config [--global] user.email "郵箱地址"
## 如 $ git config [--global] user.name "jack"
## 如 $ git config [--global] user.name "jack@qq.com"
2烁登、git config --list 【查看配置】
查看配置
# 顯示當(dāng)前的Git配置
$ git config --list
3、git config -e【編輯配置】
編輯配置
# 編輯Git配置文件
$ git config -e [--global]
<font color=red>【注】</font>其中 --global 是進(jìn)行全局配置蔚舀,如果不指定該參數(shù)默認(rèn)配置到當(dāng)前目錄下
二饵沧、倉庫初始化
1、git init 【將當(dāng)前目錄初始化為git 代碼倉庫】
將當(dāng)前目錄初始化為git 代碼倉庫
$ git init
2赌躺、git init [project-name]【新建一個(gè)目錄狼牺,將其初始化為Git代碼庫】
新建一個(gè)目錄,將其初始化為Git代碼庫
$ git init [project-name]
3礼患、 git clone【拷貝一個(gè)項(xiàng)目到本地】
拷貝一個(gè)項(xiàng)目到本地
$ git clone [url]
如:$ git clone http://192.168.100.235:8000/test/git_test.git
三是钥、倉庫管理
1、git remote add origin 【與遠(yuǎn)程倉庫建立連接】
與遠(yuǎn)程倉庫建立連接
$ git remote add [origin] [url]
:origin
映射遠(yuǎn)程倉庫的別名 url
倉庫路徑
$ git remote add origin http://192.168.100.235:8000/test/git_test.git
2缅叠、git remote rm origin【刪除遠(yuǎn)程連接】
刪除遠(yuǎn)程連接
$ git remote rm origin
3悄泥、git remote set-url origin【更換遠(yuǎn)程倉庫地址】
更換遠(yuǎn)程倉庫地址
語法: git remote set-url <origin> <remoteUrl>
$ git remote set-url origin http://192.168.100.235:8000/test/git_test.git
4、git pull 【取回遠(yuǎn)程倉庫的變化肤粱,并與本地分支合并】
取回遠(yuǎn)程倉庫的變化弹囚,并與本地分支合并
$ git pull [remote] [branch]
如 $ git pull origin dev
將origin
對應(yīng)的遠(yuǎn)程dev
分支變動(dòng)合并到本地dev
5、git remote -v【顯示所有遠(yuǎn)程倉庫】
顯示所有遠(yuǎn)程倉庫
$ git remote -v
四领曼、狀態(tài)管理
1鸥鹉、git status【查看本地文件變更情況】
查看本地文件變更情況
$ git status
五、把文件添加到暫存區(qū)
1庶骄、git add . 【將修改和新增文件添加到緩存區(qū)】
提交新文件(new)和被修改(modified)文件毁渗,不包括被刪除(deleted)文件
$ git add .
2、git add -u 【將修改和被刪除文件添加到緩存區(qū)】
提交被修改(modified)和被刪除(deleted)文件单刁,不包括新文件(new)
$ git add -u
3灸异、git add -A 【將全部改動(dòng)添加到緩存區(qū)】
是上面兩個(gè)功能的合集(git add --all的縮寫)
$ git add -A
六、提交
1羔飞、git commit 【提交暫存區(qū)到倉庫】
提交暫存區(qū)到倉庫
$ git commit -m "It is first committing."
七肺樟、數(shù)據(jù)推送
1、git push 【推送到遠(yuǎn)程倉庫】
將更改推送到遠(yuǎn)程倉庫
$ git push origin master:dev
這個(gè)命令中
origin: 指定遠(yuǎn)程倉庫地址的別名
master:選擇推送到遠(yuǎn)程倉庫的本地分支名稱
dev:指定推送到遠(yuǎn)程倉庫的分支名稱(可以省略褥傍,省略后默認(rèn)和本地分支名相同)
不指定遠(yuǎn)程分支推送:
不指定遠(yuǎn)程分支推送
指定遠(yuǎn)程分支推送:
[圖片上傳失敗...(image-50f1d1-1635041767442)]
另一種操作:創(chuàng)建一個(gè)新的分支儡嘶,并將其推送到遠(yuǎn)程倉庫
1、$ git branch -b dev
2恍风、 $ git push --set-upstream origin dev
2蹦狂、git tag 【打標(biāo)簽】
1誓篱、為當(dāng)前版本打一個(gè)標(biāo)簽
git tag <tag name>
## git tag <tag name>
$ git tag v1.0.0
2、推送單個(gè)tag到倉庫
git push origin <tag name>
## git push origin <tag name>
$ git push origin v1.0.0
3凯楔、推送所有tag 到倉庫
git push --tags
git push origin --tags
$ git push origin --tags
4窜骄、展示所有tag
git tag
## git tag
$ git tag
5、搜索tag
git tag -l 'v1.0.*'
## git tag -l 'v1.0.*'
$ git tag -l 'v1.0.*'
3摆屯、git tag -d [tag ]【刪除標(biāo)簽】
當(dāng)需要?jiǎng)h除某個(gè)tag 時(shí)可以執(zhí)行
git tag -d [tag ]
如我想刪除原本的 v1.0.0
$ git tag
v1.0.0
## git tag -d [tag ]
$ git tag -d v1.0.0
Deleted tag 'v1.0.0' (was 0bcb84e)
$ git push origin :v1.0.0
To github.com:dengxiaoning/***.git
- [deleted] v1.0.0
$ git tag
看刪除成功邻遏,再次查看就沒有了
八、分支管理
1虐骑、git branch 【查看分支】
查看分支
$ git branch [-a]
2准验、git branch branchName 【創(chuàng)建分支】
創(chuàng)建分支
$ git branch branchName
3、git checkout 【切換分支】
切換分支
$ git checkout branchName
4廷没、git checkout –b【創(chuàng)建+切換分支】
創(chuàng)建+切換分支
$ git checkout –b branchName
【 –b 】參數(shù)表示創(chuàng)建并切換糊饱,相當(dāng)于如下2條命令
git branch branchName
, git checkout branchName
5颠黎、git merge dev【合并某分支到當(dāng)前分支】
合并某分支到當(dāng)前分支
# 切換到Master分支
git checkout master
# 將dev合并到當(dāng)前的master分支上來
git merge dev --no-ff
注意:合并一個(gè)沒有關(guān)聯(lián)的分支可能會(huì)提示fatal: refusing to merge unrelated histories
如:欲將master合并到main分支
Lenovo@LAPTOP-UBL4APLU MINGW64 /d/learnReact/admin-v2-fe (main)
$ git merge master
fatal: refusing to merge unrelated histories
這時(shí)可以在合并是增加一個(gè)參數(shù)--allow-unrelated-histories
如:
Lenovo@LAPTOP-UBL4APLU MINGW64 /d/learnReact/admin-v2-fe (main)
$ git merge master --allow-unrelated-histories
6另锋、git branch –d 【刪除(本地)分支】
刪除(本地)分支
$ git branch –d branchName
7、git push origin --delete【刪除(遠(yuǎn)程)分支】
刪除(遠(yuǎn)程)分支
## origin:遠(yuǎn)程倉庫別名 remoteBranch:遠(yuǎn)程分支名
$ git push origin --delete remoteBranch
[圖片上傳失敗...(image-230613-1635041767442)]
8狭归、git branch -m 【本地分支重命名】
本地分支重命名
## master :舊的本地分支名稱 newbranchname:新的本地分支名
$ git branch -m master newbranchname
九夭坪、文件管理
1、git diff 【比較修改文件的不同點(diǎn)】
比較修改文件的不同點(diǎn)
$ git diff modifyFileName
注意:diff 后面需要全路徑
如
### 查看當(dāng)前修改狀態(tài)
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: src/App.vue
modified: src/components/HelloWorld.vue
modified: src/components/cesium_main.vue
no changes added to commit (use "git add" and/or "git commit -a")
Lenovo@LAPTOP-UBL4APLU MINGW64 /d/learnVUE/vue-join-cesium (master)
### 比較一下src/components/cesium_main.vue文件的差異
$ git diff src/components/cesium_main.vue
diff --git a/src/components/cesium_main.vue b/src/components/cesium_main.vue
index dfa97a4..21c434b 100644
--- a/src/components/cesium_main.vue
+++ b/src/components/cesium_main.vue
@@ -66,7 +66,7 @@
// var lonIncrement = 0.00025;
var initialLon = 103.33;
var lat = 30.06;
- var height = 857;
+ var height = 17096;^M
2过椎、git rm -r 【刪除遠(yuǎn)程倉庫文件】
刪除遠(yuǎn)程倉庫文件
只刪除遠(yuǎn)程倉庫里的文件室梅,保留本地緩存文件
## 1.執(zhí)行刪除
$ git rm test.txt (刪除文件)
## -r 是遞歸的意思 當(dāng)最后面是文件夾的時(shí)候有用
$ git rm -r test (刪除文件夾)
## 2.提交修改
$ git commit -m "Delete some files."
## 3.將修改提交到遠(yuǎn)程倉庫的xxx分支:
$ git push origin xxx
十、日志
1潭流、git log 【查看commit日志】
查看提交日志
$ git log
十一竞惋、還原與重置
1、git checkout [file] 【恢復(fù)暫存區(qū)的指定文件到工作區(qū)】
恢復(fù)暫存區(qū)的指定文件到工作區(qū)
# 恢復(fù)暫存區(qū)的指定文件到工作區(qū)
$ git checkout [file]
2灰嫉、git checkout [commit] [file] 【恢復(fù)某個(gè)commit的指定文件到暫存區(qū)和工作區(qū)】
恢復(fù)某個(gè)commit的指定文件到暫存區(qū)和工作區(qū)
$ git checkout [commit] [file]
3、git checkout .【本地所有修改的嗓奢。沒有的提交的讼撒,都返回到原來的狀態(tài)】
本地所有修改的。沒有的提交的股耽,都返回到原來的狀態(tài)【注意最后有個(gè)點(diǎn)】
$ git checkout .
4根盒、git reset [file]【重置暫存區(qū)的指定文件,與上一次commit保持一致物蝙,但工作區(qū)不變】
重置暫存區(qū)的指定文件炎滞,與上一次commit保持一致,但工作區(qū)不變
$ git reset [file]
如:
看我已將將兩個(gè)有修改的文件提交到了緩存區(qū)
當(dāng)再次執(zhí)行$ git reset cesium_index.html
將會(huì)把該文件恢復(fù)到未add狀態(tài)
執(zhí)行一下reset
$ git reset cesium_index.html
Unstaged changes after reset:
M cesium_index.html
再檢測下當(dāng)前文件status
看已經(jīng)將一個(gè)文件恢復(fù)到了未提交狀態(tài)
5诬乞、git reset --hard【重置暫存區(qū)與工作區(qū)册赛,與上一次commit保持一致】
重置暫存區(qū)與工作區(qū),與上一次commit保持一致
$ git reset --hard
6、 git reset [commit]【重置當(dāng)前分支的指針為指定commit赤赊,同時(shí)重置暫存區(qū)吵血,但工作區(qū)保持不變】
重置當(dāng)前分支的指針為指定commit,同時(shí)重置暫存區(qū)扼睬,但工作區(qū)不變(就是將當(dāng)前git add -A提交到緩存區(qū)的文件還原為
沒有g(shù)it add 狀態(tài)逮栅, 可以再次執(zhí)行g(shù)it add 和git commit 但是你ide中修改的內(nèi)容依然保持你當(dāng)前修改的狀態(tài))
$ git reset [commit]
[圖片上傳失敗...(image-702279-1635041767442)]
如 將當(dāng)前commit 緩沖區(qū)還原到6791a964097f676ee603eb512ed7c96a5e9fd35c
這次提交
[圖片上傳失敗...(image-6e5917-1635041767442)]
還原后
使用git status 查看,這是文件都處于修改窗宇,而未被 git add 加入緩沖區(qū)時(shí)的狀態(tài)了
7措伐、 git reset --hard [commit]【重置當(dāng)前分支的HEAD為指定commit,同時(shí)重置暫存區(qū)和工作區(qū)】
重置當(dāng)前分支的HEAD為指定commit军俊,同時(shí)重置【暫存區(qū)】和【工作區(qū)】侥加,與指定commit一致
$ git reset --hard [commit]
如
$ git reset --hard a3cd9d264a2ab609a69637365ebd327757e4364a
8、git reset --keep [commit]【重置當(dāng)前HEAD為指定commit蝇完,但保持暫存區(qū)和工作區(qū)不變】
重置當(dāng)前HEAD為指定commit官硝,但保持暫存區(qū)和工作區(qū)不變
$ git reset --keep [commit]
如
$ git reset --keep a3cd9d264a2ab609a69637365ebd327757e4364a
9、 git revert [commit]【新建一個(gè)commit短蜕,用來撤銷指定commit】
新建一個(gè)commit氢架,用來撤銷指定commit
后者的所有 變化都將被前者抵消,并且應(yīng)用到當(dāng)前分支
$ git revert [commit]
如
$ git revert a3cd9d264a2ab609a69637365ebd327757e4364a
10朋魔、git stash【把所有沒有提交的修改暫存到stash里面】
把所有沒有提交的修改暫存到stash里面岖研。可用git stash pop恢復(fù)
$ git stash
example:
1警检、保存當(dāng)前工作進(jìn)度孙援,會(huì)把暫存區(qū)和工作區(qū)的改動(dòng)保存起來。執(zhí)行完這個(gè)命令后扇雕,在運(yùn)行g(shù)it status命令(這里可以使用save添加一個(gè)標(biāo)識(shí))拓售,就會(huì)發(fā)現(xiàn)當(dāng)前是一個(gè)干凈的工作區(qū),沒有任何改動(dòng)镶奉。
$ git stash save 'cache-change'
Saved working directory and index state On dev: cache-change
2础淤、查看一下
$ git stash list
stash@{0}: On dev: cache-change
3、查看當(dāng)前工作區(qū)的改動(dòng)情況
$ git status
On branch dev
nothing to commit, working tree clean
4哨苛、查看堆棧中最新保存的stash和當(dāng)前目錄的差異鸽凶。
$ git stash show
.env.development | 8 +-
.eslintrc.js | 13 +---
src/api/patient.js | 88 +++++++++++-----------
src/components/TimeoutLock/custPwdInput.vue | 10 +--
src/router/index.js | 42 +++++------
.../patient/inHospital/components/EmrRecord.vue | 42 +++--------
.../fullDayRecover/recoverList/partPanel.vue | 2 +-
src/views/patient/inHospital/index.vue | 3 +-
src/views/patient/outpatient/index.vue | 3 +-
9 files changed, 94 insertions(+), 117 deletions(-)
5、將stash 合并到當(dāng)前工作區(qū)
$ git stash pop
On branch dev
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.development
modified: .eslintrc.js
modified: src/api/patient.js
modified: src/components/TimeoutLock/custPwdInput.vue
modified: src/router/index.js
modified: src/views/patient/inHospital/components/EmrRecord.vue
modified: src/views/patient/inHospital/index.vue
modified: src/views/patient/outpatient/index.vue
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (692af9f593ae972b2d2837bbe03f1550a9e0ae9d)
如下為恢復(fù)指定的進(jìn)度到工作區(qū)建峭。stash_id是通過git stash list命令得到的玻侥。
如:
$ git stash pop stash@{0}
再查看一下stash
$ git stash list
再查看一下當(dāng)前工作區(qū)
$ git status
On branch dev
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.development
modified: .eslintrc.js
modified: src/api/patient.js
modified: src/components/TimeoutLock/custPwdInput.vue
modified: src/router/index.js
modified: src/views/patient/inHospital/components/EmrRecord.vue
modified: src/views/patient/inHospital/index.vue
modified: src/views/patient/outpatient/index.vue
no changes added to commit (use "git add" and/or "git commit -a")
ok還原到當(dāng)前工作區(qū)成功了
注意:通過git stash pop命令恢復(fù)進(jìn)度后,會(huì)刪除當(dāng)前進(jìn)度 可以使用 git stash apply [–index] [stash_id]
將堆棧中的內(nèi)容應(yīng)用到當(dāng)前目錄亿蒸,不同于git stash pop凑兰,該命令不會(huì)將內(nèi)容從堆棧中刪除掌桩,也就說該命令能夠?qū)⒍褩5膬?nèi)容多次應(yīng)用到工作目錄中,適應(yīng)于多個(gè)分支的情況票摇。
11拘鞋、git reset --hard HASH【返回到某個(gè)節(jié)點(diǎn),不保留修改】
返回到某個(gè)節(jié)點(diǎn)矢门,不保留修改盆色。
$ git reset --hard HASH
12、git reset --soft HASH【返回到某個(gè)節(jié)點(diǎn)祟剔。保留修改】
返回到某個(gè)節(jié)點(diǎn)隔躲。保留修改
$ git reset --soft HASH
13、git clean -df【返回到某個(gè)節(jié)點(diǎn)】
返回到某個(gè)節(jié)點(diǎn)
$ git clean -df
參數(shù)配置
-n
顯示 將要 刪除的 文件 和 目錄
-f
刪除 文件
-df
刪除 文件 和 目錄
如 查看日志為
$ git log
commit c81325c83f4575ba6f09e52c8e664eedfbf37f39 (origin/master)
Author: dxn <123456@qq.com>
Date: Sun Aug 4 21:41:53 2019 +0800
commit f9be161a95963251f94f56244f476d3d49d44a40
Author: dex <123456@qq.com>
Date: Sun Jul 28 08:10:41 2019 +0800
commit 8ac8418ba5e959b8cd6ff2af8a5dc493524e957e
Author: dex <123456@qq.com>
Date: Wed Jul 24 21:40:39 2019 +0800
那要返到f9be161a95963251f94f56244f476d3d49d44a40
這次提交
直接執(zhí)行 $ git reset --hard f9be161a95963251f94f56244f476d3d49d44a40
即可
其實(shí)代碼還原別小看在某些時(shí)候蠻管用物延,如你的代碼和和遠(yuǎn)程倉庫沖突時(shí)
你也許會(huì)使用
$ git pull origin master --allow-unrelated-histories
參數(shù)--allow-unrelated-histories
把兩段不相干的 分支進(jìn)行強(qiáng)行合并
但是會(huì)出現(xiàn)許多沖突宣旱,所以最后還是使用如下命令把HEAD恢復(fù)到最后提交的版本
$ git reset --hard origin/master
14、git reset --hard【刪除提交log】
可能有的的時(shí)候一不小心把一些敏感的信息提交到了GitHub叛薯,想著直接刪除然后再次提交就可以了浑吟,錯(cuò)了不管怎么修改提交,原本的歷史提交記錄里面都能看到你原來的信息耗溜,那這種就得想辦法刪除掉提交的log日志了组力,
1)使用git log
查看你提交的log
找到在提交敏感信息前一次提交的commit
如我提交敏感信息之前的一條是
commit 3dd59032d8a21ce94532bf2e768bc027fec0d119
那我就可以直接重置到這條提交記錄.....注意:這個(gè)reset 會(huì)把所有修改都重置會(huì)那次提交前的樣子,所以你需要將數(shù)據(jù)拷貝一份放到一邊抖拴,等重置完成后再用備份的數(shù)據(jù)覆蓋還原的數(shù)據(jù)燎字,再刪除掉敏感數(shù)據(jù),這樣確保數(shù)據(jù)和最后一次提交一致阿宅,只是刪除了不該提交的敏感數(shù)據(jù)
2)開始還原
$ git reset --hard 3dd59032d8a21ce94532bf2e768bc027fec0d119
HEAD is now at 3dd5903 Merge branch 'master' of github.com:dengxiaoning/***
3)然后在將記錄強(qiáng)推到倉庫(再次提醒備份了再推候衍,不然數(shù)據(jù)找不回來)
$ git push origin HEAD --force
Total 0 (delta 0), reused 0 (delta 0)
To github.com:dengxiaoning/
+ 2c3e1d1...3dd5903 HEAD -> master (forced update)
4) 好了遠(yuǎn)程倉庫還原成功了,現(xiàn)在用備份數(shù)據(jù)覆蓋當(dāng)前還原的數(shù)據(jù)洒放,再刪除敏感數(shù)據(jù)再次提交
git add -A
git commit -m "刪除敏感數(shù)據(jù)"
git push origin master
ok操作完成蛉鹿,倉庫中已經(jīng)找不到那條帶有敏感數(shù)據(jù)的提交痕跡了
好了大致就這些,謝謝瀏覽歡迎點(diǎn)贊往湿,分享和關(guān)注謝謝