git的基本使用

git原理.png

git使用

Git學(xué)習(xí)推薦廖雪峰老師的Git教程
安裝之后設(shè)置

  1. 設(shè)置用戶名和郵箱
設(shè)置或者更改用戶名和郵箱地址
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
查看用戶名和郵箱地址
$ git config --global user.name 
$ git config --global user.email 
  1. 創(chuàng)建一個版本庫(倉庫repository)
打開Git Bash 在自己想要的目錄下創(chuàng)建
$ cd xxxx
$ git init 
Initialized empty Git repository in E:/repository/img/.git/
# git init 用于把當(dāng)前目錄變成一個可以管理的倉庫
  1. 把文件放到Git倉庫
    在當(dāng)前目錄下游一個.git的目錄。此目錄是用來跟蹤管理版本庫的,不能亂改
    在管理的目錄或者子目錄建立一個文件(git只能管理這里面的文件)。 把文件放到Git倉庫只需兩步
  • git add xxx 告訴Git,把文件添加到倉庫 xxx 為文件可以是多個文件 提交到暫存區(qū)
  • git commit -m告訴Git,把文件提交到倉庫 -m 為提交說明 提交到分支
  • 兩個一起就是提交到倉庫
  1. 常用命令
git status 查看結(jié)果(查看文件的狀態(tài))
git diff 查看文件的修改內(nèi)容
git log 查看當(dāng)前版本和此版本修改之前的歷史記錄
git log --pretty=oneline  一行顯示
git reset --hard HEAD^  回退到上一個版本  HEAD表示是當(dāng)前版本 HEAD^^上上個版本 HEAD~(number)回退到第number個版本

git reflog 打印對分支的更改記錄 (可以用來記錄之前commit命令的commit id)
git reset --hard commit id  重新回到commit id 的新版本  這兩個命令用于還原之前被回退的版本
Git的版本回退速度非常快,因?yàn)镚it在內(nèi)部有個指向當(dāng)前版本的HEAD指針,當(dāng)你回退版本的時候,Git僅僅是把HEAD從指向append GPL:

工作區(qū)(Working Directory)
就是你在電腦里能看到的目錄
版本庫(Repository)
工作區(qū)有一個隱藏目錄.git,這個不算工作區(qū),而是Git的版本庫。
Git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區(qū),還有Git為我們自動創(chuàng)建的第一個分支master,以及指向master的一個指針叫HEAD。

git checkout --file  撤銷修改(未添加到暫存區(qū))現(xiàn)在一般用 git restore

如果要撤銷修改add過的文件可以使用git reset HEAD file 重新回到工作區(qū)再調(diào)用git checkout --file 丟棄工作區(qū)的修改

git reset命令既可以回退版本,也可以把暫存區(qū)的修改回退到工作區(qū)。當(dāng)我們用HEAD時,表示最新的版本。

新版本的另一個種修改方法

命令 作用 備注
git restore --worktree file 表示撤銷file文件工作區(qū)的修改 參數(shù)等同于-W
git restore --staged file 表示插銷暫存區(qū)的修改,將文件狀態(tài)恢復(fù)到add之前 參數(shù)等同于-S
git restore -s HEAD~1 README.md 表示將當(dāng)前工作區(qū)切換到上個 commit 版本
git restore -s dbv213 README.md 表示將當(dāng)前工作區(qū)切換到指定 commit id 的版本
git restore file 撤銷工作區(qū)的修改返回這里有兩種情況一是修改沒有放進(jìn)暫存區(qū)撤銷就和版本庫中一模一樣,二是存放進(jìn)了暫存區(qū)撤銷撤銷就是回到暫存區(qū)后的狀態(tài)

刪除文件也是一種修改

如果在工作去刪除了文件有兩個選錯,一是確定從倉庫中刪除文件git rm file并且git commit -m 二是誤刪想恢復(fù)可以用 git checkout --file或者git restore file

  1. 創(chuàng)建SSH key 將GitHub作為自己的remote端服務(wù)器
    第一步:在用戶主目錄下,查看有么有.ssh目錄,再看看這個目錄下有么有SSH Key秘鑰對id_rsa和id_rsa.pub兩個文件
    第二步 如果有進(jìn)入下一步,沒有打開Sell(Windows打開Git Bash),創(chuàng)建SSH Key;$ ssh-keygen -t rsa -C "youremail@example.com"
    代碼參數(shù)含義:
    -t 指定密鑰類型,默認(rèn)是 rsa ,可以省略。
    -C 設(shè)置注釋文字,比如郵箱。
    -f 指定密鑰文件存儲文件名。

    以上代碼省略了 -f 參數(shù),因此,運(yùn)行上面那條命令后會讓你輸入一個文件名,用于保存剛才生成的 SSH key 代碼,如:

Generating public/private rsa key pair.
# Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press enter]

當(dāng)然,你也可以不輸入文件名,使用默認(rèn)文件名(推薦),那么會生成id_rsa(私鑰不能泄露出去)和id_rsa.pub(公鑰,可以放心地告訴任何人)兩個秘鑰文件


