(轉)git相關的基本操作都在此篇


Git 命令速查表

1、常用的Git命令

命令

簡要說明

git add

添加至暫存區

git add–interactive

交互式添加

git apply

應用補丁

git am

應用郵件格式補丁

git annotate

同義詞,等同於 git blame

git archive

文件歸檔打包

git bisect

二分查找

git blame

文件逐行追溯

git branch

分支管理

git cat-file

版本庫對象研究工具

git checkout

檢出到工作區、切換或創建分支

git cherry-pick

提交揀選

git citool

圖形化提交,相當於 git gui 命令

git clean

清除工作區未跟蹤文件

git clone

克隆版本庫

git commit

提交

git config

查詢和修改配置

git describe

通過里程碑直觀地顯示提交ID

git diff

差異比較

git difftool

調用圖形化差異比較工具

git fetch

獲取遠程版本庫的提交

git format-patch

創建郵件格式的補丁文件。參見 git am 命令

git grep

文件內容搜索定位工具

git gui

基於Tcl/Tk的圖形化工具,側重提交等操作

git help

幫助

git init

版本庫初始化

git init-db*

同義詞,等同於 git init

git log

顯示提交日誌

git merge

分支合併

git mergetool

圖形化衝突解決

git mv

重命名

git pull

拉回遠程版本庫的提交

git push

推送至遠程版本庫

git rebase

分支變基

git rebase–interactive

交互式分支變基

git reflog

分支等引用變更記錄管理

git remote

遠程版本庫管理

git repo-config*

同義詞,等同於 git config

git reset

重置改變分支“遊標”指向

git rev-parse

將各種引用表示法轉換爲哈希值等

git revert

反轉提交

git rm

刪除文件

git show

顯示各種類型的對象

git stage*

同義詞,等同於 git add

git stash

保存和恢復進度

git status

顯示工作區文件狀態

git tag

里程碑管理


2、對象庫操作相關命令

命令

簡要說明

git commit-tree

從樹對象創建提交

git hash-object

從標準輸入或文件計算哈希值或創建對象

git ls-files

顯示工作區和暫存區文件

git ls-tree

顯示樹對象包含的文件

git mktag

讀取標準輸入創建一個里程碑對象

git mktree

讀取標準輸入創建一個樹對象

git read-tree

讀取樹對象到暫存區

git update-index

工作區內容註冊到暫存區及暫存區管理

git unpack-file

創建臨時文件包含指定 blob的內容

git write-tree

從暫存區創建一個樹對象


3、引用操作相關命令

命令

簡要說明

git check-ref-format

檢查引用名稱是否符合規範

git for-each-ref

引用迭代器,用於shell編程

git ls-remote

顯示遠程版本庫的引用

git name-rev

將提交ID顯示爲友好名稱

git peek-remote*

過時命令,請使用 git ls-remote

git rev-list

顯示版本範圍

git show-branch

顯示分支列表及拓撲關係

git show-ref

顯示本地引用

git symbolic-ref

顯示或者設置符號引用

git update-ref

更新引用的指向

git verify-tag

校驗 GPG簽名的Tag


4、版本庫管理相關命令

命令

簡要說明

git count-objects

顯示鬆散對象的數量和磁盤佔用

git filter-branch

版本庫重構

git fsck

對象庫完整性檢查

git fsck-objects*

同義詞,等同於 git fsck

git gc

版本庫存儲優化

git index-pack

從打包文件創建對應的索引文件

git lost-found*

過時,請使用 git fsck –lost-found 命令

git pack-objects

從標準輸入讀入對象ID,打包到文件

git pack-redundant

查找多餘的 pack文件

git pack-refs

將引用打包到 .git/packed-refs文件中

git prune

從對象庫刪除過期對象

git prune-packed

將已經打包的鬆散對象刪除

git relink

爲本地版本庫中相同的對象建立硬連接

git repack

將版本庫未打包的鬆散對象打包

git show-index

讀取包的索引文件,顯示打包文件中的內容

git unpack-objects

從打包文件釋放文件

git verify-pack

校驗對象庫打包文件


5、數據傳輸相關命令

命令

簡要說明


git fetch-pack

執行 git fetch或 git pull 命令時在本地執行此命令,用於從其他版本庫獲取缺失的對象

git receive-pack

執行 git push命令時在遠程執行的命令,用於接受推送的數據

git send-pack

