一、下載Windows版的Git:msysgit;官方下載地址:http://msysgit.github.io,安裝選定要安裝的目錄(路徑杜絕中文),剩下的按照默認安裝便可,參考:GIt安裝教程 。html
二、安裝完成後,在開始菜單裏找到「Git」->「Git Bash」,彈出一個相似命令行的窗口;或是在CMD命令提示符下,輸入git回車能夠看到不少提示,就說明Git安裝成功!python
三、初始化目錄 生成隱藏文件 .git 負責版本的保存git
mu@mu-PC MINGW64 /c/guotianbao $ git init Initialized empty Git repository in C:/guotianbao/.git/
四、安裝完成後,由於Git是分佈式版本控制系統,因此,每一個機器都必須自報家門:你的名字和Email地址,在命令行輸入: github
mu@mu-PC MINGW64 /c/guotianbao (master) $ git config --local user.name 'guotianbao' mu@mu-PC MINGW64 /c/guotianbao (master) $ git config --local user.email 'gmu1592618@gmail.com'
-1.查看狀態服務器
$ git status //查看工做區狀態 $ git diff //若git status提示有文件被修改,則可執行此命令查看修改的內容
執行git status命令會看到兩部分,上邊是文件提交的暫存區,下邊是文件所在的工做區;在當前工做區,而沒有提交到暫存區的文件顏色是紅色的,提交到暫存區的文件是綠色的,若是工做檯面是乾淨的話,證實全部文件已提交到倉庫。ssh
-2.提交數據分佈式
$ git add . #提交全部文件 $ git commit -m "自定義提交信息" #提交註釋
$ git add . 把文件從工做區提交到暫存區ide
$ git commit 把暫存區的全部內容提交到當前分支(倉庫)fetch
-3.查看文件信息網站
$ git ls-tree head #查看版本(分支)中全部的文件 $ git ls-files -s #查看暫存區和版本中全部文件的詳細信息 $ git ls-files #僅查看全部的文件名
-4.查看全部日誌
$ git log //顯示操做日誌 $ git log --pretty=oneline //顯示精簡信息 $ git reflog //查看全部的日誌
-5.回滾版本
#方式一: (三步操做) $ git reset --soft 版本號 #從分支回到暫存區 $ git reset head 文件 #從暫存區回到修改過的內容 $ git check out 文件 #從修改過的文件到原文件 #方式二: (兩部步操做) $ git reset --mix 版本號 #從分支回到修改過的內容 == git reset 版本號 $ git check out 文件 #從修改過的文件到原文件 #方式三: (一部步操做) $ git reset --hard 版本號 #從分支回到原文件
-6.刪除文件
$ git rm test.txt $ git commit -m "remove test.txt"
示例一:
1. 建立msg.py 寫入短信功能代碼並提交到分支
mu@mu-PC MINGW64 /c/guotianbao (master) $ git add . mu@mu-PC MINGW64 /c/guotianbao (master) $ git commit -m '開發短信功能' [master (root-commit) 99afeac] 開發短信功能 1 file changed, 1 insertion(+) create mode 100644 msg.py
2.回滾到無短信功能的版本
mu@mu-PC MINGW64 /c/guotianbao (master) $ git log commit 99afeacb8e856c7c4fd66cde1d633923703775f7 (HEAD -> master) Author: guotianbao <gmu1592618@gmail.com> Date: Sat Nov 4 08:09:18 2017 +0800 開發短信功能 mu@mu-PC MINGW64 /c/guotianbao (master) $ git reset --hard 99afeacb8e856c7c4fd66cde1d633923703775f7 HEAD is now at 99afeac 開發短信功能
3.直接再次回滾到有短信功能的版本
mu@mu-PC MINGW64 /c/guotianbao (master) $ git reflog 99afeac (HEAD -> master) HEAD@{0}: reset: moving to 99afeacb8e856c7c4fd66cde1d633923703775f7 39b29ba HEAD@{1}: commit: 增長aaa 99afeac (HEAD -> master) HEAD@{2}: reset: moving to 99afeacb8e856c7c4fd66cde1d633923703775f7 99afeac (HEAD -> master) HEAD@{3}: commit (initial): 開發短信功能 mu@mu-PC MINGW64 /c/guotianbao (master) $ git reset --mix 39b29ba Unstaged changes after reset: M msg.py mu@mu-PC MINGW64 /c/guotianbao (master) $ git checkout msg.py # 底下兩部操做等於 git reset --hard 版本號 git reset --mix 版本號 git checkout 文件名
示例二:
stash 將工做區作的全部修改(作到一半的操做)保存到一個臨時地方
#- 正在寫代碼(a.txt),發現線上代碼(a.txt)有bug,先把如今代碼保存到臨時空間 #- 修改完bug(a.txt)提交,再次取回以前保存的文件,這時發現以前保存的代碼和提交的bug是同一個文件,有衝突 #- 這時(a.txt)中二者都保留,手動保留想要的代碼,再次提交
#臨時保存如今寫的代碼 git stash #去修改出現bug再次提交 bug....# 解決bug的過程 git add . git status git commit -m "修改完bug" git status #切回以前保存的狀態 git stash pop -若是修改的文件和保存的文件是同一個文件,則此文件中會保留二者的代碼,需手動改回本身須要的代碼 - 若是不是同一個文件,則直接提交 git stash pop git add . git status git commit -m "bug上又一次修改"
dev #負責開發新功能 bug #負責修復線上的bug master #線上代碼
###分支 #dev分支 git branch #查看全部分支 * master #前面有*號表明是當前分支 git branch dev #建立dev分支 git branch #查看全部分支 dev * master #前面有型號表明是當前分支 git checkout dev #切換到dev分支 git branch * dev #當前分支 master #bug分支 git branch bug #給master建立一個bug分支 git branch #查看當前分支 bug dev * master #當前所在分支 git checkout bug #切換到bug分支 git branch * bug dev master #修改完bug 把bug分支和master合併 git checkout master #切換到master分支,而後合併bug分支 git merge bug # 刪除分支 git branch -d bug #只刪除完成合並以後的dev分支 git branch -D bug #強制刪除dev分支
因爲本地Git倉庫和GitHub倉庫之間的傳輸是經過SSH加密的,因此,須要以下設置:
第1步:建立SSH Key。在用戶主目錄下(例如:C:\Users\Administrator\),看看有沒有.ssh目錄,若是有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件,若是已經有了,可直接跳到下一步。若是沒有,打開Shell(Windows下打開Git Bash),建立SSH Key:
$ ssh-keygen.exe //建立SSH key 【公鑰和私鑰,鏈接省卻了用戶名密碼的輸入】git窗口下,直接執行ssh-keygen.exe,默認往下執行,而後把公鑰複製到github上
若是一切順利的話,能夠在用戶主目錄裏找到.ssh目錄,裏面有id_rsa和id_rsa.pub兩個文件,這兩個就是SSH Key的祕鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,能夠放心地告訴任何人。
第2步:登錄GitHub,打開「settings」,「SSH and GPG Keys 」頁面,而後,點「New SSH Key」,填上任意Title,在Key文本框裏粘貼id_rsa.pub文件的內容,最後點擊「Add Key」按鈕完成。
說明:爲何GitHub須要SSH Key呢?由於GitHub須要識別出你推送的提交確實是你推送的,而不是別人冒充的,而Git支持SSH協議,因此,GitHub只要知道了你的公鑰,就能夠確認只有你本身才能推送。固然,GitHub容許你添加多個Key。
假定你有若干電腦,你一下子在公司提交,一下子在家裏提交,只要把每臺電腦的Key都添加到GitHub,就能夠在每臺電腦上往GitHub推送了。
添加遠程倉庫
一、登陸GitHub網站,並按網站要求建立一個新的倉庫;
二、根據GitHub網站提示,能夠從這個倉庫克隆出新的倉庫,也能夠把一個已有的本地倉庫與之關聯,而後,把本地倉庫的內容推送到GitHub倉庫。
三、本地倉庫與GitHub上相應的倉庫創建關聯,代碼以下:(git@github.com:tianbaoo/test.git爲我新建的倉庫路徑)
$ git remote add origin git@github.com:tianbaoo/test.git
添加後,遠程庫的名字就是origin,這是Git默認的叫法,也能夠改爲別的,可是origin這個名字一看就知道是遠程庫。
四、把本地庫的內容推送到遠程庫上,用git push命令,實際是把當前分支master推送到遠程。
$ git push -u origin master
因爲遠程庫是空的,咱們第一次推送master分支時,加上了-u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在之後的推送或者拉取時就能夠簡化命令(不用帶-u參數)。固然也能夠不寫!就須要你手動輸入yes
當你第一次使用Git的clone或者push命令鏈接GitHub時,會獲得一個警告,這是由於Git使用SSH鏈接,而SSH鏈接在第一次驗證GitHub服務器的Key時,須要你確認GitHub的Key的指紋信息是否真的來自GitHub的服務器,輸入yes回車便可。
五、經過GitHub上的倉庫來克隆出新的本地倉庫(能夠在任意一個文件夾下,建議最好在一個固定的盤下方便於管理),要克隆一個倉庫,首先必須知道倉庫的地址,而後使用 git clone命令克隆從遠程庫克隆到本地(說白了就是下載版本庫)。代碼以下:
$ git clone git@github.com:tianbaoo/test.git //應用場景:切換辦公地點:家和公司,第一次都能從遠程庫上克隆而後進行開發!
注意點:執行clone命令,實質上內部已經完成了初始化git庫和本地與遠程庫鏈接的過程(內部config文件,已寫好命名,同時遠程庫名字默認爲origin)!
也許還注意到,GitHub給出的地址不止一個,還能夠用 https://github.com/tianbaoo/test.git 這樣的地址。實際上,Git支持多種協議,默認的git://使用ssh,但也可使用https等其餘協議。使用https除了速度慢之外,還有個最大的麻煩是每次推送都必須輸入口令,可是在某些只開放http端口的公司內部就沒法使用ssh協議而只能用https。Git支持多種協議,包括https,但經過ssh支持的原生git協議速度最快。
本地和遠程倉庫
#本地代碼推送到遠程倉庫 git remote add origin git@github.com:tianbaoo/test.git #設置遠程倉庫並設置別名origin git checkout master #把當前分支切換到master分支 git push origin master #推送到master分支 #從遠程倉庫拉代碼 git clone git@github.com:tianbaoo/test.git cd test/ git branch #只下載master分支 #* master git branch -a #查看全部分支 有遠程的分支 * master remotes/origin/HEAD -> origin/master remotes/origin/dev remotes/origin/master git branch dev origin/dev #拉遠程分支的代碼 git branch dev * master
現實場景:
在公司進行開發代碼,代碼沒有寫完,想要回家加班繼續寫,而後應該把公司的代碼push到服務器上
$ git remote add origin https://github.com/tianbaoo/test.git #給本身的遠程庫起origin別名 $ git checkout master # 切換到master分支 $ git push origin master # 把master分支推送到GitHub上
回到家之後先把代碼clone下來,進行修改後,再push到遠程倉庫上
$ git clone https://github.com/tianbaoo/test.git #去GitHub上把代碼複製下來 $ cd test/ #進入test文件夾 $ git branch dev origin/dev #建立一個跟遠程倉庫同名的dev分支 $ git checkout dev #切換到dev分支下 #寫代碼. . . . . . . . . $ git add . #加到暫存區 $ git commit -m '自定義提交信息' #加到分支 $ git push origin dev #把dev分支提交到遠程倉庫orgin
公司: git checkout dev #選其中一個 git fetch origin dev #從遠程拉到本地的倉庫 還須要 git reset --hard 文件 git pull origin dev #從遠程拉到原文件 #----------提交成功完成----------- 功能11 git add . git commit ... git push origin dev #----------忘記提交,下班回家------- 功能12: git add . git commit ... git push origin dev 回家: git branch dev git pull origin dev 功能13: git add . git commit ... git push origin dev #如今處於功能12沒有提交的狀態 #先拉代碼查看功能13和功能12是否有衝突,若是有衝突,手動修改 不能直接提交 公司: 獲取代碼, git pull origin dev 無衝突:過 有衝突: 手動解決 git add . git commit -m '解決衝突'
情景:
第一步:在github上建立項目myblog,而後本地在blog目錄下啓動GIT執行命令git init
第二步:git add . 而後再次 git commit -am "第一次提交項目"
致使github上的版本里有文件和本地版本衝突,下面給出衝突緣由:
1 $ git push -u origin master 2 Username for 'https://github.com': tianbaoo 3 To https://github.com/tianbaoo/myblog.git 4 ! [rejected] master -> master (non-fast-forward) 5 error: failed to push some refs to 'https://github.com/tianbaoo/myblog.git' 6 hint: Updates were rejected because the tip of your current branch is behind 7 hint: its remote counterpart. Integrate the remote changes (e.g. 8 hint: 'git pull ...') before pushing again. 9 hint: See the 'Note about fast-forwards' in 'git push --help' for details.
解決方法:
git push -u origin master -f
上述問題僅會在第一次提交可能出現。
重點:對於多人協調開發時,提交也可能會出現衝突,由於別人可能已經比你更快的提交了,此時你只能把遠程的克隆下來,合併,解決衝突後再提交
git工做的通常流程:http:
/
/
blog.csdn.net
/
javyzheng
/
article
/
details
/
50311175