git操作總結(jié)

分布式版本控制系統(tǒng)

  • Git是分布式的SCM ,SVN是集中式的

  • Git每一個(gè)歷史版本存儲(chǔ)完整的文件,SVN存儲(chǔ)文件差異

  • Git可離線完成大部分操作,SVN則相反

  • Git有著更優(yōu)雅的分支和合并實(shí)現(xiàn)

  • Git有更強(qiáng)的撤銷修改和修改版本歷史的能力

  • Git速度更快,效率更高

    Git 的安裝 和簡(jiǎn)單配置

  • 新手指南https://git-scm.com/book/zh/v2

    which -a git
      git --version
      vim .bash_profile
    

創(chuàng)建項(xiàng)目

#查看本地的遠(yuǎn)程倉庫
git remote
#未添加遠(yuǎn)程倉庫顯示為空
#添加遠(yuǎn)程倉庫
git remote add origin git@github.com:xxxx
#查看本地的遠(yuǎn)程倉庫
git remote
#顯示遠(yuǎn)程倉庫origin
//origin
#將本地的master分支推送至遠(yuǎn)程origin倉庫
git push origin master
#創(chuàng)建開發(fā)分支并切換至開發(fā)分支dev
git checkout -b dev
#推送一個(gè)dev分支至遠(yuǎn)程倉庫origin
git push origin dev

#Download Github project
git clone git@github.com:xxxxx
# 創(chuàng)建新的項(xiàng)目
echo "# test" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:xxxx/test.git
git push -u origin master
# 添加遠(yuǎn)程分支推送master
git remote add origin git@github.com:xxxx/test.git
git push -u origin master


開發(fā)

#創(chuàng)建開發(fā)components分支開發(fā)模板
git checkout -b createComponents
#查看當(dāng)前版本狀態(tài)
git status
#添加到本地緩存區(qū)
git add .
# 提交到本地倉庫
git commit -m "提交components"
#切換到開發(fā)分支
git checkout dev
#合并分支 --on-ff 會(huì)將合并的日志添加到git Log中,不加只會(huì)在dev中打上合并的tag
git merge createComponents --on-ff
# 查看日志
git log
# 推送至遠(yuǎn)程dev
git push origin dev
# 查看現(xiàn)有的分支
git branch
# 刪除分支createComponets
git branch -d createComponets

# 模擬數(shù)據(jù)工具
# https://www.charlesproxy.com/
# https://software-download.microsoft.com/download/pr/MediaCreationTool1903.exe
  • git 原理

    #查看 add 命令 
    git --help add
    # HEAD、master、與branch
    # HEAD:當(dāng)前commit的引用
    # branch: 對(duì)commit的引用
    # 正向工作 本地到遠(yuǎn)程
    # 工作區(qū)  - git commit -a ->本地庫 - git push ->遠(yuǎn)程倉庫:origin
    # 工作區(qū)  - git add - > 暫存區(qū) - git commit ->本地庫 - git push ->遠(yuǎn)程倉庫:origin
    # git add | git rm | git rm --cached | git rm -f
    # 反向工作 遠(yuǎn)程到本地
    # 工作區(qū)  <- git checkout | git diff - 暫存區(qū) <- git diff --cached -本地庫 <- git fetch | git pull->遠(yuǎn)程倉庫:origin
    #工作區(qū)  <- git checkout HEAD | git diff HEAD -本地庫
    

git 目錄

# config  配置文件
$ cat config
# HEAD  分支信息 
$ git branch
$ cat HEAD
# objects
$ echo "test" | git hash-object -w --stdin
9daeafb9864cf43055ae93beb0afd6c7d144bfa4
$ find .git/objects/ -type f
$ git cat-file -p 9daeafb9864cf43055ae93beb0afd6c7d144bfa4
$ echo "version" > tag.txt
$ git hash-object -w tag.txt
$ git cat-file -t 088eda41aa61dc62fefef5d183a1f703bb01bfa6
blob
$ git cat-file -p master^{tree}      
# logs
$ git log | git log --pretty=oneline
#info
# refs
  • 命令注釋
