中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
筆記《版本控制之道--使用Git》

筆記《版本控制之道--使用Git》

我認為每個學過Git的人都應該做過類似這種筆記,因為Git命令太多看著看著就把前邊看過的忘了,之前我也看過Git,但是一直沒用,現(xiàn)在一看幾乎沒有印象了,所以這次我要把我看到的命令記下來給我自己備忘。

Git已經(jīng)是最流行的版本控制系統(tǒng)了,網(wǎng)上相關的免費學習資源很多,我見過的中文書籍就有:

但我是買的一本紙質書叫做《版本控制之道—使用Git》,下邊是我記錄的幾乎是整本書講過的所有命令:

設置

git config —global user.name “Nshen” //必須
git config —global user.email “nshen121@gmail.com” //必須
git config —global color.ui “always” //或者"auto", always不僅Base環(huán)境是彩色,Dos里也是彩色的。
git config —global core.editor notepad.exe //設為windows記事本
git config —global alias.ci “commit” //別名縮寫
git config —global merge.tool //可以設置合并工具
git config —global —list //查看設置

其實最后這些設置都保存在C:\Documents and Settings\用戶名\.gitconfig 文件下(windows)

查看幫助: git help command

初始化 :

git init

納入版本控制:

git add *.txt //添加所有txt文件
git add README //添加單個文件
git add . //添加所有文件包括子目錄,但不包括空目錄

add命令是個多功能命令,根據(jù)目標文件的狀態(tài)不同,此命令的效果也不同:可以用它開始跟蹤新文件,或者把已跟蹤的文件放到暫存區(qū),還能用于合并時把有沖突的文件標記為已解決狀態(tài)等)注意每次修改后都要重新add,不然就會提交之前add時的版本。

git add -i //進入交互式add
git add -p //直接進入補丁模式,可以暫存修改的一部分。

提交:

git commit -m “initial project version”
git commit -m “something” someFile //提交指定文件
git commit -C HEAD -a —amend //復用HEAD留言,增補提交(修改小錯誤,而不增加提交記錄,掩蓋自己的小馬虎)

參數(shù):

-m “提交的說明”
-a 動把所有已經(jīng)跟蹤過的文件暫存,并提交.(工作目錄中修改過的文件都提交到版本庫,不需一個一個手動add了)
—amend 增補提交
-C 復用指定提交的提交留言
-c 打開編輯器在已有的提交基礎上編輯修改

e.g 修改最后一次提交:

git commit -m 'initial commit'git add forgotten_filegit commit --amend

如果沒有修改就相當于更改提交說明,上邊3個命令得到一個提交.

忽略提交的文件:

所有人都需要忽略的文件要寫在.gitignore文件里,而只有自己的個人偏好需要忽略的文件要寫在.git/info/exclude文件中

語法:

# 此為注釋 – 將被 Git 忽略*.a       # 忽略所有 .a 結尾的文件!lib.a    # 但 lib.a 除外*.[oa]  #忽略以.o或.a結尾的文件*~      #忽略以~結尾的文件/TODO     # 僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODObuild/    # 忽略 build/ 目錄下的所有文件doc/*.txt # 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt

查看文件改動:

git diff // 比較工作目錄與緩存區(qū)的區(qū)別
git diff —cached 或者 git diff —staged //緩存區(qū)與版本庫里的區(qū)別
git diff HEAD //三者的區(qū)別

請注意,單單 git diff 不過是顯示還沒有暫存起來的改動,而不是這次工作和上次提交之間的差異。所以有時候你一下子暫存了所有更新過的文件后,運行 git diff 后卻什么也沒有,就是這個原因。
git diff 18f822e //18f822e這個版本與當前目錄的區(qū)別

git diff aaaaa..bbbbb //比較aaaaa與bbbbb之間差別
git diff —stat可以統(tǒng)計數(shù)據(jù),比較特別的命令

重命名,移動,刪除文件:

git mv file_from file_to //改名或移動

$ git mv README.txt README$ git status# On branch master# Your branch is ahead of 'origin/master' by 1 commit.## Changes to be committed:#   (use "git reset HEAD <file>..." to unstage)##       renamed:    README.txt -> README

其實,運行 git mv 就相當于運行了下面三條命令:

$ mv README.txt README
$ git rm README.txt
$ git add README

必須調(diào)用 git rm 文件名 //從暫存區(qū)移除,并且文件也被刪除

如果只是手工刪除了文件,運行git status時會出現(xiàn)

