久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Git 常用命令總結(jié),,掌握這些,,輕松駕馭版本管理

 昵稱QvKmxOqV 2020-03-03

最近公司的代碼管理工具要從SVN轉(zhuǎn)到Git上,因此雖然之前用過Git,,但是都是一些簡單的推送提交,,因此還是有必要進行一些系統(tǒng)的學(xué)習(xí),,這里做一下筆記,以備后詢,,且不定期更新,。

關(guān)于SVN和Git的比較已經(jīng)有很多文章說過了,,就不再贅述,本文的重點是如何使用常用的Git命令進行操作,,冷門的就不說了,,且比較零散,系統(tǒng)的學(xué)習(xí)推介廖雪峰的Git教程,。

聲明

  1. 下面用戶名都為 SHERlocked93,請自行修改成自己的用戶名

1. 概覽

  • 工作區(qū) Workspace

  • 暫存區(qū) Stage / Index

  • 本地倉庫 Repository

  • 遠(yuǎn)程倉庫 Remote

2. 修改

2.1 暫存修改

操作一覽

操作bash
創(chuàng)建stashgit stash
查看git stash list
應(yīng)用git stash apply stash@{ <num>}
刪除git stash drop stash@{ <num>}
還原上一個暫存并刪除暫存(如無conflict)git stash pop

如果在工作的時候出現(xiàn)了臨時需要解決的問題,,而你又不希望提交,,那么有個 stash功能

  1. git stash

在暫存后工作區(qū)會回退到最近的一個commit的狀態(tài),以便開建新分支,;比如我們修復(fù)bug時,我們會通過創(chuàng)建新的bug分支進行修復(fù),,然后合并,,最后刪除;

當(dāng)手頭工作沒有完成時,,先把工作現(xiàn)場 git stash一下,然后去修復(fù)bug,,修復(fù)后,,再 git stash pop,回到工作現(xiàn)場,。

2.2 撤銷修改

還未提交到暫存區(qū)

當(dāng)修改還沒有被 add的時候,,可以使用

  1. git checkout -- filename.txt

來丟棄工作區(qū)某文件的修改,,當(dāng)然也可以把后面的文件改成 *來撤銷所有文件的修改,。這是用倉庫的文件覆蓋工作區(qū)的文件,。

注意這里用的是 --,如果沒有這個 --的話就變成切換分支了,。

還未提交到倉庫

如果你的修改已經(jīng)被 add到了暫存區(qū),,但是還沒有被 commit,那么可以使用

  1. git reset HEAD filename.txt

  2. git checkout -- filename.txt

首先用 reset來把修改撤回到工作區(qū),,再使用上面的 checkout命令撤回工作區(qū)的修改。這里的 reset相當(dāng)于 add的反操作,。

已經(jīng)提交到倉庫

則可以版本回退

  1. git reset --hard 15zdx2s

這里的 --hard表示強制回退,,丟棄本地的修改。這個回退比較野蠻,,該版本號之后的提交都將不可見。

撤銷之前某一個提交

git revert撤銷一個提交的同時會創(chuàng)建一個新的提交,,這是一個安全的方法,,因為它不會重寫提交歷史。但實現(xiàn)上和reset是完全不同的,。它撤銷這個提交引入的更改,然后在最后加上一個撤銷了更改的新提交,,而不是從項目歷史中移除這個提交,。

  1. git revert 46af7z6

相較于 resetrevert不會改變項目歷史,,對那些已經(jīng)發(fā)布到共享倉庫的提交來說這是一個安全的操作。其次 git revert 可以將提交歷史中的任何一個提交撤銷,、而 reset會把歷史上某個提交及之后所有的提交都移除掉,,這太野蠻了。

相比 reset,,它不會改變現(xiàn)在的提交歷史。因此,, revert 可以用在公共分支上,, reset 應(yīng)該用在私有分支上。

合并commit

如果已經(jīng) commit了怎么辦,,如果要撤回目前的 commit,可以把它合并到上一個 commit

  1. git rebase -i HEAD~~

在出現(xiàn)的兩個提交信息的 pick改為 fixup

3. 分支操作

3.1 創(chuàng)建/查看/合并分支

操作一覽

