git經常使用命令(備忘)

從零開始配置一個github倉庫與本地同步:git

安裝git後,進行git全局配置:github

$ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"

本地選擇一個文件夾,在gitbash中執行git init命令,把這個目錄變成git能夠管理的倉庫ruby

建立SSH key:$ ssh-keygen -t rsa -C "youremail@example.com"bash

將.ssh目錄下的id_rsa.pub公鑰文件中的內容粘貼到GitHub Account settings頁面SSH Keys下的add ssh key中ssh

github上建立一個倉庫與本地關聯,如git remote add origin git@github.com:EllonDaris/py-projects.gitfetch

下一步,就能夠把本地庫的全部內容推送到遠程庫上: git push -u origin master,實際是把當前分支master推送到遠程,若是出現如下報錯:spa

$ git push origin master
To github.com:EllonDaris/py-projects.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'git@github.com:EllonDaris/py-projects.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.指針

由於在github上有一個readme.md文件,須要執行git pull --rebase origin master把這個文件更新下來,接着再git push -u origin mastercode

以後提交只要經過命令git push origin masterrem

git clone + 倉庫的ssh地址便可克隆到本地

----------------------------------------------------------------------------------------------------------------------------------------------

下面是一些經常使用命令:

git add <filename>添加須要提交的文件,也可git add  .   所有提交

git diff <filename>查看修改的具體內容

git status查看倉庫當前狀態

git commit -m "..." 提交時備註修改的內容

git log (--pretty==oneline )查看歷史記錄

git reset --hard HEAD^  回退到上一版本(git中,HEAD表示當前版本,HEAD^表示上個版本,……以此類推,前100個版本HEAD~100)

或者git reset --hard +(commit id)

git reflog 記錄每一次命令,能夠用來查詢每一個版本的commit id

整個目錄是一個工做區,.git是版本庫,工做區中的文件被add時,就是被添加到stage(即暫存區),commit後就被提交到當前分支,HEAD指針指向master分支中須要的版本

git checkout -- file 讓這個文件回到最近一次commit或add時的狀態

當一個修改被add但未commit時,能夠用 git reset HEAD filename能夠把暫存區的修改撤銷掉從新放回工做區,再git checkout --filename丟棄工做區的修改

工做區中的文件被刪除後,須要git rm filename 並 git commit 進行同步,若是是誤刪,用上面的命令 check out -- filename

----------------------------------------------------------------------------------------------------------------------------------------------

下面是別人整理的一些心得,一併放上來了。

從歷史的提交創建新分支的方法: 方法一: checkout到歷史提交,而後checkout -b。 方法二: reset到歷史提交,checkout -b,而後再reset到原來的版本。 方法三: git branch <branch> <start point>

將某個歷史版本所有拉到工做區和暫存區: 方法一: 可能的需求是爲了將過去刪除掉的修改從新應用到最新的版本,這時能夠先回到歷史版本處創建分支,而後回到原來的最新的版本,進行merge分支的操做。 方法二: reset加上hard參數到須要的歷史版本,而後再reset加上soft參數回來。

將歷史版本的某文件版本拉到當前工做區或者暫存區進行處理: 方法一: git reset HEAD~2 foo.py,直接拉到暫存區。 方法二: git checkout HEAD~2 foo.py,拉到工做區和暫存區。

已經有添加到暫存區的文件修改,以後又進行了修改。想要都撤銷掉,變爲和倉庫中的版本相同(倉庫覆蓋工做和暫存): 方法一:一、git reset HEAD file 清空暫存區的提交,變爲和倉庫中的版本相同。二、git checkout -- file 以暫存區爲藍本,覆蓋掉工做區。 方法二:git checkout HEAD -- file 。

已經添加到暫存區的修改以後又進行了修改,想要都撤銷掉,變爲和倉庫中的版本相同(倉庫覆蓋工做和暫存): 方法一:git reset --hard HEAD 重設HEAD,hard參數覆蓋工做區和暫存區。 方法二:強制切換到其餘分支丟棄更改,而後再切回來。

撤銷當前工做區的文件修改,變爲和暫存區相同(暫存覆蓋工做): 方法一:git checkout -- file 暫存區覆蓋工做區(以暫存區爲藍本,覆蓋掉工做區)。

撤銷添加到暫存區的文件修改,將修改退回到工做區(暫存先覆蓋工做,而後倉庫覆蓋暫存): 方法一:一、git checkout -- file 以暫存區爲藍本,覆蓋掉工做區。 二、git reset HEAD file 清空暫存區的提交,變爲和倉庫中的版本相同。

清空暫存區文件修改: 方法一:git reset -- file 清空暫存區的文件修改。

清空暫存區: 方法一:git reset HEAD file 清空暫存區。

checkout文件層面的操做: 主要對暫存區和工做區起做用,通常有暫存區覆蓋工做區的行爲特徵。

reset文件層面的操做: 主要對暫存區起做用。

相關文章
相關標籤/搜索