# Changed but not updated:#   (use "git add/rm <file>..." to update what will be committed)##       deleted:    grit.gemspec

此時必須再運行 git rm 文件名,才會在提交時候不再納入版本管理.
如果刪除之前修改過并且已經(jīng)add到緩存區(qū)了的話,則必須強制刪除 -f

另外一種情況是,我們想把文件從Git倉庫中刪除(亦即從暫存區(qū)域移除),但仍然希望保留在當前工作目錄中。換句話說,僅是從跟蹤清單中刪除。比如一些大型日志文件或者一堆.a編譯文件,不小心納入倉庫后,要移除跟蹤但不刪除文件,以便稍后在 .gitignore 文件中補上,用 —cached 選項即可:

查看狀態(tài):

查看當前狀態(tài):

git status

$ git status# On branch master# Changes to be committed:  //只要在這行后邊的,說明放入暫存區(qū)了#   (use "git reset HEAD <file>..." to unstage) //想取消放入緩存 git reset HEAD README##     new file:   README# Changed but not updated:  //跟蹤文件內(nèi)容改變,但還沒有放到暫存區(qū),需要git add 命令才會放到暫存區(qū)#   (use "git add <file>..." to update what will be committed)#   (use "git checkout -- <file>..." to discard changes in working directory) //刪除修改,恢復到之前版本,有危險 (如果想保留并且回退版本用stashing 和分支來處理)#     modified:   benchmarks.rb

查看提交歷史:

git log

這時“j”向下瀏覽,“k”向上瀏覽,“q”退出

git log —pretty=oneline //一行顯示
—pretty=“%h %s” //以各種格式輸出

git log –p -2 //-p顯示每次提交的內(nèi)容差異 -2表示最近2次更改

git log —since “5 hours”
—since “3 hours”
—since “1 minute”
—before =“2008-10.01”

git log 27j34j3j..03u43u23 //最老版本..最新版本(不包括起點只包括終點)
git log 34j4j4..HEAD
git log fhfs8fh.. //省略HEAD
git log “HEAD^^”..“HEAD^” //windows必須加引號表示回溯上一個提交
git log -1 HEAD~1 //相當于git log -1 HEAD^

問責:查明誰修改了代碼

git blame hello.html //你也可以用"-L"參數(shù)在命令(blame)中指定開始和結束行:
git blame -L 12,+10 hello.html //12到22行
blame還可以跟蹤內(nèi)容復制,文件復制,略,見版本控制之道 79頁

撤銷:

撤銷緩存區(qū)的修改(沒有commit的)

git checkout head 文件名 //撤銷暫存區(qū)的修改 
git checkout head readme.txt todo.txt
git checkout head *.txt
git checkout head . //撤銷所有

反轉提交:

git revert HEAD //創(chuàng)建一個反向的新提交抵消原來的提交改動
如果需要反轉多個,必須從最后的開始反轉, 加 -n可以不馬上提交,之后一起提交。
git revert -n HEAD
git revert -n 54efhds
git commit -m “revert head and 54efhds”

復位:還沒有commit,讓工作目錄回到上次提交時的狀態(tài)

git reset —hard HEAD //所有未提交的內(nèi)容清空,這會讓"git diff" 和"git diff —cached"命令的顯示法都變?yōu)榭?br>git reset —soft HEAD //復位版本庫,暫存差異,便于提交中發(fā)現(xiàn)錯誤需要更改時有用(例如私人密碼放到里邊了)

分支:

在當前分支末梢建立分支:

git branch RB_1.0(建立分支不會自動切換過去)

切換分支:

git checkout RB_1.0(切換到RB_1.0分支)

創(chuàng)建并切換分支:

git checkout -b RB_1.0(簡化上邊2步操作)

刪除分支:

git branch -d RB_1.0

基于某次提交、分支或標簽創(chuàng)建新分支:

git branch RB_1.0 master
git branch RB_1.0 6fe57de0
git branch Rb_1.01 1.0

查看分支:

git branch //列出本地分支  iss53* master  //*號表示當前所在分支  testing

git branch -r //顯示遠程分支
git branch -a //列出所有分支

分支重命名:

git branch -m master mymaster
-M 大寫M會覆蓋同名的分支

合并分支:

直接合并:
git merge 想合并到當前分支的源分支名
git merge —no-commit 分支 //合并但不提交

壓合合并:將分支壓合成一條commit記錄,并合并過來
git merge —squash 某bug分支
git commit -m “修復某bug”

