精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

技能篇:Git的簡易教程

開發 前端
在學校,或許憑借一個人的力量就能負責整個項目的開發到上線。但是在在公司,因為項目的復雜性和緊急性,一個項目的往往是由多個人實現,此時就有一個問題,代碼提交和代碼合并。

[[415295]]

本文轉載自微信公眾號「潛行前行」,作者cscw。轉載本文請聯系潛行前行公眾號。

在學校,或許憑借一個人的力量就能負責整個項目的開發到上線。但是在在公司,因為項目的復雜性和緊急性,一個項目的往往是由多個人實現,此時就有一個問題,代碼提交和代碼合并。git和svn,這篇文章來講講git的原理和使用

  • version版本控制
  • git的賬號配置
  • 創建git倉庫
  • git的原理
  • 文件操作命令
  • 分支操作命令

version版本控制

  • 版本控制(Revision control)是一種在開發的過程中用于對文件、目錄或工程等內容的修改歷史,方便查看更改歷史記錄,備份及以便恢復以前版本的技術
  • 沒有進行版本控制或者版本控制本身缺乏正確的管理,在軟件開發過程中將會引入很多問題,如軟件代碼的一致性、軟件內容的冗余、軟件開發過程中的并發性、軟件源代碼的安全性,以及軟件的整合等問題

git的賬號配置

  • 配置名字和郵件地址
  1. # git config --global user.name "hello lwl" 
  2. # git config --global user.email lwl@csc.com 
  3. // 查看系統config 
  4. # git config --system --list 
  5. // 查看當前用戶(global)配置 
  6. # git config --global  --list 
  7. // 查看當前倉庫配置信息 
  8. # git config --local  --list 

創建git倉庫

  1. // 在當前目錄新建一個Git代碼庫 
  2. # git init 
  3. // 克隆一個項目和它的整個代碼歷史(版本信息) 
  4. # git clone [git@github.com:cscsss/learnHome.git] 

git的原理

  • 項目文件(Directory):使用Git管理的一個目錄,也就是一個倉庫,包含我們的工作區(WorkSpace)和 Git的管理空間(.git)
  • 工作區(Workspace):就是平時存放項目代碼的地方,一個文件夾而已
  • git管理空間(.git):存放Git管理信息的目錄,初始化倉庫的時候自動創建。里面又包含暫存區(Index/Stage)和 本地倉庫(Repository)
  • 暫存區(Index/Stage):用于存放你的臨時改動信息,保存即將提交到文件列表信息??捎糜诒4?恢復 WorkSpace 中的臨時狀態
  • 本地倉庫(Repository):這里面存放你提交到所有版本的數據。其中HEAD指向最新放入倉庫的版本
  • 遠程倉庫(Remote):托管代碼的服務器,和本地倉庫作用類似,不過它是公共的

狀態轉移流程

  • 未跟蹤(Untracked): 此文件僅僅在 workspace 中,但并沒有加入到 git 倉庫,不參與版本控制。通過 git add 狀態變為 Staged
  • 文件已經入庫(Unmodify): 未修改,即版本倉庫中的文件快照內容與 workspace 中完全一致。這種類型的文件有兩種變化,如果它被修改,而變為 Modified。如果使用 git rm 移出版本庫,則成為 Untracked 文件
  • 文件已修改(Modified): 僅僅是修改, 并沒有進行其他的操作。通過 git add 可進入暫存 Staged 狀態,使用 git checkout 則丟棄修改過,返回到 unmodify 狀態,這個 git checkout 即從庫中取出文件,覆蓋當前修改
  • 暫存狀態(Staged): 執行 git commit 則將修改同步到倉庫中,這時庫中的文件和 workspace 文件又變為一致,文件為 Unmodify 狀態。執行git reset branchName fileName取消暫存。文件狀態恢復為 Modified圖片

文件操作命令

查看文件狀態

  1. // 查看所有文件狀態 
  2. # git status 
  3. // 查看指定文件狀態 
  4. # git status [fileName] 

添加文件與目錄

  1. // 添加指定文件到暫存區 
  2. # git add [file1] [file2] ... 
  3. // 添加指定目錄到暫存區,包括子目錄文件 
  4. # git add [dir] 

