git重要命令

sudo apt-get install git       安裝


//設置,都是GitHub的用戶名和註冊郵箱
git config --global user.name "Your Name"
git config --global user.email "email@example.com"






//建立版本庫
git init
//文件添加到版本庫
git add filename
//把文件提交到倉庫
git commit -m "wrote a readme file"      //冒號裏的信息只是本身加的提示信息,不會放到文件裏;最後一段字符,你輸入的是什麼,放進去就是什麼。





//查看文件狀態,是否被修改
git status
//查看文件被改了什麼
git diff    //只能查看工做區的修改狀況,要查看工做區文件和加入到暫存取的修改的不一樣之處用 git diff HEAD -- readme.txt




//查看文件修改日誌記錄
git log    
//日誌記錄文件一行顯示
git log --pretty=oneline    //顯示的最開頭的字符串就是commit id,id記錄前面7個就夠了
//版本回退(回退是從分支master放到stage)
git reset --hard HEAD^      //一個^表示上一個版本,^^上兩個版本,多個能夠 HEAD~100(上100個版本)
git reset --hard 17fc687878b872dbe0957609f96a35337bf28f8d    //不須要這麼長,只要前面7個數字就能夠了
git reset HEAD readme.txt
//查看歷史命令
git reflog
在一個目錄下,使用git init命令把當前目錄初始化,他會在這個目錄下新建一個隱藏的.git文件
git版本控制庫分兩個部分, 一個是工做區(Working Directory), 好比咱們如今初始化的目錄下就是
                     一個是版本庫(Repository)
   //git add把文件放到stage,git commit把stage裏的文件所有提交到分支master
 
Git比其餘版本控制系統設計得優秀,由於Git跟蹤並管理的是修改,而非文件。

git diff HEAD -- readme.txt 命令能夠查看工做區和版本庫裏面最新版本的區別



//撤銷修改,丟棄工做區的修改
git checkout -- file     //git checkout 就是用版本庫裏的版本替換工做區的版本
場景1:當你改亂了工做區某個文件的內容,想直接丟棄工做區的修改時,用命令git checkout -- file。
git checkout -- filename
場景2當你不但改亂了工做區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了場景1,第二步按場景1操做。
git reset HEAD filename
git checkout -- filename
場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節,不過前提是沒有推送到遠程庫。
git reset --hard "commit id"   (HEAD~前幾回,用這個命令一次就恢復了)
git reset HEAD filename
git checkout -- filename
//從版本庫中刪除文件
git rm filename  
第1步:建立SSH Key。在用戶主目錄下,看看有沒有.ssh目錄,若是有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件,若是已經有了,可直接跳到下一步。若是沒有,打開Shell(Windows下打開Git Bash),建立SSH Key:
ssh-keygen -t rsa -C "youremail@example.com"
用戶主目錄裏找到.ssh目錄,裏面有id_rsa和id_rsa.pub兩個文件,這兩個就是SSH Key的祕鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰
第2步: 登錄GitHub,打開「Account settings」,「SSH Keys」頁面:
而後,點「Add SSH Key」,填上任意Title,在Key文本框裏粘貼id_rsa.pub文件的內容
爲何GitHub須要SSH Key呢?由於GitHub須要識別出你推送的提交確實是你推送的,而不是別人冒充的,而Git支持SSH協議,因此,GitHub只要知道了你的公鑰,就能夠確認只有你本身才能推送。
固然,GitHub容許你添加多個Key。假定你有若干電腦,你一下子在公司提交,一下子在家裏提交,只要把每臺電腦的Key都添加到GitHub,就能夠在每臺電腦上往GitHub推送了。
最後友情提示,在GitHub上免費託管的Git倉庫,任何人均可以看到喔(但只有你本身才能改)。
添加遠程庫
已經在本地建立了一個Git倉庫後,又想在GitHub建立一個Git倉庫,而且讓這兩個倉庫進行遠程同步,這樣,GitHub上的倉庫既能夠做爲備份,又可讓其餘人經過該倉庫來協做,真是一舉多得。首先,登錄GitHub,而後,在右上角找到「Create a new repo」按鈕,建立一個新的倉庫:repo-name
git remote add origin git@github.com:meihao1203/learngit.git   
//本地倉庫與剛纔新建的倉庫關聯
遠程庫的名字就是origin,這是Git默認的叫法,也能夠改爲別的,可是origin這個名字一看就知道是遠程庫。

若是在GitHub創建倉庫的時候帶上了README.md,push會失敗,出現錯誤的主要緣由是github中的README.md文件不在本地代碼目錄中,要執行下面這個命令
git pull --rebase origin master
git pull origin master
  //個人windows電腦和Linux上都在往項目裏push代碼,這就形成了兩個push的時候master分支不一致,這是後就要用這個命令進行分支合併,再push
//這個是直接用遠程倉庫的分支合併本身本地的,這樣操做後本地就和遠程同樣,可是不安全
git fetch origin master   //首先從遠程的origin的master主分支下載最新的版本到origin/master分支上
git log -p master origin/master   //比較本地的master分支和origin/master分支的差異
git merge origin/master   //合併


//推送
因爲遠程庫是空的,咱們第一次推送master分支時,加上了-u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在之後的推送或者拉取時就能夠簡化命令。
git push -u origin master    //如今github上的東西就和咱們本地的同樣了
git push origin master   //之後push只要這個命令
要關聯一個遠程庫,使用命令git remote add origin git@server-name:path/repo-name.git
關聯後,使用命令git push -u origin master第一次推送master分支的全部內容;
此後,每次本地提交後,只要有必要,就可使用命令git push origin master推送最新修改;
從遠程庫克隆
登錄GitHub,建立一個新的倉庫,名字叫gitskills:
git clone git@github.com:meihao1203/gitskills.git
//從網頁上下載
https://github.com/meihao1203/gitskills


git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/meihao1203/gitskills.git
git push -u origin master
相關文章
相關標籤/搜索