執行 git push命令時在本地執行的命令,用於向其他版本庫推送數據

git upload-archive

執行 git archive –remote 命令基於遠程版本庫創建歸檔時,遠程版本庫執行此命令傳送歸檔

git upload-pack

執行 git fetch或 git pull 命令時在遠程執行此命令,將對象打包、上傳


6、郵件相關命令

命令

簡要說明

git imap-send

將補丁通過 IMAP發送

git mailinfo

從郵件導出提交說明和補丁

git mailsplit

將 mbox或 Maildir 格式郵箱中郵件逐一提取爲文件

git request-pull

創建包含提交間差異和執行PULL操作地址的信息

git send-email

發送郵件


7、協議相關命令

命令

簡要說明

git daemon

實現Git協議

git http-backend

實現HTTP協議的CGI程序,支持智能HTTP協議

git instaweb

即時啓動瀏覽器通過 gitweb瀏覽當前版本庫

git shell

受限制的shell,提供僅執行Git命令的SSH訪問

git update-server-info

更新啞協議需要的輔助文件

git http-fetch

通過HTTP協議獲取版本庫

git http-push

通過HTTP/DAV協議推送

git remote-ext

由Git命令調用,通過外部命令提供擴展協議支持

git remote-fd

由Git命令調用,使用文件描述符作爲協議接口

git remote-ftp

由Git命令調用,提供對FTP協議的支持

git remote-ftps

由Git命令調用,提供對FTPS協議的支持

git remote-http

由Git命令調用,提供對HTTP協議的支持

git remote-https

由Git命令調用,提供對HTTPS協議的支持

git remote-testgit

協議擴展示例腳本


8、版本庫轉換和交互相關命令

命令

簡要說明

git archimport

導入Arch版本庫到Git

git bundle

提交打包和解包,以便在不同版本庫間傳遞

git cvsexportcommit

將Git的一個提交作爲一個CVS檢出

git cvsimport

導入CVS版本庫到Git。或者使用 cvs2git

git cvsserver

Git的CVS協議模擬器,可供CVS命令訪問Git版本庫

git fast-export

將提交導出爲 git-fast-import格式

git fast-import

其他版本庫遷移至Git的通用工具

git svn

Git 作爲前端操作 Subversion


9、合併相關的輔助命令

命令

簡要說明

git merge-base

供其他腳本調用,找到兩個或多個提交最近的共同祖先

git merge-file

針對文件的兩個不同版本執行三向文件合併

git merge-index

對index中的衝突文件調用指定的衝突解決工具

git merge-octopus

合併兩個以上分支。參見 git merge 的octopus合併策略

git merge-one-file

由 git merge-index調用的標準輔助程序

git merge-ours

合併使用本地版本,拋棄他人版本。參見 git merge 的ours合併策略

git merge-recursive

針對兩個分支的三向合併。參見 git merge 的recursive合併策略

git merge-resolve

針對兩個分支的三向合併。參見 git merge 的resolve合併策略

git merge-subtree

子樹合併。參見 git merge 的 subtree 合併策略

git merge-tree

顯式三向合併結果,不改變暫存區

git fmt-merge-msg

供執行合併操作的腳本調用,用於創建一個合併提交說明

git rerere

重用所記錄的衝突解決方案


10、 雜項

命令

簡要說明

git bisect–helper

由 git bisect命令調用,確認二分查找進度

git check-attr

顯示某個文件是否設置了某個屬性

git checkout-index

從暫存區拷貝文件至工作區

git cherry

查找沒有合併到上游的提交

git diff-files

比較暫存區和工作區,相當於 git diff –raw

git diff-index

比較暫存區和版本庫,相當於 git diff –cached –raw

git diff-tree

比較兩個樹對象,相當於 git diff –raw A B

git difftool–helper

由 git difftool命令調用,默認要使用的差異比較工具

git get-tar-commit-id

從 git archive創建的 tar 包中提取提交ID

git gui–askpass

命令 git gui的獲取用戶口令輸入界面

git notes

提交評論管理

git patch-id

補丁過濾行號和空白字符後生成補丁唯一ID

git quiltimport

將Quilt補丁列表應用到當前分支

git replace

提交替換

git shortlog

對 git log的彙總輸出,適合於產品發佈說明

git stripspace

刪除空行,供其他腳本調用

git submodule

子模組管理

git tar-tree

過時命令,請使用 git archive

git var

顯示 Git環境變量

