版本庫(Repository)
工作區有一個隱藏目錄.git
,這個不算工作區,而是Git的版本庫。
Git的版本庫裏存了很多東西,其中最重要的就是稱爲stage(或者叫index)的暫存區,還有Git爲我們自動創建的第一個分支master
,以及指向master
的一個指針叫HEAD
一個git倉庫管理一個工程
git init //創建一個倉庫,在工程目錄下有一個隱藏的目錄.git
git add 文件 //提交到暫存區
git add . //在工程目錄下git add . 就可以提交所有修改的和新建的數據暫存區
git commit -m "說明信息" //把暫存區內容提交到當前分支
git status //查看狀態
git diff 文件 //查看文件修改,git diff比較文件被git add之前有無差異
git diff --cached 或 git diff --cached //查看已暫存的將要添加到下次提交裏的內容的變化
git log //查看日誌
git log --pretty=oneline
git log --graph --pretty=oneline --abbrev-commit //查看日誌圖表
git log -p -2 //-p 選項展開顯示每次提交的內容差異,-2 則僅顯示最近的兩次更新:
git reflog //查看所有提交的log,可以查看每次變動的版本號,方便查閱
git reset --hard HEAD^ //回退到上一個版本
git reset --hard HEAD^^ //回退到上上個版本
git reflog //查看執行過的命令
git checkout -- 文件 //回退到上一次修改
git checkout . //這條命令把 當前目錄所有修改的文件 從HEAD中籤出並且把它恢復成未修改時的樣子
git reset --hard 文件號 //指定回退到版本號對應的文件中去
git reset HEAD 文件 //可以回退版本,也可以把暫存區的修改回退到工作區。用HEAD,表示最新的版本
git rm 文件 //確實要從版本庫中刪除該文件,刪除完再git commit
撤銷修改
場景1:當你改亂了工作區某個文件的內容,想直接丟棄工作區的修改時,用命令git checkout -- file。
場景2:當你不但改亂了工作區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset HEAD <file>,就回到了場景1,第二步按場景1操作。
場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,前提是沒有推送到遠程庫,先用git reset -- hard HEAD^
創建遠程倉庫
1.git config --global user.name "Your Name"
2. git config --global user.email "[email protected]"
3.ssh-keygen -t rsa -C "[email protected]" //生成SSH密鑰,一路回車,使用默認值即可,在用戶主目錄裏找到.ssh
目錄,裏面有id_rsa
和id_rsa.pub
兩個文件,這兩個就是SSH Key的祕鑰對,id_rsa
是私鑰,不能泄露出去,id_rsa.pub
是公鑰;登陸GitHub,打開“Account settings”,“SSH Keys”頁面:然後,點“Add SSH Key”,填上任意Title,在Key文本框裏粘貼id_rsa.pub
文件的內容
4. git remote add origin 遠程庫URL //URL時是gihub中的SSH,添加新的遠程倉庫
5. git push origin master //遠程提交 第一次提交用git push -u origin master
6.git remote set-url origin 你的遠端地址 // 設置遠端倉庫地址
7.git remote add <shortname> <url> //添加一個新的遠程 Git 倉庫
eg:git remote add pg https://github.com/paul/tic //pg爲遠程倉庫名
8.git remote -v //查看遠程倉庫
刪除遠程倉庫
git remote rm origin //刪除遠程 Git 倉庫
git clone 遠程庫URL //克隆一個本地庫,從遠程倉庫中把工程克隆到本地電腦
git remote //查看遠程庫的信息
git remote show [remote-name] //查看某一個遠程倉庫的更多信息
git remote rename //去修改一個遠程倉庫的簡寫名 git remote rename pg pvul //將 pg 重命名爲 pvul
git remote rm [remote-name] //刪除指定的遠程倉庫
分支操作
git checkout -b dev //創建並切換到dev分支,分支名叫“dev”
注:要留意你的工作目錄和暫存區裏那些還沒有被提交的修改,它可能會和你即將檢出的分支產生衝突從而阻止 Git 切換到該分支。 最好的方法是,在你切換分支之前,保持好一個乾淨的狀態。
git checkout 分支名 //切換分支
git branch //查看當前分支
git branch 分支名 //創建分支
git merge 分支名 //合併指定分支到當前分支
git branch -d 分支名 //刪除分支
git branch -D 分支名 //刪除分支
git branch --set-upstream-to=origin/dev dev //指定本地dev分支與遠程origin/dev分支的鏈接,設置dev和origin/dev的鏈接
git pull //把最新的更新提交從遠程庫中抓下來
git pull origin(遠程倉庫名) master(分支名) //自動的抓取然後合併遠程分支到當前分支
git push [remote-name] [branch-name]
git push origin --delete [branch-name] //刪除遠程的一個分支
git merge --abort //終止合併衝突
git merge --no-ff -m "相關說明信息" 分支名 // --no-ff參數,表示禁用Fast forward
git stash // 把當前工作現場“儲藏”起來,等以後恢復現場後繼續工作
git stash list //查看工作現場
git stash pop //恢復工作現場同時把stash內容也刪了
將遠程分支的dev分支重命名爲deve分支步驟如下:
1.先刪除遠程分支: git push --delete origin dev
2.重命名本地分支: git branch -m dev deve
3.重新提交一個遠程分支: git push origin deve
標籤操作
git tag <name> //打一個新標籤 如:git tag v1.0
git tag //查看所有的標籤
git tag <name> commit id //給對應的commit id 打一個標籤。如:git tag v0.9 f52c633
git log --pretty=oneline //可以查看到標籤
git show <tagname> //查看標籤信息 如: git show v0.9
git tag -d <tagname> //刪除標籤,如:git tag -d v0.1
git push origin --delete tag <tagname> //刪除遠程的標籤
git push origin <tagname> //推送某個標籤到遠程
git push origin --tags //一次性推送全部尚未推送到遠程的本地標籤
刪除遠程標籤的步驟
1.git tag -d <tagname> //先刪除本地標籤
2.git push origin :refs/tags/<tagname> //在從遠程刪除
多人協作模式
首先,可以試圖用git push origin <branch-name>推送自己的修改;
如果推送失敗,則因爲遠程分支比你的本地更新,需要先用git pull試圖合併;
如果合併有衝突,則解決衝突,並在本地提交;沒有衝突或者解決掉衝突後,再用git push origin <branch-name>推送就能成功
重點說明:
如果因爲提交錯誤,可以git reset HEAD^ 回退到你要提交代碼時的工作區,重新git add 想要的文件 到暫存區,然後git commit -m "" 提交,然後git push -f origin dev(分支名) //強推覆蓋遠程分支。