Git是什么?
一個(gè)分布式版本控制系統(tǒng),和SVN類似,但遠(yuǎn)比SVN強(qiáng)大的一個(gè)版本控制系統(tǒng) ①Git可以方便的在本地進(jìn)行版本管理,如同你本地有一個(gè)版本管理服務(wù)器一樣 我們可以選擇在合適的時(shí)間將本地版本推送到統(tǒng)一的版本管理服務(wù)器 ②Git每次會(huì)提取整個(gè)代碼倉庫的完整鏡像,相當(dāng)于對整個(gè)代碼倉庫都進(jìn)行了一次備份,這樣計(jì)時(shí)版本服務(wù)器除了問題,我們可以直接采用本地倉庫恢復(fù)!結(jié)合本地版本管理功能,遠(yuǎn)程版本管理服務(wù)器出問題了,我們依然能繼續(xù)寫自己的代碼,當(dāng)他恢復(fù)的時(shí)候我們再提交我們的本地版本! Git研發(fā)初期是為了更好的管理Linux內(nèi)核,不過現(xiàn)在已經(jīng)廣泛應(yīng)用于各種項(xiàng)目中!
下面看下Git本地倉庫基本操作,具體內(nèi)容如下所示:
設(shè)置姓名和郵箱
設(shè)置使用Git時(shí)的姓名和郵箱地址。名字須用英文輸入
git config --global user.name "chuyaoxin"
git config --global user.email yaoxinchu@126.com
![](/d/20211017/6f55b4348e685c097e395d45aa4f5767.gif)
命令運(yùn)行的結(jié)果是在“C:\Users\用戶名”路徑下,產(chǎn)生一個(gè).gitconfig文件,可以用記事本打開。
![](/d/20211017/9faac391f64a6fba8da082fb0e1020f4.gif)
想更改這些信息時(shí),可以直接編輯這個(gè)設(shè)置文件。這里設(shè)置的姓名和郵箱地址會(huì)用在Git的提交日志中。由于在GitHub上公開倉庫時(shí),這里的姓名和郵箱地址也會(huì)隨著提交日志一同被公開,所以請不要使用不便公開的隱私信息。
創(chuàng)建倉庫
創(chuàng)建一個(gè)新文件夾,比如“TestForGit”
然后右鍵點(diǎn)擊這個(gè)文件夾,選擇Git Bash Here
打開后,輸入git init
完成代碼倉庫的建立
![](/d/20211017/49042ef4a3750d4a7b1d5f02c989bf3b.gif)
輸入ls -al
可以看到目錄下有個(gè).git的文件夾,但這個(gè)目錄默認(rèn)是隱藏的。
![](/d/20211017/26d9f43a8fa90972cd9013d4e1e4226b.gif)
提交本地代碼
先用add命令把要提交的內(nèi)容都加進(jìn)來,然后commit才是真的去執(zhí)行提交操作。
第一步,用命令git add告訴Git,把文件添加到倉庫
git add readme.txt
第二步,用命令git commit告訴Git,把文件提交到倉庫
git commit -m "write a readme file"
.gitignore
.gitignore是Git的忽略配置文件,放在項(xiàng)目根目錄下就行,這樣在提交代碼時(shí)就不會(huì)跟蹤在.gitignore配置文件列舉的文件。另外,.gitignore文件本身需要被git跟蹤管理,不能被忽略。
git add
用途:可以用來跟蹤新文件,或者添加已被修改的跟蹤的文件到緩存區(qū),或者把合并的沖突文件標(biāo)記為已解決
git add的原意是更新當(dāng)前工作目錄樹修改的內(nèi)容到索引中(也就是緩存中去)
主要針對兩種文件:(1)版本庫沒有跟蹤的文件(2)版本庫已經(jīng)跟蹤,但是修改了的文件
另外git add會(huì)自動(dòng)忽略.gitignore文件所忽略的文件。
git add .
將文件的修改、文件的新建(注意!不包括被刪除的文件),添加到暫存區(qū)
git add .會(huì)把所有untrack的文件都加入暫存區(qū),并且會(huì)根據(jù).gitignore做過濾
git add *
git add *會(huì)忽略.gitignore把任何文件都加入暫存區(qū)
git add -u
將文件的修改、文件的刪除(注意!僅監(jiān)控被add的文件,不包括新文件),添加到暫存區(qū),u表示update
git add -A
將文件的修改,文件的刪除,文件的新建(相當(dāng)于add .與add -u的合集),添加到暫存區(qū),A表示all其他
可以使用git add -h
命令來查看
$ git add -h
usage: git add [options>] [--] pathspec>...
-n, --dry-run dry run
-v, --verbose be verbose
-i, --interactive interactive picking
-p, --patch select hunks interactively
-e, --edit edit current diff and apply
-f, --force allow adding otherwise ignored files
-u, --update update tracked files
--renormalize renormalize EOL of tracked files (implies -u)
-N, --intent-to-add record only the fact that the path will be added later
-A, --all add changes from all tracked and untracked files
--ignore-removal ignore paths removed in the working tree (same as --no-all)
--refresh don't add, only refresh the index
--ignore-errors just skip files which cannot be added because of errors
--ignore-missing check if - even missing - files are ignored in dry run
--chmod (+|-)x override the executable bit of the listed files
--pathspec-from-file file>
read pathspec from file
--pathspec-file-nul with --pathspec-from-file, pathspec elements are separated with NUL character
git commit
git commit -m "write a readme file"
![](/d/20211017/4fae611559cca4a2327fef5833770d65.gif)
可以在使用了多次git add
之后再使用git commit
來提交。
在git commit命令中,-m后面輸入的是本次提交的說明,可以輸入任意內(nèi)容,但最好是有意義的,這樣就能從歷史記錄里方便地找到改動(dòng)記錄。
執(zhí)行成功后,從圖中可以看出,一個(gè)文件被改動(dòng),插入了6行內(nèi)容。
git status
git status
可以使用git status
命令查看是否還有文件未提交
![](/d/20211017/08a60bfbf931bb4a29273fa4014dc6d5.gif)
上圖說明當(dāng)前文件都已正常提交。
如果我對上傳的文件進(jìn)行修改,但是卻不提交會(huì)如何?
![](/d/20211017/7eec76cac1fbbc6bac94bc408adf547b.gif)
會(huì)報(bào)出如上所示的錯(cuò)誤!modified: readme.txt no changes added to commit
字面意思:readme.txt被修改,提交沒有變化
git diff
git diff readme.txt
git status
可以讓我們知道有沒有正常提交,比如上面那個(gè)例子,但如果要查看文件到底修改了什么內(nèi)容,可以使用git diff 文件名
命令
![](/d/20211017/fbc075543d064d6fc608184c3faf0606.gif)
這條命令將我對這個(gè)文件的修改記錄顯示了出來
查看提交記錄git log
使用git log即可查看歷史提交信息
![](/d/20211017/6abf32a748082182807bbac51b9b8f3c.gif)
從這張圖也可以看出之前git commit -m "write a readme file"
中,-m部分的作用,這個(gè)和編程時(shí)寫注釋是一樣的,可以不寫,但是寫的話方便以后的工作。
還有要注意的地方是輸出的結(jié)果,
顯然我這是提交了兩次,以第一次的結(jié)果為例,
commit 418ee0fc27d78a71f5869451b5a1599cc028b0ca (HEAD -> master)
Author: chuyaoxin yaoxinchu@126.com
Date: Tue Aug 4 19:48:59 2020 +0800
write a readme file
對應(yīng)的含義分別是
此次提交對應(yīng)的版本號(hào)
提交人:姓名 郵箱
提交的時(shí)間
提交版本修改的內(nèi)容:就是我們git commit -m “xxx”
里的xxx
撤銷未提交的修改
如果對文件進(jìn)行了錯(cuò)誤的修改,且已經(jīng)Ctrl+S保存,但還沒有提交,想要撤銷之前的修改可以使用checkout
命令
不僅未提交,而且沒有add
如果是這種情況,只需要一句git checkout 修改的文件名
即可
例如,git checkout readme.txt
![](/d/20211017/9a666fe0f30ab02ff09c9bb57adfd94c.gif)
此時(shí),再打開readme.txt,我對此文件的第二次修改被取消掉了
![](/d/20211017/686f1878a44caa88ead74ba35e895e26.gif)
已經(jīng)add,但還沒有提交
如果我們已經(jīng)add了的話,那么直接checkout是沒任何作用的,我們要先取消添加才可以撤回提交
git reset HEAD readme.txt
git checkout readme.txt
版本回退git reset
如果我們已經(jīng)提交,但想退回到之前的版本,可以使用git reset
命令
比如我先在readme.txt中添加了一行,然后git add readme.txt
,git commit -m "add the third step"
,添加并提交到倉庫
完成之后,使用git log
檢查提交記錄。
![](/d/20211017/92d67d50d2964e78d70d1dc77a1d1d81.gif)
PS:通過這張圖也能看出,最新的版本號(hào)顯示在最上方git reset --hard HEAD
在git中,HEAD表示當(dāng)前版本,HEAD表示上一個(gè)版本,HEAD^表示上上個(gè)版本
退回到上一個(gè)版本需要依次輸入以下指令
git reset --hard HEAD
git reset --hard HEAD^
執(zhí)行結(jié)果如下圖所示:
![](/d/20211017/c03789571ad3ac274a4b827844afa6c5.gif)
再輸入git log
查看,此時(shí)的版本號(hào)已經(jīng)發(fā)生了變化,最新修改的那個(gè)版本號(hào)沒有顯示出來了
![](/d/20211017/0ec6d05e08a508783022f774aa17c791.gif)
git reset --hard 版本號(hào)
這條命令可以讓我們將當(dāng)前版本更改為存在過的任意一個(gè)版本
同時(shí)仔細(xì)觀察這張圖,
![](/d/20211017/162ac8e2e10b8c1db9a4780b1fa2bacf.gif)
可以很容易的猜到,其實(shí)版本號(hào)只要輸入前七位就可以了
所以我們之前的回退指令可以用這條來替代,
git reset --hard 418ee0f
git reflog
如果你版本回退之后發(fā)現(xiàn),還是最新的那個(gè)版本好一點(diǎn),但此時(shí)通過git log
已經(jīng)找不到那個(gè)版本號(hào)了,
可以使用git reflog
![](/d/20211017/d09603f60c010617943396f0eeeeb5c4.gif)
顯然,版本回退之前的最新版本號(hào)為14a5f92
然后使用git reset --hard 14a5f92
打開readme.txt,因?yàn)榘姹净赝硕サ舻男薷挠只貋砹?/p>
![](/d/20211017/47c9e7a92258ab9d8db58ae8b3314679.gif)
總結(jié)
到此這篇關(guān)于Git本地倉庫基本操作及技巧的文章就介紹到這了,更多相關(guān)Git本地倉庫基本操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- Git 的基本操作、開發(fā)流程、實(shí)用技巧總結(jié)(陳彥貝)
- GIt的基本操作詳解
- Git 教程之基本操作詳解
- Github代碼常用指令(小結(jié))
- 詳解git基本操作和指令