揀選合并:只合并一個提交
git cherry-pick 321d76f
如果需要連續(xù)揀選,就需要加 -n參數(shù)
然后再git commit ,但不要加-m參數(shù),編輯器就會使用剛揀選的提交留言作為現(xiàn)在的留言。

標簽Tag:

查看標簽:

git tag

創(chuàng)建標簽:

git tag 1.0 //在當前分支最后一次提交創(chuàng)建標簽
git tag 1.0 RB_1.0 //基于RB_1.0分支的最新踢腳創(chuàng)建標簽
git tag 1.0 ae468d8kt //為某次提交創(chuàng)建標簽

檢出標簽:

git checkout 1.0 //檢出標簽與檢出分支一樣操作,但檢出標簽后用git branch查看本地分支會發(fā)現(xiàn)你現(xiàn)在不再任何分支上
這時你不應該修改,而應該立即基于此標簽創(chuàng)建一個分支
git checkout -b from-1.0

變基:

1)git rebase RB_1.01 //也許修改過一個bug,希望新版本變基到RB_1.01分支上
2)手動解決沖突 //如果解決不了直接git rebase -skip或-abort來跳過特定提交或完全放棄變基
3)git add xxx.html //沖突解決
4)git rebase —continue

git rebase --onto HEAD^^ HEAD^ HEAD 

//—onto參數(shù)可以改寫歷史抹掉中間的參數(shù),將倒數(shù)第一個參數(shù)變基到倒數(shù)第3個參數(shù),為防止出錯建議在試驗性分支上先試驗。

rebase -i 可以排序歷史記錄,多個提交合并為1個,一個提交分解成多個提交 ,
詳見版本控制之道p86 ,需要編輯器支持,windows記事本不行

遠程相關:

git clone git://github.com/schacon/grit.git //從現(xiàn)有倉庫克隆
git clone git://github.com/schacon/grit.git mygrit //換名,唯一區(qū)別就是新建的目錄成了mygrit,其他都一樣

添加遠程倉庫:

git remote add pb git://github.com/paulboone/ticgit.git
clone會默認添加origin倉庫,如果原本用git init創(chuàng)建的版本庫,后來又想提交到遠程版本庫,就可以用下邊的辦法
git remote add origin git@example.com:/xxxxxx

查看遠程分支:

git remote -v //查看遠程倉庫,默認clone后,應該有一個origin倉庫,-v顯示對應的clone地址
git remote show origin //查看遠程倉庫信息

遠程倉庫重命名和刪除:

git remote rename pb paul
git remote rm paul

獲取數(shù)據(jù):

git fetch [remote-name] 拉取遠程倉庫到本地遠程倉庫,不自動合并    //$ git fetch origin$ git fetch pbremote: Counting objects: 58, done.remote: Compressing objects: 100% (41/41), done.remote: Total 44 (delta 24), reused 1 (delta 0)Unpacking objects: 100% (44/44), done.From git://github.com/paulboone/ticgit* [new branch]      master     -> pb/master* [new branch]      ticgit     -> pb/ticgit

現(xiàn)在pb/master可以在本地訪問了,你可以合并到自己的某個分支,或者切換到這個分支看看有什么有趣的更新

git pull 抓取數(shù)據(jù)合并到工作目錄中當前分支

推送數(shù)據(jù):

git push [remote-name] [branch-name] //默認為 git push origin master

git push origin serverfix //推送分支,其實是下邊一句的簡化,提取我的 serverfix 并更新到遠程倉庫的 serverfix

git push origin serverfix:serferfix

git push origin :serverfix //這個語法用于刪除,只要把分號前留空

其他:

git gc //垃圾回收,每隔一段時間例如一個月運行一次可以減少磁盤占用空間。
git reflog //最后的保障,列出誤刪的東東
git bisect //二分查找,版本控制之道p124頁,略

歸檔版本庫,導出壓縮包:

git archive —format=格式 —prefix=目錄/ 版本>壓縮包.zip
git archive —format=zip head>test.zip
git archive —format=tar —prefix=mysite-1.0/ 1.0 | gzip>mysite-1.0.tar.gz
git archive —format=zip —prefix=mysite-1.0/ 1.0 >mysie-1.0.zip


--EOF--

本站文章均為原創(chuàng),轉載請保留鏈接,謝謝。

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
(轉載)Git Commands
Git 常用命令整理
[git04篇]10年阿里自動化測試架構師幫您收集的:git常用命令大全以及git原理圖【泣血推薦,建議收藏】
Git常用命令大全,迅速提升你的Git水平
Git常用命令總結
git命令大全
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服