免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

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

開通VIP
一聽就懂的Git詳解





Git 概述



Git 的特色是分支,人家圖標(biāo)上都敢這么畫了。

對了,這里要提一下,Git 和 Linux 是同一個爸爸,所以 Linux 系統(tǒng)上能跑的原生指令 Git 上面也都可以,反之也一樣。





git 分區(qū)原理


工作區(qū)。新文件沒被add到暫存區(qū),顯紅色。

暫存區(qū)。進(jìn)倉庫前暫時存放區(qū)域,未對本地倉庫生效。對暫存區(qū)文件修改,顯藍(lán)色。第一次創(chuàng)建并add到暫存區(qū)的文件,由于遠(yuǎn)程倉庫沒同步,顯綠色。(注:存放在 “.git/index目錄” 。

本地倉庫。暫存區(qū)commit代碼放入本地倉庫,通過 push 推送到遠(yuǎn)程倉庫。(注:存在“.git”目錄。

遠(yuǎn)程倉庫。在前面的話,倉庫里都有些什么東西只有你自己知道,但是一旦把本地倉庫推到遠(yuǎn)程倉庫之后,倉庫里有什么東西大家就都知道了。





Git 常用指令



本篇講解包括但不限于這些命令。

設(shè)置用戶簽名


開頭兩個命令是用來設(shè)置用戶簽名的,這個一般就用一次就完事兒了,因為你要提交代碼的時候是需要責(zé)任跟蹤的。

這個 name,email 啥的,人家也不會去認(rèn)證,不過組里面肯定是會有規(guī)范的,也不會讓你想起啥名就隨便起吧。

初始化本地庫


新手一般就老老實實 git init 起手嘛,昨天我也是這么問我導(dǎo)師的,他說不用,直接 git clone 就好了。我想想也是,團(tuán)隊開發(fā)嘛。

查看本地庫狀態(tài)


git status

首次查看,工作區(qū)是沒有什么文件的:
$ git statusOn branch masterNo commits yetnothing to commit (create/copy files and use 'git add' to track)

當(dāng)我們新增了一個文件之后,再查看狀態(tài), 會檢測到未追蹤的文件:
$ git statusOn branch masterNo commits yetUntracked files: (use 'git add <file>...' to include in what will be committed) hello.txtnothing added to commit but untracked files present (use 'git add' to track)

添加暫存區(qū)


git add 文件名

$ git add hello.txtwarning: LF will be replaced by CRLF in hello.txt.The file will have its original line endings in your working directory.

再次查看狀態(tài)(檢測到暫存區(qū)有新文件:
$ git statusOn branch masterNo commits yetChanges to be committed: (use 'git rm --cached <file>...' to unstage) new file: hello.txt

提交本地庫


git commit -m '日志信息' 文件名

$ git commit -m 'my first commit' hello.txtwarning: LF will be replaced by CRLF in hello.txt.The file will have its original line endings in your working directory.[master (root-commit) 86366fa] my first commit1 file changed, 16 insertions(+)create mode 100644 hello.txt

再查看狀態(tài)(沒有文件需要提交):
$ git statusOn branch masternothing to commit, working tree clean

修改文件


修改一下文件之后再查看狀態(tài):
$ git statusOn branch masterChanges not staged for commit: (use 'git add <file>...' to update what will be committed) (use 'git checkout -- <file>...' to discard changes in working directory) modified: hello.txtno changes added to commit (use 'git add' and/or 'git commit -a')

那么接下來就需要再次將修改的文件提交到暫存區(qū),然后提交到本地倉庫。

查看歷史版本


git reflog 查看版本信息git log 查看版本詳細(xì)信息

如果是想快速瀏覽版本信息,可以使用 reflog 即可,畢竟公司項目版本迭代信息可能已經(jīng)很多了,想看詳細(xì)日志也得看你有沒有那個精力了。

$ git reflog087a1a7 (HEAD -> master) HEAD@{0}: commit: my third commitca8ded6 HEAD@{1}: commit: my second commit86366fa HEAD@{2}: commit (initial): my first commit

版本


以前我只知道版本回退,現(xiàn)在我知道原來還能向新。

git reset --hard 版本號

版本號是什么?版本號,查看一下日志就能看到了。

$ git reflog087a1a7 (HEAD -> master) HEAD@{0}: commit: my third commitca8ded6 HEAD@{1}: commit: my second commit86366fa HEAD@{2}: commit (initial): my first commit

--切換到 86366fa 版本,也就是我們第一次提交的版本$ git reset --hard 86366faHEAD is now at 86366fa my first commit

--切換完畢之后再查看歷史記錄,當(dāng)前成功切換到了 86366fa 版本$ git reflog86366fa (HEAD -> master) HEAD@{0}: reset: moving to 86366fa087a1a7 HEAD@{1}: commit: my third commitca8ded6 HEAD@{2}: commit: my second commit86366fa (HEAD -> master) HEAD@{3}: commit (initial): my first commit--然后查看文件 hello.txt,發(fā)現(xiàn)文件內(nèi)容已經(jīng)變化

Git 切換版本,底層其實是移動的 HEAD 指針。





Git 分支操作



在版本控制過程中,同時推進(jìn)多個任務(wù),為每個任務(wù),我們就可以創(chuàng)建每個任務(wù)的單獨分支。使用分支意味著程序員可以把自己的工作從開發(fā)主線上分離開來,開發(fā)自己分支的時候,不會影響主線分支的運行。對于初學(xué)者而言,分支可以簡單理解為副本,一個分支就是一個單獨的副本。(分支底層其實也是指針的引用。


分支基本操作


查看分支


小伙子,不要一上來就想著創(chuàng)建分支嘛。先看看前輩們已經(jīng)達(dá)到了哪個高度了嘛。

git branch -v

$ git branch -v* master 087a1a7 my third commit (*代表當(dāng)前所在的分區(qū))

創(chuàng)建分支


git branch 分支名

$ git branch hot-fix$ git branch -vhot-fix 087a1a7 my third commit (剛創(chuàng)建的新的分支,并將主分支 master的內(nèi)容復(fù)制了一份)* master 087a1a7 my third commit

分支開發(fā)


接下來就可以在分支上進(jìn)行開發(fā)了,開發(fā)完之后記得將代碼提交到本地倉庫。

切換分支


git checkout 分支名
   
$ git checkout hot-fixSwitched to branch 'hot-fix'--發(fā)現(xiàn)當(dāng)先分支已由 master 改為 hot-fix

合并分支


git merge 分支名

這里有個要注意的點:不僅是可以把旁支合并到主支上,主支也可以被合并到分支上,分支之間也可以互相合并。

反正你愛怎么玩怎么玩,都是在你本地倉庫上,又沒有推送到遠(yuǎn)程倉庫。

那現(xiàn)在我們想把旁支合并到主支上要怎么做呢?

1、切換到主支2、git merge 旁支名

這樣就萬事大吉了嗎?不一定的。腦子清醒的話很容易想到一個問題:主支修改了一個文件,分支也修改了同一個文件,現(xiàn)在以誰的為準(zhǔn)?

腦子更清醒的人就要說了:你傻呀,我 clone 下來就切到分支去操作了,在我本地倉庫我又不會去動主支的。

腦子再清醒一點的人已經(jīng)懶的跟他說了:大哥,咱這是團(tuán)隊開發(fā),咱的本地倉庫早晚是都要合并到主線上的。

合并沖突解決


沖突產(chǎn)生的表現(xiàn):后面狀態(tài)為 MERGING

打開沖突文件可以看到?jīng)_突的地方:
hello git! hello atguigu!<<<<<<< HEADhello git! hello atguigu! master testhello git! hello atguigu!=======hello git! hello atguigu!hello git! hello atguigu! hot-fix test>>>>>>> hot-fix

HEAD 到 === 的部分是主支的,后面是 hot-fix 的

沖突產(chǎn)生的原因:

合并分支時,兩個分支在同一個文件的同一個位置有兩套完全不同的修改。Git 無法替我們決定使用哪一個。必須人為決定新代碼內(nèi)容。

解決辦法:
1、刪掉沖突中不要的部分,留下最終的部分2、git add 添加到暫存區(qū)3、 git commit -m 注意,此時的 commit 后面不能帶文件名。帶文件名是幾個意思呢?到底用哪個呢?然后就會發(fā)現(xiàn)合并成功了。





Git 團(tuán)隊協(xié)作機制


團(tuán)隊協(xié)作


跨團(tuán)隊協(xié)作






遠(yuǎn)程倉庫



這里不說 github,因為還有 gitlab,公司內(nèi)部代碼怎么能放到廣域網(wǎng)上呢?。?!


別名


為什么要別名呢?其實起不起別名都無所謂,主要是有個別名方便操作。你說是記一個網(wǎng)址容易還是記一個自己起的名字容易嘞?

$ git remote -v$ git remote add ori https://github.com/xxx.git$ git remote -vori https://github.com/xxx.git (fetch)ori https://github.com/xxx.git (push)

推送本地倉庫到遠(yuǎn)程倉庫


當(dāng)文件還在本地倉庫的時候,咱怎么玩都行。但是一旦推送上去了,那就產(chǎn)生歷史版本了,大家都看得到了。

不過這個推送啊,也不是咱想推送就能推送的,還得管理員給咱授權(quán),這個不難理解吧。

git push 別名 分支

$ git push ori masterLogon failed, use ctrl+c to cancel basic credential prompt.Username for 'https://github.com': atguiguyueyueCounting objects: 3, done.Delta compression using up to 12 threads.Compressing objects: 100% (2/2), done.Writing objects: 100% (3/3), 276 bytes | 276.00 KiB/s, done.Total 3 (delta 0), reused 0 (delta 0)To https://github.com/atguiguyueyue/git-shTest.git* [new branch] master -> master

克隆遠(yuǎn)程倉庫到本地


這不用說吧,這個很簡單。咱雖然說之前不會推送,但是拉取還是沒有問題的。

clone 會做如下操作:

1、拉取代碼。
2、初始化本地倉庫。
3、創(chuàng)建別名。

會創(chuàng)建別名,你 clone 之后用 git remote -v 看一下,一般是 origin。

拉取遠(yuǎn)程庫內(nèi)容


這個有兩個辦法,昨天我用的是先 clone,在 checkout 的方式選擇我要的分支。

也可以直接 pull:
git pull 遠(yuǎn)程庫地址別名 遠(yuǎn)程分支名

$ git pull ori masterremote: Enumerating objects: 5, done.remote: Counting objects: 100% (5/5), done.remote: Compressing objects: 100% (1/1), done.remote: Total 3 (delta 1), reused 3 (delta 1), pack-reused 0Unpacking objects: 100% (3/3), done.From https://github.com/atguiguyueyue/git-shTest* branch master -> FETCH_HEAD 7cb4d02..5dabe6b master -> ori/masterUpdating 7cb4d02..5dabe6bFast-forwardhello.txt | 2 +-1 file changed, 1 insertion(+), 1 deletion(-)

????????????????  END  ???????????????

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

聯(lián)系客服