操作bash
查看分支git branch
查看本地和遠(yuǎn)程分支git branch -a
在target分支上創(chuàng)建分支,,沒有則從當(dāng)前分支git branch <branch-name> <target-branch>
創(chuàng)建并切換分支git checkout -b <branch-name>
合并某分支到當(dāng)前分支git merge <branch-name>
刪除分支,,只能刪參與了合并的git branch -d <branch-name>
強行刪除git branch -D <branch-name>
刪除遠(yuǎn)程分支git push origin : <remote-branch-name>

創(chuàng)建分支

  1. # 創(chuàng)建新分支

  2. git branch bug-fix

  3. # 查看分支,,-a查看本地和遠(yuǎn)程的分支,,-r查看遠(yuǎn)程分支,,-l或沒有只查看本地

  4. git branch -a

  5. # 切換到剛剛創(chuàng)建的分支

  6. git checkout bug-fix

上面兩個步驟可以合并為

  1. # 創(chuàng)建并切換到分支

  2. git checkout -b bug-fix

如果修改一下本地文件之后在這個分支繼續(xù)培育一個版本之后,怎么去合并到主分支呢

  1. git add *

  2. git commit -m 'some change'

  3. # 切換到主分支

  4. git checkout master

  5. # 合并分支

  6. git merge bug-fix

  7. # 刪除分支 (可選)

  8. git branch -d bug-fix

如果master分支和新的分支都各自培育了版本,,那么自動合并通常會失敗,,發(fā)生沖突 conflict,此時需要打開文件解決沖突之后 commit一個版本以完成合并

  1. git add *

  2. git commit -m 'branch merge'

這里提一下,, merge的時候有幾個主要模式,, --no-fffast-forward,,其中 fast-forward是默認(rèn)的

  1. fast-forward:在master開始的新分支前進了幾個版本之后如果需要merge回來,,此時master并沒有前進,那么這個模式就是把HEAD與master指針指向新分支上,,完成合并,。這種情況如果刪除分支,則會丟失分支信息,,因為在這個過程中并沒有創(chuàng)建commit,。

  2. --no-ff:關(guān)閉默認(rèn)的 fast-forward模式,也就是在merge的時候生成一個新的commit,,這樣在分支歷史上就可以看出分支信息。

3.2 遠(yuǎn)程倉庫操作

操作一覽

操作bash
克隆git clone <url>
添加遠(yuǎn)程倉庫git remote add <name> <url>
刪除遠(yuǎn)程倉庫git remote rm <name>
拉取git pull <remote-branch-name> <local-branch-name>
推送本地所有分支到遠(yuǎn)程git push --all origin
推送到遠(yuǎn)程同名分支git push origin <local-branch-name>
推送本地分支到遠(yuǎn)程mastergit push origin <local-branch-name>master
把當(dāng)前本地分支推送并創(chuàng)建到遠(yuǎn)程git push origin
檢出遠(yuǎn)程分支git checkout -b <new-local-branch-name> origin/ <remote-branch-name>

關(guān)于各個分支,,哪些需要推送呢

  1. master分支是主分支,,因此要時刻與遠(yuǎn)程同步;

  2. dev分支是開發(fā)分支,,團隊所有成員都需要在上面工作,,所以也需要與遠(yuǎn)程同步;

  3. bug分支只用于在本地修復(fù)bug,,就沒必要推到遠(yuǎn)程了,,除非老板要看看你每周到底修復(fù)了幾個bug;

  4. feature分支是否推到遠(yuǎn)程,,取決于你是否和你的小伙伴合作在上面開發(fā),。

直接 clone

在github上創(chuàng)建一個新的項目之后,比如叫 learn-git,,那么可以直接 clone下來,,注意創(chuàng)建的時候不要選擇 Initializethisrepositorywitha README,我們要的是一個空的倉庫

  1. git clone https://github.com/SHERlocked93/learn-git.git

這樣在本地就直接創(chuàng)建了一個空的文件夾 learn-git,,當(dāng)然里面有 .git文件夾,。也可以使用SSH地址來clone,速度會快一些,也不用每次推送都輸入口令,,推介使用這種

  1. git clone [email protected]:SHERlocked93/learn-git.git

添加一個文件 filename.txt之后

  1. git add filename.txt

  2. git commit -m 'add filename.txt'

  3. git push -u origin master

這樣就把本地新建的文件push到了遠(yuǎn)程倉庫

