git常用操作

git常用操作

git rebase

git checkout bat
git rebase origin #把"bat"分支里的每個提交(commit)取消掉,并且把它們臨時 #保存為補丁(patch)(這些補丁放到".git/rebase"目錄中),然后把"bat"分支更新
#為最新的"origin"分支,最后把保存的這些補丁應(yīng)用到"mywork"分支上

git rebase和git merge的區(qū)別
merge相當于將雙方的修改綜合
rebase相當于將對方修改之后,在提交自己的修改,結(jié)果一樣

git clone 取回遠程的所有分支

git clone git@github.com:dolymood/angular-example.git #獲取某個遠程庫
git fetch <遠程主機名>  <分支名> #獲取全部的分支 如果需要特定分支 可指定分支名
git branch -a #查看所有分支 git branch -a 查看所有分支
git checkout -b newBrach <遠程分支> #創(chuàng)建并且切換到新的分支

返回某個文件的某個版本

git log 文件名 #查看某個文件的歷史記錄 可以加參數(shù)-p查看diff   獲取commit id
git reset commitid 文件名 #返回該文件的當前的版本,會在緩存區(qū)
git checkout 文件名 #返回之前的版本

#可以用git reflog 查看所有的版本信息
#git log --pretty=oneline filename 通過一行查看單個文件的提交情況
#git show commitid 查看該提交id的修改情況
#git log --stat 很好用,只看每次提交的增減

跳轉(zhuǎn)到某個版本

git reflog #查看所有版本信息
git reset --hard commitid #重置到某個特定的版本

刪除文件

git rm filename   直接刪除文件
git rm --cached filename   刪除文件暫存狀態(tài)

創(chuàng)建分支

git branch develop // 只創(chuàng)建分支
git checkout -b master develop // 創(chuàng)建并切換到 develop 分支

設(shè)置 commit 的用戶和郵箱

git config user.name "xx"
git config user.email "xx@xx.com"
git config --global color.ui true #git 顯示顏色

Git設(shè)置

Git的全局設(shè)置在~/.gitconfig中,單獨設(shè)置在project/.git/config下。

忽略設(shè)置全局在~/.gitignore_global中,單獨設(shè)置在project/.gitignore下。

//設(shè)置提交的時候是否轉(zhuǎn)換換行符號
git config [--global] core.autocrlf = [true|false|input]
true  : 將crlf轉(zhuǎn)換為lf,而在檢出時將crlf轉(zhuǎn)換為lf.
false : 不轉(zhuǎn)換.
input : 提交時將crlf轉(zhuǎn)換成lf,檢出時不轉(zhuǎn)換.

git clean 指令

git clean -f #刪除未跟蹤的文件
  參數(shù)n:查看刪除哪些文件
  參數(shù)x:將gitignore的文件刪除,一般不用
  參數(shù)d:刪除未跟蹤的目錄

gitignore生效

#中途加進.gitignore的文件或文件夾不會生效
git rm -r --cached .#之前已經(jīng)在版本管理中了,需要刪除本地緩存,在提交
git add .
git commit -m"add"

git add submodule

git submodule add git@github.com:zlxbuzz/gulp.git ./gulp

##刪除模塊
1 .gitmodules的模塊信息
2 git rm –cached gulp

git 更新submodule

#可以寫一個submoduleupdate.sh 的腳本
git submodule init
git submodule update
git submodule foreach --recursive 'branch="$(git config -f $toplevel/.gitmodules submodule.$name.branch)"; git checkout $branch'
git submodule foreach --recursive "git submodule update"

echo "Pulling all git submodules..."
git submodule foreach --recursive 'branch="$(git config -f $toplevel/.gitmodules submodule.$name.branch)"; git pull origin $branch'

git blame 查看每行提交

