git工作中使用總結(jié)

因?yàn)樵诠ぷ髦幸?jīng)常與git打交道,想想入職時(shí)間有四個(gè)五月了,實(shí)際工作時(shí)間兩三個(gè)月左右。正好趁著這個(gè)假期做一下總結(jié)。

先推薦兩個(gè)git的教程:

a. git-book
b. git教程-廖雪峰

git基礎(chǔ)-獲取git倉(cāng)庫(kù)

git版本庫(kù)的初始化,一般有兩種方式:

  • 克隆現(xiàn)有的倉(cāng)庫(kù)
    • 克隆倉(cāng)庫(kù)的命令格式為git clone [url],比如:git clone https://github.com/libgit2/libgit2
  • 在現(xiàn)有的目錄下初始化倉(cāng)庫(kù)**
    • 如果你打算使用 Git 來(lái)對(duì)現(xiàn)有的項(xiàng)目進(jìn)行管理,你只需要進(jìn)入該項(xiàng)目目錄并輸入:git init
    • 這時(shí)候如果你需要將它放到遠(yuǎn)程服務(wù)器上,可以在遠(yuǎn)程服務(wù)器上創(chuàng)建一個(gè)目錄,并把可訪問(wèn)的URL記錄下來(lái),此時(shí)你就可以利用git remote add命令來(lái)增加一個(gè)遠(yuǎn)程服務(wù)器端

注:git remote add origin git://github.com/someone/another_project.git
上面的命令就會(huì)增加URL地址為git://github.com/someone/another_project.git,名稱(chēng)為 origin 的遠(yuǎn)程服務(wù)器,以后提交代碼的時(shí)候只需要使用 origin 別名即可.

git-分支

首先,如果我們要?jiǎng)?chuàng)建一個(gè)dev分支,然后切換到dev分支:

$ git branch dev
$ git checkout dev
Switched to branch 'dev'

可以用下面的一行來(lái)代替:

$ git checkout -b dev

如果我們?cè)?code>dev分支上做了一些工作,完成后要先切回master分支

$ git checkout master
Switched to branch 'master'

現(xiàn)在,我們把dev分支的工作提交到master分支上:

$ git merge dev
Updating d17efd8..fec145a
Fast-forward
 readme.txt |    1 +
 1 file changed, 1 insertion(+)    

git merge命令用于合并指定分支到當(dāng)前分支。
合并完成后,就可以放心地刪除dev分支了:

$ git branch -d dev
Deleted branch dev (was fec145a).

工作中經(jīng)常遇到的情景是:別人遠(yuǎn)程創(chuàng)建了一個(gè)分支,怎么切換到遠(yuǎn)程的分支上呢?

git branch -D #刪除一個(gè)分支
git branch -va #查看所有的遠(yuǎn)程分支
git checkout -b <name> <remote name> #創(chuàng)建并轉(zhuǎn)到遠(yuǎn)程分支并改名字為name

git checkout -b <name> <remote name>就是在本地新建一個(gè)名為<name>的分支,并轉(zhuǎn)到遠(yuǎn)程的分支<remote name>上。

git-版本回退

有時(shí)候我們發(fā)現(xiàn),自己commit提交的東西不對(duì),那可怎么辦呢?
首先,git必須知道當(dāng)前版本是哪個(gè)版本,在git中,用HEAD表示當(dāng)前版本,也就是最新的提交,上一個(gè)版本就是HEAD^,上上一個(gè)版本就是HEAD^^,當(dāng)然往上100個(gè)版本寫(xiě)100個(gè)^比較容易數(shù)不過(guò)來(lái),所以寫(xiě)成HEAD~100。

$ git reset --hard HEAD^

總結(jié)一下:

  • HEAD指向的版本就是當(dāng)前版本,因此,Git允許我們?cè)诎姹镜臍v史之間穿梭,使用命令git reset --hard commit_id。
  • 穿梭前,用git log可以查看提交歷史,以便確定要回退到哪個(gè)版本。
  • 要重返未來(lái),用git reflog查看命令歷史,以便確定要回到未來(lái)的哪個(gè)版本。

git-子模塊(submoudle)

有種情況我們經(jīng)常會(huì)遇到:某個(gè)工作中的項(xiàng)目需要包含并使用另一個(gè)項(xiàng)目。 也許是第三方庫(kù),或者你獨(dú)立開(kāi)發(fā)的,用于多個(gè)父項(xiàng)目的庫(kù)。 現(xiàn)在問(wèn)題來(lái)了:你想要把它們當(dāng)做兩個(gè)獨(dú)立的項(xiàng)目,同時(shí)又想在一個(gè)項(xiàng)目中使用另一個(gè)。
git通過(guò)子模塊來(lái)解決這個(gè)問(wèn)題。 子模塊允許你將一個(gè) Git 倉(cāng)庫(kù)作為另一個(gè)git倉(cāng)庫(kù)的子目錄。 它能讓你將另一個(gè)倉(cāng)庫(kù)克隆到自己的項(xiàng)目中,同時(shí)還保持提交的獨(dú)立。
我們首先將一個(gè)已存在的git倉(cāng)庫(kù)添加為正在工作的倉(cāng)庫(kù)的子模塊。 你可以通過(guò)在 git submodule add命令后面加上想要跟蹤的項(xiàng)目 URL 來(lái)添加新的子模塊。

$ git submodule add https://github.com/chaconinc/DbConnector

git-clean用法

$ git clean -fd -n #列出要?jiǎng)h除的文件列表
$ git clean -f -d
$ git clean -fd

其中 -f 表示文件 -d 表示目錄, 如果還要?jiǎng)h除.gitignore中的文件那么再加上-x.
如果git submodule中也存在需要?jiǎng)h除的文件那么需要再加個(gè)-f, 變成git clean -dff

$ git revert

還原一個(gè)版本的修改,必須提供一個(gè)具體的Git版本號(hào),例如git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20,Git的版本號(hào)都是生成的一個(gè)哈希值

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,813評(píng)論 4 54
  • 聲明:這篇文章來(lái)源于廖雪峰老師的官方網(wǎng)站,我僅僅是作為學(xué)習(xí)之用 Git簡(jiǎn)介 Git是什么? Git是目前世界上最先...
    橫渡閱讀 4,108評(píng)論 3 27
  • :Hi,在嗎? 言值君想做一個(gè)小調(diào)查,你會(huì)考慮把寺昆老西的課程推薦給你的朋友嗎? 0分為不愿意 5分為非常愿意 用...
    李曼瑛一家庭教育閱讀 176評(píng)論 0 0
  • “穿衣之道”課程已經(jīng)結(jié)束了一個(gè)月了,為什么要這么久才起筆寫(xiě)感想,是因?yàn)橄氤恋砗拖幌氯斐鋵?shí)的課程內(nèi)容,也想通過(guò)...
    We_Wear_Studio閱讀 1,080評(píng)論 0 49
  • 又到了擼串喝酒侃大山的季節(jié)…… 在這個(gè)萬(wàn)物茂盛生長(zhǎng)的季節(jié),我的大腦也隨之醒來(lái)。 相同的地方相同的景物唯一不同的是身...
    木夕林閱讀 133評(píng)論 0 1

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