本地與遠(yuǎn)程建立關(guān)聯(lián)

如果已經(jīng)有了本地工程文件夾,,如何分享到github遠(yuǎn)程倉庫呢,,當(dāng)然此時我們已經(jīng)在github上創(chuàng)建了一個新的空白項目,還是叫 learn-git,,在本地文件夾中

  1. git init

  2. # 關(guān)聯(lián)遠(yuǎn)程庫

  3. git remote add origin [email protected]:SHERlocked93/learn-git.git

  4. git push -u origin master

就可以了,,如果你的遠(yuǎn)程倉庫已經(jīng)有了提交,那么在 push之前需要

  1. # 允許不想干庫合并

  2. git pull origin master --allow-unrelated-histories

  3. git push -u origin master

先拉取遠(yuǎn)程分支,,注意這里 --allow-unrelated-histories允許兩個不想干的分支強行合并,,再 push;這樣在github的網(wǎng)站上還能看到commit記錄,。

也可以強硬一點直接強行推送

  1. # -f 強行推送

  2. git push -u origin master -f

這樣本地倉庫就直接把遠(yuǎn)程倉庫覆蓋了,且github上也看不到歷史 commit了,,如果不想被同事槍擊的話,,還是推介上一種做法。

同步遠(yuǎn)程倉庫

那么已經(jīng)clone的倉庫如果希望同步原倉庫新的提交怎么辦

  1. # 從遠(yuǎn)程分支拉取代碼到本地

  2. git pull upstream master

  3. # push到自己的庫里

  4. git push origin master

3.3 多人協(xié)作

多人協(xié)作的工作模式通常是這樣:

  1. 首先,,可以試圖用 git push origin<branch-name>推送自己的修改,;

  2. 如果推送失敗,則因為遠(yuǎn)程分支比你的本地更新,,需要先用git pull試圖合并,;

  3. 如果合并有沖突,則解決沖突,,并在本地提交,;

  4. 沒有沖突或者解決掉沖突后,再用 git push origin<branch-name>推送就能成功

從遠(yuǎn)程抓取分支,,使用 git pull,,如果有沖突,要先處理沖突,, add->commit->push,。如果 git pull提示no tracking information,則說明本地分支和遠(yuǎn)程分支的鏈接關(guān)系沒有創(chuàng)建,,用命令 git branch--set-upstream-to<branch-name>origin/<branch-name>,。

4. 標(biāo)簽操作

操作一覽

操作bash
查看所有標(biāo)簽git tag
新建標(biāo)簽git tag <tagname>
新建并制定說明git tag <tagname> -m <message> <bash>
查看標(biāo)簽說明git show <tagname>
刪除標(biāo)簽git tag -d <tagname>
推送某個標(biāo)簽到遠(yuǎn)程git push origin <tagname>
推送所有未推送到遠(yuǎn)程的本地標(biāo)簽git push origin --tags
合并遠(yuǎn)程倉庫的標(biāo)簽到本地git pull origin --tags
刪除遠(yuǎn)程標(biāo)簽git push origin :refs/tags/ <tagname>

如果要刪除遠(yuǎn)程分支,需要

  1. # 首先刪除本地tag,,假如tag是v0.9

  2. git tag -d v0.9

  3. # 再從遠(yuǎn)程刪除

  4. git push origin :refs/tags/v0.9

5. 提交格式

type:

  • feat: 新特性,添加功能

  • fix: 修改bug

  • refactor: 代碼重構(gòu)

  • docs: 文檔修改

  • style: 代碼格式修改, 注意不是 css 修改

  • test: 測試用例修改

  • chore: 其他修改, 比如構(gòu)建流程, 依賴管理.


網(wǎng)上的帖子大多深淺不一,甚至有些前后矛盾,,在下的文章都是學(xué)習(xí)過程中的總結(jié),,如果發(fā)現(xiàn)錯誤,歡迎留言指出~

推介閱讀:

  1. 廖雪峰 - Git教程

  2. github實現(xiàn)本地倉庫與遠(yuǎn)程倉庫同步

  3. 圖解 Git 命令

  4. git基本操作,,一篇文章就夠了!

  5. 團隊協(xié)作中的 Github flow 工作流程

  6. git 命令大全

附件

  1. Git常用命令速查表:


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多