git web–browse

啓動瀏覽器以查看目錄或文件

git whatchanged

顯示提交歷史及每次提交的改動

git-mergetool–lib

包含於其他腳本中,提供合併/差異比較工具的選擇和執行

git-parse-remote

包含於其他腳本中,提供操作遠程版本庫的函數

git-sh-setup

包含於其他腳本中,提供 shell 編程的函數庫





轉自Git小助手,微信公共號










轉自網友博客:
原文地址:http://www.cnblogs.com/pyer/p/4752770.html

git設置關閉自動換行

git config --global core.autocrlf false
爲了保證文件的換行符是以安全的方法,避免windows與unix的換行符混用的情況,最好也加上這麼一句
git config --global core.safecrlf true


git tag 使用
git tag  # 列出當前倉庫的所有標籤
git tag -l 'v0.1.*'  # 搜索符合當前模式的標籤

git tag v0.2.1-light  # 創建輕量標籤
git tag -a v0.2.1 -m '0.2.1版本'  # 創建附註標籤

git checkout [tagname]  # 切換到標籤
git show v0.2.1  # 查看標籤版本信息

git tag -d v0.2.1  # 刪除標籤
git tag -a v0.2.1 9fbc3d0  # 補打標籤

git push origin v0.1.2  # 將v0.1.2標籤提交到git服務器
git push origin –tags  # 將本地所有標籤一次性提交到git服務器
git tag  # 查看當前分支下的標籤

怎樣遍歷移除項目中的所有 .pyc 文件

sudo find /tmp -name "*.pyc" | xargs rm -rf替換/tmp目錄爲工作目錄
git rm *.pyc這個用着也可以

避免再次誤提交,在項目新建.gitignore文件,輸入*.pyc過濾文件


以上2015/12/20更新


創建和使用git ssh key

首先設置git的user name和email:

git config --global user.name "xxx"
git config --global user.email "[email protected]"

查看git配置:

git config --list
然後生成SHH密匙:

查看是否已經有了ssh密鑰:cd ~/.ssh
如果沒有密鑰則不會有此文件夾,有則備份刪除
生存密鑰:

ssh-keygen -t rsa -C "[email protected]"

按3個回車,密碼爲空這裏一般不使用密鑰。
最後得到了兩個文件:id_rsa和id_rsa.pub
注意:密匙生成就不要改了,如果已經生成到~/.ssh文件夾下去找。


git變更項目地址
git remote set-url origin git@192.168.6.70:res_dev_group/test.git
git remote -v

查看某個文件的修改歷史

git log --pretty=oneline 文件名 # 顯示修改歷史
git show 356f6def9d3fb7f3b9032ff5aa4b9110d4cca87e # 查看更改


git push 時報錯 warning: push.default is unset;

'matching'參數是 Git 1.x 的默認行爲,其意是如果你執行 git push 但沒有指定分支,它將 push 所有你本地的分支到遠程倉庫中對應匹配的分支。而 Git 2.x 默認的是 simple,意味着執行 git push 沒有指定分支時,只有當前分支會被 push 到你使用 git pull 獲取的代碼。
根據提示,修改git push的行爲:
git config --global push.default matching
再次執行git push 得到解決。


git submodule的使用拉子項目代碼

開發過程中,經常會有一些通用的部分希望抽取出來做成一個公共庫來提供給別的工程來使用,而公共代碼庫的版本管理是個麻煩的事情。今天無意中發現了git的git submodule命令,之前的問題迎刃而解了。
添加

爲當前工程添加submodule,命令如下:

git submodule add 倉庫地址 路徑

其中,倉庫地址是指子模塊倉庫地址,路徑指將子模塊放置在當前工程下的路徑。
注意:路徑不能以 / 結尾(會造成修改不生效)、不能是現有工程已有的目錄(不能順利 Clone)

命令執行完成,會在當前工程根路徑下生成一個名爲“.gitmodules”的文件,其中記錄了子模塊的信息。添加完成以後,再將子模塊所在的文件夾添加到工程中即可。
刪除

submodule的刪除稍微麻煩點:首先,要在“.gitmodules”文件中刪除相應配置信息。然後,執行git rm –cached命令將子模塊所在的文件從git中刪除。
下載的工程帶有submodule

當使用git clone下來的工程中帶有submodule時,初始的時候,submodule的內容並不會自動下載下來的,此時,只需執行如下命令:

git submodule update --init --recursive

即可將子模塊內容下載下來後工程纔不會缺少相應的文件。


git add文件取消

在git的一般使用中,如果發現錯誤的將不想提交的文件add進入index之後,想回退取消,則可以使用命令:git reset HEAD <file>...,同時git add完畢之後,git也會做相應的提示。

http://blog.csdn.net/yaoming168/article/details/38777763


git刪除文件:

刪除文件跟蹤並且刪除文件系統中的文件file1git rm file1
提交剛纔的刪除動作,之後git不再管理該文件git commit

刪除文件跟蹤但不刪除文件系統中的文件file1git rm --cached file1
提交剛纔的刪除動作,之後git不再管理該文件。但是文件系統中還是有file1。git commit


版本回退

版本回退用於線上系統出現問題後恢復舊版本的操作。
回退到的版本git reset --hard 248cba8e77231601d1189e3576dc096c8986ae51
回退的是所有文件,如果後悔回退可以git pull就可以了。


歷史版本對比

查看日誌git log
查看某一歷史版本的提交內容git show 4ebd4bbc3ed321d01484a4ed206f18ce2ebde5ca,這裏能看到版本的詳細修改代碼。
對比不同版本git diff c0f28a2ec490236caa13dec0e8ea826583b49b7a 2e476412c34a63b213b735e5a6d90cd05b014c33

http://blog.csdn.net/lxlzhn/article/details/9356473


分支的意義與管理

創建分支可以避免提交代碼後對主分支的影響,同時也使你有了相對獨立的開發環境。分支具有很重要的意義。
創建並切換分支,提交代碼後才能在其它機器拉分支代碼git checkout -b new_branch
查看當前分支git branch
切換到master分支git checkout master
合併分支到當前分支git merge new_branch,合併分支的操作是從new_branch合併到master分支,當前環境在master分支。
刪除分支git branch -d new_branch


git衝突文件編輯

衝突文件衝突的地方如下面這樣

a123
<<<<<<< HEAD
b789
=======
b45678910
>>>>>>> 6853e5ff961e684d3a6c02d4d06183b5ff330dcc
c

衝突標記<<<<<<< (7個<)與=======之間的內容是我的修改,=======與>>>>>>>之間的內容是別人的修改。
此時,還沒有任何其它垃圾文件產生。
你需要把代碼合併好後重新走一遍代碼提交流程就好了。


不順利的代碼提交流程

git push後出現錯誤可能是因爲其他人提交了代碼,而使你的本地代碼庫版本不是最新。
這時你需要先git pull代碼後,檢查是否有文件衝突。
沒有文件衝突的話需要重新走一遍代碼提交流程add —> commit —> push
解決文件衝突在後面說。


git順利的提交代碼流程

查看修改的文件git status
爲了謹慎檢查一下代碼git diff
添加修改的文件git add dirname1/filename1.py dirname2/filenam2.py,新加的文件也是直接add就好了;
添加修改的日誌git commit -m "fixed:修改了上傳文件的邏輯"
提交代碼git push,如果提交失敗的可能原因是本地代碼庫版本不是最新。


理解github的pull request
有一個倉庫,叫Repo A。你如果要往裏貢獻代碼,首先要Fork這個Repo,於是在你的Github賬號下有了一個Repo A2,。然後你在這個A2下工作,Commit,push等。然後你希望原始倉庫Repo A合併你的工作,你可以在Github上發起一個Pull Request,意思是請求Repo A的所有者從你的A2合併分支。如果被審覈通過並正式合併,這樣你就爲項目A做貢獻了。

http://zhidao.baidu.com/question/1669154493305991627.html


一些錯誤處理
"pathspec 'branch' did not match any file(s) known to git."錯誤
git checkout master
git pull
git checkout new_branch
使用git提交比較大的文件的時候可能會出現這個錯誤

error: RPC failed; result=22, HTTP code = 411
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date

這樣的話首先改一下git的傳輸字節限制

git config http.postBuffer 524288000
然後這時候在傳輸或許會出現另一個錯誤

error: RPC failed; result=22, HTTP code = 413
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date

這兩個錯誤看上去相似,一個是411,一個是413

下面這個錯誤添加一下密鑰就可以了

首先key-keygen 生成密鑰

然後把生成的密鑰複製到git中自己的賬號下的相應位置

git push ssh://192.168.64.250/eccp.git branch

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章