fetch 抓取遠(yuǎn)程倉庫
pull == fetch + merge  抓取且合并
merge 合并分支
git branch -a 列出全部分支包括遠(yuǎn)程分支
演示合并沖突
rebase 變基 //將分支直接移植到主分支,危險(xiǎn)
# 需要?jiǎng)?chuàng)建哪些分支
production 分支
develop分支
feature 分支
release 分支
hotfix 分支

# 分支命名規(guī)范
開發(fā)階段
dev-mmdd-需求名稱
測(cè)試階段
test-mmdd
發(fā)布階段
tag-mmdd

# 回退操作
# 查看尚未緩存的文件
$ git diff
# 顯示工作版本和HEAD的差異
$ git diff HEAD
# 比較兩個(gè)歷史版本之間的差異
$ git diff SHA1 SHA2
# 查看已經(jīng)暫存起來的文件(staged)和上次提交時(shí)的快照之間(HEAD)的差異
$ git diff --cached
# 撤銷修改(暫存區(qū) git reset HEAD file 參數(shù) soft mixed hard)
git reset --hard branch名
本質(zhì)是移動(dòng)HEAD 以及它所指向的branch
reset --hard & reset --soft & reset 不加參數(shù)
--soft:重置位置的同時(shí),保留工作目錄和暫存區(qū)的內(nèi)容,并把重置HEAD的位置所導(dǎo)致的新的文件差異放到暫存區(qū)
--mixed:(默認(rèn)) 重置位置的同時(shí),保留工作目錄的內(nèi)容,并清空暫存區(qū)
--hard:重置位置的同時(shí),清空工作目錄的所有改動(dòng)
git checkout branch名的本質(zhì)其實(shí)是把HEAD 指向指定的branch,然后遷出這個(gè)branch所對(duì)應(yīng)的commit的工作目錄
# git reset 和 git checkout差異
checkout 和 reset 都可以切換HEAD的位置,他們除了有許多細(xì)節(jié)的差異外,最大的區(qū)別在于 reset在移動(dòng)HEAD時(shí)會(huì)帶著它所指向的branch 一起移動(dòng),而checkout不會(huì)
#暫存修改(stash) 臨時(shí)存放工作目錄的改動(dòng)
git stash
git stash pop
git stash -u
# 查看暫存 (stash list)
# 使用暫存(git stash apply stash@(1)/stash pop)
# 清空暫存 (stash clear)
# git reset [HEAD]
$ git reset 3d845524c1db2fe15a99f0f1227a0bbfa385c52b [HEAD]
#revert
$ git revert HEAD^
checkout

解決沖突 
先手工合并差異文件
$ git add 差異文件
$ git commit -m "tag 注釋"
$ git push origin 分支名
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 所以創(chuàng)建一個(gè)版本庫也非常簡(jiǎn)單,如下我是D盤 –> www下 目錄下新建一個(gè)testgit版本庫。 pwd 顯示當(dāng)前...
    summerzhao閱讀 416評(píng)論 0 0
  • 前言 Git使用教程 Git是什么 Git是一個(gè)開源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目。 ...
    90后的思維閱讀 1,027評(píng)論 0 0
  • 簡(jiǎn)介 Git是一個(gè)開源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目。 Git 與常用的版本控制工具 ...
    閩越布衣閱讀 2,877評(píng)論 0 18
  • git 使用筆記 git原理: 文件(blob)對(duì)象,樹(tree)對(duì)象,提交(commit)對(duì)象 tree對(duì)象 ...
    神刀閱讀 3,863評(píng)論 0 10
  • (預(yù)警:因?yàn)樵敿?xì),所以行文有些長(zhǎng),新手邊看邊操作效果出乎你的預(yù)料) 一:Git是什么? Git是目前世界上最先進(jìn)的...
    axiaochao閱讀 2,011評(píng)論 1 8

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