接著又會提示你輸入兩次密碼(該密碼是push文件的時候要輸入的密碼而不是gihub管理者的密碼)當(dāng)然,也可以不輸入密碼,直接按回車。那么在push的時候就不需要輸入密碼,直接提交到GitHub上
第三步:添加SSH Key到github上面去
登上GitHub,打開Settings, SSh and GPG keys頁面然后,點(diǎn)擊new SSH Key ,天上任一Title,在Key文本框里把id_rsa.pub的內(nèi)容復(fù)制到這里。
為什么GitHub需要SSH Key呢?因?yàn)镚itHub需要識別出你推送的提交確實(shí)是你推送的,而不是別人冒充的,而Git支持SSH協(xié)議,所以,GitHub只要知道了你的公鑰,就可以確認(rèn)只有你自己才能推送。
在github上創(chuàng)建一個倉庫,把本地倉庫的內(nèi)容推送到GitHub倉庫git push 倉庫名 分支
git remote add origin git@github.com:hwb5522/learn.git
git push -u origin master以后只需要git push origin master
在github克隆遠(yuǎn)程倉庫git clone
git clone git@github.com:hwb5522/gitskills.git
要克隆一個倉庫,首先必須知道倉庫的地址,然后使用git clone命令克隆。

  1. 分支
    查看分支git branch
    創(chuàng)建分支git branch <name>
    切換分支git checkout <name>或者git switch <name>
    創(chuàng)建+切換分支:git checkout -b <name>或者git switch -c <name> 合并某分支到當(dāng)前分支git merge <name> 刪除分支:git branch -d <name>`
    解決合并沖突:就是把Git合并失敗的文件手動編輯為我們希望的內(nèi)容,再提交。
    用git log --graph命令可以看到分支合并圖。

git log --graph --pretty=oneline --abbrev-commit


通常,合并分支時,如果可能,Git會用Fast forward模式,但這種模式下,刪除分支后,會丟掉分支信息。

如果要強(qiáng)制禁用Fast forward模式,Git就會在merge時生成一個新的commit,這樣,從分支歷史上就可以看出分支信息。
$ git merge --no-ff -m "merge with no-ff" dev


git stash把當(dāng)前工作現(xiàn)場“儲藏”起來,等可以以后恢復(fù)現(xiàn)場后繼續(xù)工作
git stash list 查看“儲藏”的工作現(xiàn)場
恢復(fù)方法:git stash apply恢復(fù),在用git stash drop 刪除;另一種是:git stash pop 恢復(fù)的同事吧stash內(nèi)容也刪除了

  1. 修復(fù)bug
    通常創(chuàng)建新的bug分支進(jìn)行修復(fù),然后合并,最后刪除分支;
    當(dāng)手頭工作沒有完成時,先把工作現(xiàn)場git stash一下,然后去修復(fù)bug,修復(fù)后,再git stash pop,回到工作現(xiàn)場;
    在master分支上修復(fù)的bug,想要合并到當(dāng)前dev分支,可以用git cherry-pick <commit>命令,把bug提交的修改“復(fù)制”到當(dāng)前分支,避免重復(fù)勞動。(commit為修改bug的分支提交修改的commit id)

  1. Feature分支
    開發(fā)一個新功能最好新建一個分支,如果要丟棄一個沒有被合并過的分支,可以通過git branch -D <name> 強(qiáng)行刪除。

  1. 多人協(xié)作
    當(dāng)你從遠(yuǎn)程倉庫克隆時,實(shí)際上Git自動把本地的master分支和遠(yuǎn)程的master分支對應(yīng)起來了,并且,遠(yuǎn)程倉庫的默認(rèn)名稱是origin。
    要查看遠(yuǎn)程庫的信息,用git remote或者用git remote -v顯示更詳細(xì)的信息
    推送分支:把該分支上的所有本地提交推送到遠(yuǎn)程庫,推送時要指定分支這樣,Git就會把該分支推送到遠(yuǎn)程庫對應(yīng)的遠(yuǎn)程分支上git push origin master
    如要推送其他分支,比如dev
git push origin dev

從遠(yuǎn)程庫clone時,默認(rèn)情況下,只能看到本地的master分支。如果要在dev分支上開發(fā)就必須創(chuàng)建遠(yuǎn)程的origin的dev分支到本地,使用命令git checkout -b dev origin/dev
現(xiàn)在就可以在dev上繼續(xù)修改然后把dev分支push到遠(yuǎn)程


  1. 標(biāo)簽管理
  • 命令git tag <tagname>用于新建一個標(biāo)簽,默認(rèn)為HEAD,也可以指定一個commit id;
  • 命令git tag -a <tagname> -m "blablabla..."可以指定標(biāo)簽信息;
  • 命令git tag可以查看所有標(biāo)簽。
  • 命令git show <tagname> 查看標(biāo)簽的信息

  • 命令git push origin <tagname>可以推送一個本地標(biāo)簽;
  • 命令git push origin --tags可以推送全部未推送過的本地標(biāo)簽;
  • 命令git tag -d <tagname>可以刪除一個本地標(biāo)簽;
  • 命令git push origin :refs/tags/<tagname>可以刪除一個遠(yuǎn)程標(biāo)簽。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容