git blame [選項] [版本選項] [版本] [--] 文件
    --incremental         增量式地顯示發(fā)現(xiàn)的 blame 條目
    -b                    邊界提交顯示空的 SHA-1(默認:關(guān)閉)
    --root                不把根提交作為邊界(默認:關(guān)閉)
    --show-stats          顯示命令消耗統(tǒng)計
    --score-debug         顯示判斷 blame 條目位移的得分診斷信息
    -f, --show-name       顯示原始文件名(默認:自動)
    -n, --show-number     顯示原始的行號(默認:關(guān)閉)
    -p, --porcelain       顯示為一個適合機器讀取的格式
    --line-porcelain      為每一行顯示機器適用的提交信息
    -c                    使用和 git-annotate 相同的輸出模式(默認:關(guān)閉)
    -t                    顯示原始時間戳(默認:關(guān)閉)
    -l                    顯示長的SHA1提交號(默認:關(guān)閉)
    -s                    隱藏作者名字和時間戳(默認:關(guān)閉)
    -e, --show-email      顯示作者的郵箱而不是名字(默認:關(guān)閉)
    -w                    忽略空白差異
    --minimal             花費額外的循環(huán)來找到更好的匹配
    -S <文件>             使用來自 <file> 的修訂集而不是調(diào)用 git-rev-list
    --contents <文件>     使用 <file> 的內(nèi)容作為最終的圖片
    -C[<得分>]            找到文件內(nèi)及跨文件的行拷貝
    -M[<得分>]            找到文件內(nèi)及跨文件的行移動
    -L <n,m>              只處理行范圍在 n 和 m 之間的,從 1 開始
    --abbrev[=<n>]        用 <n> 位數(shù)字顯示 SHA-1 哈希值

git add

用法:git add [選項] [--] <路徑規(guī)則>...

    -n, --dry-run         演習
    -v, --verbose         冗長輸出

    -i, --interactive     交互式揀選
    -p, --patch           交互式挑選數(shù)據(jù)塊
    -e, --edit            編輯當前差異并應(yīng)用
    -f, --force           允許添加忽略的文件
    -u, --update          更新已跟蹤的文件
    -N, --intent-to-add   只記錄,該路徑稍后再添加
    -A, --all             添加所有改變的已跟蹤文件和未跟蹤文件
    --ignore-removal      忽略工作區(qū)中移除的路徑(和 --no-all 相同)
    --refresh             不添加,只刷新索引
    --ignore-errors       跳過因出錯不能添加的文件
    --ignore-missing      檢查在演習模式下文件(即使不存在)是否被忽略

    git  add .  #新文件+修改的文件
    git  add -u #修改的文件或刪除的文件
    git  add -A # 所有新文件和修改的文件,刪除的文件

git push

git push origin --delete dev #刪除遠程分支

git flow

分支使用
master
與線上版本保持同步,代碼和功能質(zhì)量滿足實際發(fā)布環(huán)境需要
不直接接收任何代碼commit。
接收來自release、hotfix分支的merge。
版本的tag也在此分支進行定義
develop
接收來自其他功能、特性開發(fā)分支(feature)的merge。
feature
具體功能、特性的工作分支族,大部分的commit在此類分支上完成。
完成開發(fā)后,分支merge到develop分支,具體feature分支刪除。
release
用于版本發(fā)布的分支,在確定版本計劃后從develop分支建立。
用于版本的測試、問題修復工作,接收bug修復的commit。
完成測試和開發(fā)后,分支merge到develop和master分支。
hotfix
用于在master分支發(fā)現(xiàn)實際環(huán)境中問題進行修復,接收修復commit。
完成后merge回master分支并且merge到develop分支。
master分支需要進行修復版本tag的定義。

git 對比兩個tag,并且排除某些目錄

 git diff 1.1.1.179...1.1.1.182 -- . ':!dist' ':!lib'
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 獲取與創(chuàng)建項目 創(chuàng)建倉庫的途徑有:在本地已有的目錄,初始化一個新的;克隆復制一份別人的項目。 git init 在...
    daking閱讀 6,779評論 3 48
  • 常用命令: 查看、添加、提交、刪除、找回,重置修改文件 git help # 顯示command的help gi...
    even_cheng閱讀 318評論 0 3
  • 1)遠程倉庫相關(guān)命令 檢出倉庫:$ git clone git://github.com/jquery/jquer...
    Jeff_Tsui閱讀 376評論 0 0
  • 申明:本文資料是從網(wǎng)絡(luò)上收集而成,只是單單做為記錄,方便日后翻閱。 **初始化操作 ** git config...
    _Justin閱讀 535評論 0 0
  • 2017.11.28 星期二 多云 親子日記(213) 今天早晨一家三口在一塊兒吃,還說吃了飯就把學校的飯錢拿著,...
    于澤媽媽閱讀 192評論 0 2

友情鏈接更多精彩內(nèi)容