移除文件與目錄

  1. // 將文件從暫存區和工作區中刪除 
  2. # git rm <fileName> 
  3. // 將 fileName 從暫存區刪除文件,仍保留在當前工作目錄中 
  4. # git rm --cached <fileName> 

文件提交 git commit

  1. // 將暫存區文件提交到本地倉庫區,message為說明信息 
  2. # git commit -m [message]  
  3. // 將暫存區的指定文件 fileName 提交到本地倉庫 
  4. # git commit [fileName] -m [message]  
  5. // 追加漏提交的暫存區文件。等價 git add . +  git commit -m 'message' 
  6. # git commit --amend -m [message]  

查看文件狀態及歷史 git log

  1. # git log  //查看提交歷史 
  2. # git log --oneline //以精簡模式顯示查看提交歷史 
  3. # git log -p <fileName> //查看指定文件的提交歷史 
  4. # git blame <fileName> //以列表方式查看指定文件的提交歷史 

git diff 比較差異

  1. // 顯示暫存區和工作區的全部差異 
  2. # git diff  
  3. // 顯示 filepath 路徑文件中,工作區與暫存區的差異 
  4. # git diff filePath    
  5. // 顯示在工作區 filePath 文件與 HEAD 分支的差異 
  6. # git diff HEAD filePath  
  7. // 顯示在工作區的 filePath 文件與某次提交 commitId 的差異 
  8. # git diff commitId filePath  

git reset 代碼回退

  • 有時提交了一些錯誤代碼,我們想回滾怎么辦,可以使用 git reset 重設置代碼版本號。git reset 有三種模式 。soft、mixed、hard
  1. // git reset [--soft | --mixed | --hard] [HEAD] 
  2. // git reset [--soft | --mixed | --hard] [commit] 
  3. # git reset –hard HEAD~3  //會將最新的3次提交全部重置,就像沒有提交過一樣 
  4. # git reset 003444c77bae2b0874be17b81a829cfb1237d9ce //重置到003444c7 
  • --hard 模式

重置 HEAD 在當前分支到某次 commit 時,工作目錄里的新改動和已經 add 到 stage 暫存區的新改動會全都消失。工作目錄(workspace)、暫存區(index/stage)及本地倉庫(repository)重置成目標 commit 的內容,所以效果看起來等同于清空暫存區和工作區

  • --soft 模式

--soft 模式在重置 HEAD 時,會保留工作目錄和暫存區中的內容,并把重置 HEAD 所帶來的新的差異放進暫存區,保留工作目錄(workspace)和暫存區(index/stage)的內容,只讓 repository 中的內容和 reset 節點保持一致,原節點和 reset 節點之間的「差異變動」會放入暫存區中(index/stage)

--mixed 模式圖片git reset 如果不加參數,那么默認使用 --mixed 參數。mixed 模式會保留 工作目錄(workspace)的內容,但會將暫存區(index/stage) 和 Repository 中的內容重置成 reset 節點一致,因此原節點和 reset 節點之間的「差異變動」會放入工作目錄(workspace)

git revert

如果我們想撤銷之前的某一版本,但是又想保留 commitId 提交之后的版本

  1. # git revert -n commitId 

分支操作命令

新建分支

  1. // 基于當前分支新建一個分支,并且切換到新的分支 lwl 
  2. # git checkout -b lwl   
  3. // 基于遠程分支 originBranch 并新建分支 csc 
  4. # git checkout -b csc originBranch 
  5. // 新建一個 csc 分支,但是仍停留在原來分支 
  6. # git branch csc  
  7. // 切換到 csc 分支 
  8. # git checkout csc  

git push

  1. ~~ 將本地分支的更新全部推送到遠程倉庫 master 分支 
  2. # git push origin master  
  3. ~~ 刪除遠程 branchname 分支 
  4. # git push origin -d <branchName>    

刪除分支

  1. # git branch -D <branchname>   
  2. ~~ 刪除本地 dev1 分支 
  3. # git branch -D dev1  

分支合并

