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 命令速查表
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小助手,微信公共號
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也會做相應的提示。
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
分支的意義與管理
創建分支可以避免提交代碼後對主分支的影響,同時也使你有了相對獨立的開發環境。分支具有很重要的意義。
創建並切換分支,提交代碼後才能在其它機器拉分支代碼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做貢獻了。
一些錯誤處理
"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