本篇文章主要總結(jié)作者自己日常使用的一些命令臂拓,整理出來方便后期查看,以及給一些有需要的人著蛙。
一、拉取倉(cāng)庫(kù)代碼
至于Git工具安裝請(qǐng)參考另外兩篇文章:
Windows
Ubuntu
git clone
如果本地目錄不想與遠(yuǎn)程倉(cāng)庫(kù)同名怎么辦恼布??也有辦法搁宾,將目錄名作為git clone命令的第二個(gè)參數(shù):
git clone git@github.com:XXXX/nothing2.git localDev(localDev為遠(yuǎn)程倉(cāng)庫(kù)的分支名)
git init
也可以用init命令拉取折汞,不過這個(gè)需要好幾步才能實(shí)現(xiàn)
git init
git remote add origin git@github.com:XXXX/nothing2.git
git fetch origin dev(dev為遠(yuǎn)程倉(cāng)庫(kù)的分支名)
二、修改本地代碼并提交到遠(yuǎn)程倉(cāng)庫(kù)
1盖腿、分支創(chuàng)建爽待、刪除、切換翩腐、合并
git branch master
創(chuàng)建本地分支master
git push origin 本地分支名:倉(cāng)庫(kù)分支名
創(chuàng)建倉(cāng)庫(kù)分支鸟款,大概意思是將本地分支推送到倉(cāng)庫(kù),如果倉(cāng)庫(kù)沒有這個(gè)分支名就新建一個(gè)倉(cāng)庫(kù)分支
git branch
查看本地現(xiàn)有所有分支
git branch -r
查看倉(cāng)庫(kù)現(xiàn)有所有分支
git branch -a
查看本地和倉(cāng)庫(kù)現(xiàn)有所有分支
git checkout master
切換到本地分支master
git checkout -b master
新建本地分支master并將切換到master分支
git branch -d master
刪除本地master分支茂卦,當(dāng)然當(dāng)前分支一定不能在master分支上
git push origin --delete master
刪除倉(cāng)庫(kù)分支master何什,小心使用
git merge master
將本地master分支合并到當(dāng)前本地分支上
2、更新本地代碼
gti pull
相當(dāng)于是從遠(yuǎn)程獲取最新版本并merge到本地
git pull origin 倉(cāng)庫(kù)分支名:本地分支名
拉取遠(yuǎn)程倉(cāng)庫(kù)分支與本地分支合并
git fetch
相當(dāng)于是從遠(yuǎn)程獲取最新到本地等龙,不會(huì)自動(dòng)merge处渣,比如如下指令:
git fetch orgin master //將遠(yuǎn)程倉(cāng)庫(kù)的master分支下載到本地當(dāng)前branch中
git log -p master ..origin/master //比較本地的master分支和origin/master分支的差別
git merge origin/master //進(jìn)行合并
也可以如下一樣:
git fetch origin master:tmp //從遠(yuǎn)程倉(cāng)庫(kù)master分支獲取最新,在本地建立tmp分支
git diff tmp //將當(dāng)前分支和tmp進(jìn)行對(duì)比
git merge tmp //合并tmp分支到當(dāng)前分支
3蛛砰、pull時(shí)拉取代碼跟本地代碼沖突
git stash
用這個(gè)命令將本地代碼先暫存在本地倉(cāng)庫(kù)中罐栈,再拉遠(yuǎn)程倉(cāng)庫(kù)代碼,再合并暴备,具體執(zhí)行指令:
git stash 將本地代碼stash到倉(cāng)庫(kù)中
git pull 將遠(yuǎn)程代碼拉取到本地
git stash pop 將倉(cāng)庫(kù)中的代碼合到本地最新代碼中
git stash show 顯示stash合并到本地代碼后悠瞬,哪些文件會(huì)修改,以及修改的概述
4涯捻、查看當(dāng)前分支修改
git status
查看當(dāng)前工作區(qū)和暫存區(qū)文件的狀態(tài)浅妆,一般文件顯示紅色表示未追蹤,綠色表示已添加進(jìn)本地暫存區(qū)障癌;
git add
修改的文件名將文件從未追蹤狀態(tài)納入追蹤凌外,并提交到暫存區(qū);
git add .`加一個(gè)點(diǎn)表示包含全部未追蹤文件涛浙;
git diff 修改的文件名
可以查看文件哪里被修改了康辑;
git reset HEAD add的文件名
將 git add之后的文件從暫存庫(kù)中拿出,變成未跟蹤狀態(tài)
5轿亮、git commit
git commit
主要是將暫存區(qū)里的改動(dòng)給提交到本地的版本庫(kù)疮薇。每次使用git commit
命令我們都會(huì)在本地版本庫(kù)生成一個(gè)40位的哈希值,這個(gè)哈希值也叫commit-id;
commit-id在版本回退的時(shí)候是非常有用的我注,它相當(dāng)于一個(gè)快照,可以在未來的任何時(shí)候通過與git reset
的組合命令回到這里.
git commit -m "message"
這種是比較常見的用法按咒,-m 參數(shù)表示可以直接輸入后面的“message”,如果不加 -m參數(shù)但骨,那么是不能直接輸入“message”的励七,而是會(huì)調(diào)用一個(gè)編輯器一般是vim來讓你輸入這個(gè)“message”智袭,
message即是我們用來簡(jiǎn)要說明這次提交的語(yǔ)句。還有另外一種方法掠抬,當(dāng)我們想要提交的message很長(zhǎng)或者我們想描述的更清楚更簡(jiǎn)潔明了一點(diǎn)吼野,我們可以使用這樣的格式,如下:
git commit -m ‘
message1
message2
message3
’
git commit -a -m "message"
可以不經(jīng)過git add
把文件先放入暫存區(qū)两波,而直接提交到本地倉(cāng)庫(kù)中瞳步,一定小心使用。
6雨女、本地倉(cāng)庫(kù)提交到遠(yuǎn)程倉(cāng)庫(kù)
git push
以下是幾種提交指令:
git push origin master:master (在local repository中找到名字為master的branch谚攒,使用它去更新remote repository下名字為master的branch,如果remote repository下不存在名字是master的branch氛堕,那么新建一個(gè))
git push origin master (省略了<dst>馏臭,等價(jià)于“git push origin master:master”)
git push origin master:refs/for/mybranch (在local repository中找到名字為master的branch,用他去更新remote repository下面名字為mybranch的branch)
git push origin HEAD:refs/for/mybranch (HEAD指向當(dāng)前工作的branch讼稚,master不一定指向當(dāng)前工作的branch括儒,所以我覺得用HEAD還比master好些)
git push origin :mybranch (再origin repository里面查找mybranch,刪除它锐想。用一個(gè)空的去更新它帮寻,就相當(dāng)于刪除了)
7、其他一些常用命令
git reset
回滾代碼赠摇,回到原先某次提交
git log 可以加 -3 這樣就只查找最近3條提交記錄
git clean -f 刪除當(dāng)前目錄下所有沒有track過的文件
git reset --hard 'commitId' 'commitId'可以通過`git log`查看固逗,選擇你想要回滾的記錄
git revert -n 'commitId' 重新復(fù)制一份‘commitId’的代碼,跟reset的區(qū)別就是reset是往回滾藕帜,而revert只是復(fù)制
git checkout
的三個(gè)作用
第一個(gè)就是切換分支烫罩。例如你從遠(yuǎn)程倉(cāng)庫(kù)clone下來所有的源代碼,你git branch一下會(huì)看到你通常是在master洽故,如果你想切換到某一個(gè)分支上呢贝攒? git checkout <branchname>
第二個(gè)就是放棄對(duì)某個(gè)文件的修改。例如你想放棄對(duì)某個(gè)文件Hello.cpp的修改时甚,git checkout -- <Hello.cpp>
第三個(gè)就是新建一個(gè)分支隘弊,git checkout <-b> <branchname>,不加-b的話只新建不切換到新的分支上荒适,加-b新建并切換到該分支上
8梨熙、如何屏蔽本地代碼修改
1:如果修改的代碼還未提交過直接在文件.gitignore中添加想要屏蔽的文件
2:如果已經(jīng)提交過的是不行的,需要執(zhí)行
git update-index --assume-unchanged Xml/config.xml (Xml/config.xml是需要屏蔽的文件)
3:恢復(fù)2步驟中的文件
git update-index --no-assume-unchanged + 文件名