git-merge 命令是用于從指定的commit(s)合并到當前分支的操作

  1. # git merge branchName //當前分支和 branchName 合并 
  2. # git merge -m <msg> <commit> //當前分支和 branchName commit及之前的提交合并 
  3. # git merge --abort // 取消合并 
  • 當產生合并沖突時,該部分會以<<<<<<<, =======和 >>>>>>>表示。在=======之前的部分是當前分支這邊的情況,在=======之后的部分是對方分支的情況
  • 解決完沖突的地方后使用git add加入到index中,然后使用git commit產生合并節點

git pull/git fetch

  • git fetch 可以拉取遠程倉庫的代碼
  1. ~~ 拉取所有遠端的最新代碼 
  2. # git fetch --all   
  3. ~~ 拉取遠程最新 master 分支代碼(指定 master 分支) 
  4. # git fetch origin master  
  • git pull。它不僅會拉取遠程分支,還會合并遠端和本地代碼,即:git pull = git fetch + git merge
  1. ~~ 拉取遠程倉庫分支,更新并合并到本地分支 
  2. # git pull   
  3. ~~ 將遠程 master 分支合并到當前本地 master 分支 
  4. # git pull origin master  
  5. ~~ 將遠程 master 分支合并到當前本地 lwl 分支,冒號后面表示本地分支 
  6. # git pull origin master:lwl  

git rebase 合并

git rebase master 命令會把當前分支 curBranch 里的每個提交(commit)取消掉,并且把它們臨時保存為補丁(patch)(這些補丁放到".git/rebase"目錄中),然后把 curBranch 分支更新為 master 分支最新提交,最后把保存的這些補丁應用到 curBranch 分支上

在 rebase 的過程中,也許會出現沖突(conflict)。在這種情況,Git會停止rebase并會讓你去解決 沖突;在解決完沖突后,用 git add 命令去更新這些內容的索引(index), 然后,你無需執行 git-commit,只要執行git rebase --continue

  1. # git rebase branchName // branchName 合并到當前分支 
  2. # git rebase --continue // 解決沖突后繼續合并 
  3. # git rebase --abort //取消合并 
  4. # git rebase -i HEAD~2 //合并提交 --- 2表示合并2個。也可以是3... 

如果 git rebase master 之后。需要將當前分支 curBranch的代碼移到 master??梢栽俅问褂?git merge。此時合并后 master 的提交是一條線性 commit

git tag

  • tag 對應某次 commit, 是一個點,是不可移動的。branch 對應一系列commit,是很多點連成的一根線,有一個HEAD 指針,是可以依靠 HEAD 指針移動的。所以,兩者的區別決定了使用方式,改動代碼用 branch,不改動只查看用 tag
  • 創建 tag 是基于本地分支的 commit,而且與分支的推送是兩回事,就是說分支已經推送到遠程了,但是 tag 并沒有,如果要把 tag 推送到遠程分支上,需要另外執行 tag 的推送命令
  1. # git tag <tagName> //基于最新的 commitId 創建 tagName 
  2. # git tag -a <tagName> <commitId> // 基于某次 commitId 創建 tagName 
  3. # git push origin <tagName> //推送到遠程倉庫 
  4. # git push --tags //推送所有標簽 
  5.  
  6. # git tag -d <tagName> // 刪除本地 tag  
  7. # git push origin :refs/tags/<tagName> // 刪除遠程 tag  

歡迎指正文中錯誤

參考文章

 

  • 一個小時學會Git[1]
  • 程序員必備基礎:Git 命令全方位學習[2]
  • Git Reset 三種模式[3]

 

責任編輯:武曉燕 來源: 潛行前行
相關推薦

2021-06-13 09:01:47

SedLinux命令

2011-04-18 10:52:17

Jpcap

2010-05-21 12:27:22

SVN使用教程

2010-06-30 10:46:20

Linux SNMP安

2010-10-13 15:02:09

Rsync同步FreeBSDCentOS

2010-08-03 15:23:29

CentOS 5.3

2014-07-28 14:43:14

git開源

2015-10-12 09:34:29

git教程

2013-03-04 14:24:58

Google Maps

2013-02-28 13:35:02

Google Maps

2010-03-11 11:12:30

vCenter日志文件

2009-12-08 12:24:36

LinuxNTFS分區寫操作

2010-06-07 10:00:32

安裝配置IPv6

2009-06-03 14:19:34

Struts2Guice

2017-09-29 17:20:13

大數據MySQLsqlyog

2021-11-04 08:00:04

