git的常用的使用方法
創建一個版本庫(git倉庫)
mkdir?/home/joedlut/learngit?#常見一個目錄 cd?/home/joedlut/learngit git?init?#?創建版本庫,即讓該目錄下的文件可以被git管理如何向倉庫中添加文件?
cd?/home/joedlut/learngit?#?要想讓git管理文件,必須將文件放到git倉庫中 vim?readme.txt?#?添加兩行數據 git?add?readme.txt?#將文件添加到倉庫中 git?commit?-m?"add?a?readme.txt"?#將文件提交到倉庫中?-m指定提交的說明,建議不要省略 #?可以一次添加多個文件,然后一次性提交?如下 git?add?file1.txt git?add?file2.txt?file3.txt git?commit?-m?'add?three?files'查看倉庫的狀態
git?status?#可以看到那些文件做出了修改但是沒有提交到版本庫查看倉庫的一個文件具體改動了什么
git?diff?readme.txt??#格式和linux下的diff命令顯示的內容一樣將一個文件的修改提交到版本庫 (分兩步 add 與commit)
git?add?readme.txt?#注意?添加修改同樣使用的是add git?commit?-m?'modified?the?content?of?readme.txt'查看版本庫的提交記錄(方便做后面的回退操作)
git?log?#由近及遠的顯示提交日志 git?log?--pretty=oneline?#?同樣顯示提交日志,但是輸出信息相比git?log得到了簡化利用git可以回退到版本庫在歷史中的任意一個版本,git使用HEAD表示當前版本,使用HEAD^表示上一個版本,使用HEAD^^表示上上一個版本 那如何會退到上一個版本呢
git?reset?--hard?HEAD^如何會退到歷史的某個版本后, 又想再回到原來新的版本,此時要想回到原先“未來”的版本,必須知道當時未來版本的提交號 也是就是commit_id 查看這個commit_id可以使用reflog
git?reflog?#這個命令可以顯示每一次git執行的命令 git?reset?--hard?commit_id?#?這個id是你想回到的版本的commit_idgit的區域分為工作區和暫存區,我們對于文件的修改都是在工作區內完成的,git add做的事情就是將新建的文件后者文件的修改添加到暫存區,文件只有在暫存區下才可以被跟蹤管理,git commit做的事情就是將暫存區的修改一次性提交到分支。由此可見,修改必須添加到(git add)暫存區中才可以被提交
查看工作區與版本庫里最新版本的區別
git?diff?HEAD?--?readme.txt如何撤銷文件的修改?分為兩種情況
第一種 修改了文件但是沒有使用git add將文件的修改添加到暫存區的
git?checkout?--?readme.txt?#?注意不要省略--??否則會變成切換到另一個分支的命令第二種 已經將文件的修改使用git add提交到了暫存區
git?reset?HEAD?readme.txt?#撤銷暫存區的修改 git?checkout?--?readme.txt如何從版本庫中刪除一個文件?注意,從版本庫中刪除一個文件,就無法恢復了
git?rm?test.txt git?commit?-m?'remove?test.txt'如何僅僅是從工作區中刪除了一個文件,而沒有從版本庫中刪除一個文件,則可以恢復這個文件
git?checkout?--?test.txt如何連接到git倉庫?
ssh-keygen?-t?rsa?-C?'huanghun@163.com' cd??~/.ssh 將公鑰id_rsa.pub添加到github端將本地庫與遠程庫相關聯
git?remote?add?origin?git@github.com:joedlut/learngit.git?#origin是遠程庫的名字,建議是origin #假設遠程庫上 git?push?-u?origin?master?#將本地庫的內容推送到遠程庫,注意,第一次推送要使用-u選項,-u會將本地的master與遠程master關聯 git?push?origin?master?#?之后每次本地做了修改,可以通過該命令實現本地庫與遠程庫的同步假設github有個遠程庫gitskills 如何將該庫克隆到本地?
git?clone?git@github.com:joedlut/gitskills.git創建一個分支dev,,并且切換到該分支
git?checkout?-b?dev?#相當于兩條命令git?branch?dev?;?git?checkout?dev查看分支
git?branch?#查看所有分支,當前分支會帶有一個*號切換到master分支
git?checkout?master將dev分支合并到master分支
git?merge?dev?#?默認會采用fast-forward的方式合并刪除dev 分支
git?branch?-d?dev當master分支與另一個分支(feature1)都有git add 跟git commit操作的時候,合并分支的時候會發生沖突而失敗,此時應該解決沖突之后再執行git add 和git commit,然后再執行git branch -d ?feature1
查看分支的合并情況
git?log?--graph?--pretty=oneline?
git merge默認會采用fast-forward方式,此時會丟失分支信息(即使用git log查看的時候不會顯示分支的合并),要想保存分支信息,可以使用--no-ff選項
git?merge?-no-ff?feature1 git?log?--graph?--pretty=oneline?--abbrev-commit當在dev分支工作時候,需要臨時修改bug的時候,可以使用git stash保存現場后,在切換到master分支,然后在創建bug分支,修改bug后再返回到master分支,合并bug分之后,返回dev分支后,在使用git stash pop 恢復現場,完整過程如下
git?stash??#?dev分支 git?checkout?master git?checkout?-b?bug101 ############?修改bug?git?add?git?commit....############### git?checkout?master git?merge?--no-ff?bug101 git?checkout?dev git?stash?list?#?查看保存的現場信息 git?stash?pop?#?恢復現場,并且刪除現場信息,即通過git?stash?list看不到任何內容如果需要添加一個新功能,需要創建一個feature分支,當在該feature分支上執行git add和git commit,沒有執行合并(git merge)的話,無法通過git branch -d feature 刪除該分支,若要強行刪除該分支,需要執行
git?branch?-D?feature?#強行刪除該分支?查看遠程庫的信息
git?remove?-v?#?-v選項顯示詳細信息轉載于:https://blog.51cto.com/joedlut/1911913
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的git的常用的使用方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 赵明:荣耀Magic V2助眠显示开启后
- 下一篇: 成都全域禁飞“低慢小”航空器,管控时段