您好,登錄后才能下訂單哦!
apt-get install git #Ubuntu 下安裝git yum install git # Centos下安裝git #安裝git之后簡單的設置 git config --global user.name "joedlut" git config --global user.email "huanghundejiush@163.com"
創建一個版本庫(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_id
git的區域分為工作區和暫存區,我們對于文件的修改都是在工作區內完成的,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選項顯示詳細信息
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。