模式開發設計

2011-07-12 10:24:11

域控制器

2020-05-10 16:59:56

Python裝飾器開發

2021-06-04 05:16:33

瀏覽器js源碼

2021-06-07 00:15:26

瀏覽器HtmlParser
點贊
收藏

51CTO技術棧公眾號

一道本无吗一区| 欧美夫妇交换xxx| 欧美猛烈性xbxbxbxb| 国内久久精品视频| 久久乐国产精品| 欧洲一级黄色片| 亚洲精品三区| 色哟哟国产精品| 一级特黄妇女高潮| 久久久久久青草| 国产成人在线观看免费网站| 日本国产精品视频| 亚洲精品理论片| 久久精品九色| 在线视频欧美区| 欧美一级欧美一级| 黄av在线播放| 国产日韩欧美综合在线| 成人欧美一区二区| 伊人免费在线观看| 亚洲三级网站| 久久亚洲私人国产精品va| av黄色免费网站| 9国产精品午夜| 欧美精品一卡两卡| 免费一级特黄录像| 中老年在线免费视频| 亚洲另类色综合网站| 日韩精彩视频| 亚洲av电影一区| 成人午夜视频网站| 亚洲永久免费观看| 中文字幕欧美人妻精品| 午夜在线a亚洲v天堂网2018| 色综合91久久精品中文字幕| 免费成人深夜蜜桃视频| 国产精品片aa在线观看| 亚洲精品电影网| 日韩av手机在线| 九九热视频精品| 天天久久综合| 中文字幕亚洲无线码a| 国产精品无码久久久久久| 丁香五月缴情综合网| 欧美一区国产二区| 亚洲色图欧美自拍| 亚洲网站免费| 欧美一级在线视频| 在线视频观看91| 91麻豆精品| 91精品国产欧美一区二区18| 女同激情久久av久久| 亚洲一区二区三区久久久| 欧美亚洲国产怡红院影院| 久草在在线视频| 日韩欧美一区二区三区在线观看| 欧美日韩中文字幕在线| 免费看一级大黄情大片| 欧美男人天堂| 一本大道久久精品懂色aⅴ| 免费日韩视频在线观看| 在线观看精品| 欧美群妇大交群中文字幕| 免费看污污网站| 婷婷激情成人| 日韩一区国产二区欧美三区| 超碰人人cao| 激情小说亚洲图片| 日韩美女av在线| 中文字幕在线观看免费高清| 久久精品av| 九色精品美女在线| 国产精品成人av久久| 国产精品试看| 国产精品久久久91| 国产色视频在线| caoporm超碰国产精品| 久久av免费一区| 国产一二三区在线视频| 中文字幕视频一区二区三区久| 小说区视频区图片区| 免费看电影在线| 欧美性猛xxx| 午夜精品中文字幕| 91精品丝袜国产高跟在线| 日韩精品免费电影| 国产三级aaa| 狠狠干综合网| 秋霞av国产精品一区| 一本久道久久综合无码中文| 国产成人高清视频| 免费观看成人在线| 中文字幕有码在线观看| 婷婷夜色潮精品综合在线| 黄色av免费在线播放| 国产一区二区三区视频在线| 亚洲精美色品网站| 久久噜噜色综合一区二区| 亚洲高清网站| 成人黄色av网站| 日韩大胆人体| 亚洲精品久久7777| 国产一区视频免费观看| 欧美第一在线视频| 亚洲亚裔videos黑人hd| 美女毛片在线观看| 裸体在线国模精品偷拍| 好吊色欧美一区二区三区四区| 啊v视频在线| 精品国产乱码久久久久久天美 | 欧美日韩一区二区不卡| 精品国产乱码久久久久夜深人妻| 欧洲激情视频| 97超碰国产精品女人人人爽| 国产精品久久久久久免费播放| 97久久久精品综合88久久| 91免费网站视频| 日韩网站中文字幕| 日韩av有码在线| 校园春色 亚洲| 美女被久久久| 精品欧美日韩| 国产天堂在线播放视频| 91精品啪在线观看国产60岁| 在线国产视频一区| 国产精品入口| 精品国产免费久久久久久尖叫 | av地址在线观看| 久久中文字幕av| 国产精品国产三级国产专播精品人| 免费观看国产精品| 亚洲综合色自拍一区| 中文字幕线观看| 日本久久精品| 国产精品久久久久久久电影| 免费a在线观看| 天天操天天色综合| 日本黄色动态图| 亚洲一级黄色| 国产日韩欧美一区二区三区四区| 亚洲夜夜综合| 欧美岛国在线观看| 久久久久久久久久久久久久免费看 | 亚洲第一天堂| 成人黄色片在线| 麻豆电影在线播放| 欧美另类z0zxhd电影| 国产一二三av| 国产综合一区二区| 在线亚洲美日韩| 国产精品麻豆| 欧美激情在线狂野欧美精品| 国产 日韩 欧美 综合| 尤物在线观看一区| 香蕉视频污视频| 99在线|亚洲一区二区| 韩国一区二区三区美女美女秀| 爱福利在线视频| 日韩电视剧在线观看免费网站| 国产无精乱码一区二区三区| av电影一区二区| 日本毛片在线免费观看| 亚洲黄色录像| 国产不卡在线观看| 欧美日本高清| 欧美sm极限捆绑bd| 99精品视频99| 久久精品人人爽人人爽| 亚洲美女爱爱视频| 欧美深夜福利| 欧美精品亚洲| 欧美v亚洲v综合v国产v仙踪林| 久久精品男人天堂| 亚洲精品国产一区二| 精品高清一区二区三区| 亚洲av无码一区二区三区人| 蜜臀久久久99精品久久久久久| 亚洲精品一卡二卡三卡四卡| 日韩高清二区| 欧美在线一区二区视频| 在线免费黄色| 亚洲国产成人精品女人久久久| 久久国产黄色片| 日本一区二区动态图| 欧美高清精品一区二区| 亚洲理伦在线| 影音欧美亚洲| 久久国产精品色av免费看| 国产精品久久久91| 国产在线拍揄自揄拍视频| 亚洲午夜性刺激影院| 99久久99久久久精品棕色圆| 岛国av一区二区三区| 啪啪一区二区三区| 99麻豆久久久国产精品免费| 午夜免费福利视频在线观看| 日韩午夜电影| 综合网五月天| 沈樵精品国产成av片| 国产99在线免费| 成人免费一区| 91成人在线观看国产| 操你啦视频在线| 亚洲精品综合久久中文字幕| 国产高清精品软件丝瓜软件| 色哟哟在线观看一区二区三区| 人人澡人人澡人人看| 久久九九久精品国产免费直播| 中文字幕在线观看视频www| 日韩精品五月天| 日韩欧美一区二| 亚洲美女视频| 欧美一区观看| 久久久久久毛片免费看 | 爱爱精品视频| 国产欧美va欧美va香蕉在线| 亚洲涩涩在线| 欧美极品欧美精品欧美视频 | 久久久久女教师免费一区| 91高清在线| 精品五月天久久| 日韩中文字幕影院| 欧美一区二区三区免费大片| 国产在线观看第一页| 懂色av影视一区二区三区| 青青草国产在线观看| 一色桃子久久精品亚洲| 五月婷六月丁香| 国产喂奶挤奶一区二区三区| 黄色污在线观看| av电影在线观看一区| 国产亚洲精品成人a| 国产高清在线观看免费不卡| 中文字幕中文在线| 蜜桃91丨九色丨蝌蚪91桃色| 欧美在线观看视频网站| 久热re这里精品视频在线6| koreanbj精品视频一区| 在线不卡亚洲| 国产一区二区四区| 激情婷婷亚洲| 欧美日韩性生活片| 国产精品免费看| 欧美性大战久久久久xxx| 国产精品美女| 四虎永久在线精品无码视频| 午夜在线精品| 网站一区二区三区| 乱一区二区av| 伊人久久综合97精品| 国产欧美亚洲精品| 亚洲综合色在线观看| 中文字幕在线观看视频一区| 欧美激情电影| 天堂一区二区三区| 成人羞羞动漫| 中文字幕中文字幕在线中心一区 | 亚洲韩国在线| 色乱码一区二区三区网站| 亚洲欧美日本国产有色| 久久视频精品| 国产91视频一区| 国产精品久久久久久久免费软件| 欧美亚洲国产成人| 日产国产欧美视频一区精品| 色一情一区二区| 欧洲杯半决赛直播| 久久精品人人爽人人爽| 国产精品v日韩精品v在线观看| 日本在线不卡视频| 一区二区久久精品| 丁香另类激情小说| 中文字幕xxx| 国产精品乱人伦| 免费看成人av| www.精品视频| 亚洲福利视频专区| 国产黄在线观看免费观看不卡| 在线色欧美三级视频| av毛片在线免费| 97在线精品国自产拍中文| 国产另类xxxxhd高清| 91精品视频在线| 久久悠悠精品综合网| 日韩亚洲欧美精品| 国产中文一区| 亚洲老女人av| www.亚洲人| 亚洲人做受高潮| 欧美午夜精品久久久久久人妖| 这里只有精品9| 亚洲国产日韩欧美在线图片| yiren22综合网成人| 欧美日韩国产成人在线观看| 国产综合色区在线观看| 国产传媒欧美日韩| 欧美日韩性在线观看| 日韩极品视频在线观看| 日韩电影免费在线| 国产精品一区二区无码对白| 国产日韩影视精品| 日韩欧美国产亚洲| 欧美精品123区| 毛片在线能看| 高清欧美性猛交xxxx| 在线播放成人| 日本免费一区二区三区| 在线看片欧美| 九九九九九伊人| 国产欧美精品国产国产专区| 日韩aaaaaa| 欧美一卡2卡三卡4卡5免费| www.日本在线播放| 国产在线精品观看| 亚洲精品免费在线| 日韩乱码一区二区三区| 亚洲第一区在线观看| 欧美jizzhd69巨大| 日本不卡免费高清视频| 精品在线视频免费观看| 第一会所亚洲原创| 色综合电影网| 国产精品一卡| 无码人妻一区二区三区在线| 最新欧美精品一区二区三区| 天天干在线播放| 色97色成人| 欧美一区二区三区小说| 91av国产精品| 国产一区二区三区18| 神马久久午夜| 国内视频一区二区| 影音先锋中文字幕一区二区| 992kp免费看片| 国产精品国产三级国产| 日韩国产成人在线| 亚洲一区二区黄| 校园春色亚洲色图| 欧美精品国产精品久久久 | 91成人短视频在线观看| 日本高清一区| 日韩国产欧美三级| 亚洲午夜精品久久久久久高潮| 色菇凉天天综合网| 成人性爱视频在线观看| 国产精品成人一区二区| 国产伦精品一区二区三区视频 | 欧美aaa在线观看| 国产精品视频一区二区三区,| 欧美色精品在线视频| 每日更新在线观看av| 国产999精品久久久| 国内精品久久久久久久久电影网 | 国产福利电影在线| 九九精品视频在线看| 国产精品www色诱视频| av人人综合网| 久久精品一二三区| 午夜亚洲视频| 日韩在线免费观看av| 欧亚洲嫩模精品一区三区| 1769在线观看| 7777精品伊久久久大香线蕉语言| 亚洲欧美综合久久久| 国产伦精品一区二区三区妓女下载 | 天堂网在线免费观看| 国产精品天美传媒沈樵| 国产精品久久久久精| 精品少妇一区二区30p| 精品三级av| 日韩视频在线免费看| 国产精品毛片无遮挡高清| 99re只有精品| 91精品国产色综合久久不卡98| 九九免费精品视频在线观看| 蜜臀视频一区二区三区| 亚洲欧美日韩电影| 人妻无码中文字幕免费视频蜜桃| 欧亚精品在线观看| 日韩免费视频| 久久精品aⅴ无码中文字字幕重口| 五月激情六月综合| 在线观看的av| 国产精品对白一区二区三区| 视频一区欧美精品| 国产精品 欧美激情| 亚洲久久久久久久久久| 亚洲精品第一| 国产特级淫片高清视频| 国产精品美女久久久久久| 欧美视频久久久| 国产精品综合久久久| 亚洲午夜视频| 五月婷婷婷婷婷| 亚洲国产一区二区三区在线观看 | 亚洲男人影院| 中文字幕av久久爽av| 亚洲欧洲日产国码av系列天堂| 九色精品蝌蚪| 91最新在线观看|