git 倉庫常用指令

Git init? 在當(dāng)前目錄下初始化創(chuàng)建Git倉庫 先要cd

Git add .? 將所有修改添加到暫存區(qū)

git add?+?文件

git add * # Ant風(fēng)格添加修改

git mergetool 合并中沖突 修復(fù)工具

$ git add *Controller? # 將以Controller結(jié)尾的文件的所有修改添加到暫存區(qū)

$ git add Hello*? # 將所有以Hello開頭的文件的修改添加到暫存區(qū) 例如:HelloWorld.txt,Hello.java,HelloGit.txt ...

$ git add Hello?? # 將以Hello開頭后面只有一位的文件的修改提交到暫存區(qū) 例如:Hello1.txt,HelloA.java 如果是HelloGit.txt或者Hello.java是不會被添加的

git add?-u?+?路徑:將修改過的被跟蹤代碼提交緩存

git add?-A?+?路徑:?將修改過的未被跟蹤的代碼提交至緩存

?Git reflog: 查看歷史所有的本地倉庫執(zhí)行改變的命令可以查找到headerID

?Git status 查看倉庫文件的狀態(tài)? 是否在緩存區(qū)? 綠色表示在緩存區(qū) 可以直接提交 紅色 表示在工作區(qū) 不能直接提交 需要git add? 添加到緩存區(qū)后 才能 Git commit 提交到Git本地倉庫屠缭,注意文件只有在緩存區(qū)才能提交。文件有下面3種狀態(tài):

1:Untracked: 未跟蹤, 此文件在文件夾中, 但并沒有加入到git庫, 不參與版本控制. 通過git add 狀態(tài)變?yōu)镾taged.

2:Modified: 文件已修改, 僅僅是修改, 并沒有進行其他的操作.

3:deleted: 文件已刪除崭参,本地刪除呵曹,服務(wù)器上還沒有刪除.

Git commit -m ‘? 注釋 此次提交的內(nèi)容 ’? ? 提交到本地Git倉庫

Git remote add origin https://github.com/ganghongli/dpsSale.git? ?與遠程倉庫建立聯(lián)系??

Git push -u origin master? ? 把修改過的代碼提交到 遠程倉庫 分支 master下面 master 表示分支 也可以是其他分支?

Git push origin master? ? ?提交本地倉庫的代碼到遠程倉庫分支 master 下面

it merge [name] ----將名稱為[name]的分支與當(dāng)前分支合并

查看分支:git branch?

創(chuàng)建分支:git branch?<分支>

切換分支:git checkout?<分支>

創(chuàng)建+切換分支:git checkout -b <分支>

合并某分支到當(dāng)前分支:git merge?<分支>

刪除分支:git branch -d?<分支>

刪除遠程分支:git push origin? :<分支>

合并指定dev分支到當(dāng)前分支:git? merge dev (注意先切換到當(dāng)前分支 在合并摸個分支)

查看本地對應(yīng)的遠程倉庫?git remote -v

查看遠程倉庫的本地代名詞 git remote?

從遠程倉庫拉取代碼并且合并本地代碼:Git pull origin master

從遠程倉庫拉取代碼不合并本地代碼:Git fetch origin master

從遠程倉庫克隆代碼等同于下載遠程所有文件包含Git文件 :Git clone +遠程倉庫地址 cloning into '本地文件夾路徑‘

查看標簽:Git tag

創(chuàng)建標簽 Git tag v1.0? (注意:標簽總是和某個commit掛鉤。如果這個commit既出現(xiàn)在master分支何暮,又出現(xiàn)在dev分支奄喂,那么在這兩個分支上都可以看到這個標簽)

?在歷史commit ID上打標簽 Git tag v1.0 + headerID(提交的headerID)

查看Header ID : git log --pretty=oneline --abbrev-commit

查看歷史所有的本地倉庫執(zhí)行改變的命令可以查找到headerID:Git reflog

刪除本地標簽:Git tag -d v1.0?

推送標簽到遠程:git push origin v1.0

刪除遠程標簽:先本地刪除 Git tag -d v1.0? 然后遠程刪除 Git push origin :tags/v1.0

推送所有標簽到遠程:Git push origin --tags

撤銷提交? :寫完代碼后,我們一般這樣git add . //添加所有文件git commit -m "本功能全部完成"?執(zhí)行完commit后海洼,想撤回commit跨新,怎么辦?使用:“Git reset --參數(shù) + headerID”指令

如Git reset --soft + headerID?注意坏逢,這僅僅是撤回commit操作域帐,您寫的代碼仍然保留。

git reset 后面參數(shù)的說明

Git reset --mixed + headerID??意思是:不刪除工作空間改動代碼是整,撤銷commit肖揣,并且撤銷git add . 操作這個為默認參數(shù),git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一樣的。

git reset --hard +headerID? 刪除工作空間改動代碼浮入,撤銷commit龙优,撤銷git add . 注意完成這個操作后,就恢復(fù)到了上一次的commit狀態(tài)事秀。

Git reset -- soft +headerID??不刪除工作空間改動代碼彤断,撤銷commit,不撤銷git add .?

Git 修改已提交的commit注釋 分2種情況 1易迹,已經(jīng)push到遠程 2.還未push到遠程

如果你只想修改最后一次注釋就是最新的一次提交 用git commit --amend? 會出現(xiàn)有注釋的界面(你的注釋應(yīng)該顯示在第一行)瓦糟, 輸入i進入修改模式,修改好注釋后赴蝇,按Esc鍵 退出編輯模式菩浙,輸入:wq保存并退出。ok,修改完成劲蜻。

修改之前commit的?

git rebase -i HEAD~2?最后的數(shù)字2指的是顯示到倒數(shù)第幾次陆淀,你想修改哪條注釋 就把哪條注釋前面的pick換成edit。方法就是上面說的編輯方式:i---編輯先嬉,把pick換成edit---Esc---:wq.然后git commit --amend 修改注釋信息轧苫,修改后保存退出后Git rebase continue?其實這個原理我的理解就是先版本回退到你想修改的某次版本,然后修改當(dāng)前的commit注釋疫蔓,然后再回到本地最新的版本.

對于已經(jīng)push到遠程的修改 首先你需要你把最新的版本從遠程倉庫先pull下來含懊,然后按照上面的方式修改commit信息最后強制push到遠程git push --force origin dev

HEAD指向的版本就是當(dāng)前版本,因此衅胀,Git允許我們在版本的歷史之間穿梭岔乔,使用命令git reset --hard commit_id。

穿梭前滚躯,用git log可以查看提交歷史雏门,以便確定要回退到哪個版本。

要重返未來掸掏,用git reflog查看命令歷史茁影,以便確定要回到未來的哪個版本。git reset--hard HEAD^? ? ?HEAD表示當(dāng)前版本?上一個版本就是HEAD^丧凤,上上一個版本就是HEAD^^

1) 遠程倉庫相關(guān)命令

檢出倉庫:$ git clone git://github.com/jquery/jquery.git

查看遠程倉庫:$ git remote -v

添加遠程倉庫:$ git remote add [name] [url]

刪除遠程倉庫:$ git remote rm [name]

修改遠程倉庫:$ git remote set-url --push[name][newUrl]

拉取遠程倉庫:$ git pull [remoteName] [localBranchName]

推送遠程倉庫:$ git push [remoteName] [localBranchName]

2#使用如下命令添加遠程倉庫募闲。

git?remote?set-url?--add?oginin?http://192.168.100.54/git/gaoxing/gaoxTest.git

3#查看遠程倉庫情況≡复可以看到?github?遠程倉庫有兩個?push?地址蝇更。這種方法的好處是每次只需要?push?一次就行了。

---------------------


Git 忽略規(guī)則

詳細的忽略規(guī)則可以參考官方英文文檔

Git 忽略規(guī)則優(yōu)先級

在 .gitingore 文件中呼盆,每一行指定一個忽略規(guī)則年扩,Git 檢查忽略規(guī)則的時候有多個來源,它的優(yōu)先級如下(由高到低):

從命令行中讀取可用的忽略規(guī)則

當(dāng)前目錄定義的規(guī)則

父級目錄定義的規(guī)則访圃,依次遞推

$GIT_DIR/info/exclude 文件中定義的規(guī)則

core.excludesfile中定義的全局規(guī)則

Git 忽略規(guī)則匹配語法

在 .gitignore 文件中厨幻,每一行的忽略規(guī)則的語法如下:

空格不匹配任意文件,可作為分隔符腿时,可用反斜杠轉(zhuǎn)義

# 開頭的文件標識注釋况脆,可以使用反斜杠進行轉(zhuǎn)義

! 開頭的模式標識否定,該文件將會再次被包含批糟,如果排除了該文件的父級目錄格了,則使用 ! 也不會再次被包含』斩Γ可以使用反斜杠進行轉(zhuǎn)義

/ 結(jié)束的模式只匹配文件夾以及在該文件夾路徑下的內(nèi)容盛末,但是不匹配該文件

/ 開始的模式匹配項目跟目錄

如果一個模式不包含斜杠弹惦,則它匹配相對于當(dāng)前 .gitignore 文件路徑的內(nèi)容,如果該模式不在 .gitignore 文件中悄但,則相對于項目根目錄

** 匹配多級目錄棠隐,可在開始,中間檐嚣,結(jié)束

? 通用匹配單個字符

[] 通用匹配單個字符列表

常用匹配示例:

bin/: 忽略當(dāng)前路徑下的bin文件夾助泽,該文件夾下的所有內(nèi)容都會被忽略,不忽略 bin 文件

/bin: 忽略根目錄下的bin文件

/*.c: 忽略 cat.c嚎京,不忽略 build/cat.c

debug/*.obj: 忽略 debug/io.obj嗡贺,不忽略 debug/common/io.obj 和 tools/debug/io.obj

**/foo: 忽略/foo, a/foo, a/b/foo等

a/**/b: 忽略a/b, a/x/b, a/x/y/b等

!/bin/run.sh: 不忽略 bin 目錄下的 run.sh 文件

*.log: 忽略所有 .log 文件

config.php: 忽略當(dāng)前路徑的 config.php 文件

.gitignore規(guī)則不生效

.gitignore只能忽略那些原來沒有被track的文件,如果某些文件已經(jīng)被納入了版本管理中鞍帝,則修改.gitignore是無效的诫睬。

解決方法就是先把本地緩存刪除(改變成未track狀態(tài)),然后再提交:

git rm -r --cached .gitadd .git commit -m'update .gitignore'

2)分支(branch)操作相關(guān)命令

查看本地分支:$ git branch

查看遠程分支:$ git branch -r

創(chuàng)建本地分支:$ git branch [name] ----注意新分支創(chuàng)建后不會自動切換為當(dāng)前分支

切換分支:$ git checkout [name]

創(chuàng)建新分支并立即切換到新分支:$ git checkout -b [name]

刪除分支:$ git branch -d [name] ---- -d選項只能刪除已經(jīng)參與了合并的分支膜眠,對于未有合并的分支是無法刪除的。如果想強制刪除一個分支溜嗜,可以使用-D選項

合并分支:$ git merge [name] ----將名稱為[name]的分支與當(dāng)前分支合并

push遠程分支(本地分支push到遠程):$ git push origin [name]

刪除遠程分支:$ git push origin :heads/[name]

我從master分支創(chuàng)建了一個issue5560分支宵膨,做了一些修改后,使用git push origin master提交炸宵,但是顯示的結(jié)果卻是'Everything up-to-date'辟躏,發(fā)生問題的原因是git push origin master 在沒有track遠程分支的本地分支中默認提交的master分支,因為master分支默認指向了origin master 分支土全,這里要使用git push origin issue5560:master 就可以把issue5560推送到遠程的master分支了捎琐。

如果想把本地的某個分支test提交到遠程倉庫,并作為遠程倉庫的master分支裹匙,或者作為另外一個名叫test的分支瑞凑,那么可以這么做。

$ git push origin test:master // 提交本地test分支作為遠程的master分支 //好像只寫這一句概页,遠程的github就會自動創(chuàng)建一個test分支

$ git push origin test:test // 提交本地test分支作為遠程的test分支

如果想刪除遠程的分支呢籽御?類似于上面,如果:左邊的分支為空惰匙,那么將刪除:右邊的遠程的分支技掏。

$ git push origin :test // 剛提交到遠程的test將被刪除,但是本地還會保存的项鬼,不用擔(dān)心


3)版本(tag)操作相關(guān)命令

查看版本:$ git tag

創(chuàng)建版本:$ git tag [name]

刪除版本:$ git tag -d [name]

查看遠程版本:$ git tag -r

創(chuàng)建遠程版本(本地版本push到遠程):$ git push origin [name]

刪除遠程版本:$ git push origin :refs/tags/[name]

推送所有tag: git push origin --tags

tag遷出branch:

git checkout tagname

git checkout -b new_branch_name


4)git stash暫存相關(guān)命令

git stash: 備份當(dāng)前的工作區(qū)的內(nèi)容哑梳,從最近的一次提交中讀取相關(guān)內(nèi)容,讓工作區(qū)保證和上次提交的內(nèi)容一致绘盟。同時鸠真,將當(dāng)前的工作區(qū)內(nèi)容保存到Git棧中悯仙。

git stash pop: 從Git棧中讀取最近一次保存的內(nèi)容,恢復(fù)工作區(qū)的相關(guān)內(nèi)容弧哎。由于可能存在多個Stash的內(nèi)容雁比,所以用棧來管理,pop會從最近的一個stash中讀取內(nèi)容并恢復(fù)撤嫩。

git stash list: 顯示Git棧內(nèi)的所有備份偎捎,可以利用這個列表來決定從那個地方恢復(fù)。

git stash clear: 清空Git棧序攘。此時使用gitg等圖形化工具會發(fā)現(xiàn)茴她,原來stash的哪些節(jié)點都消失了。

顯示提交的log

git log

$ git log --pretty=oneline

$ git log --pretty=format:"%h - %an, %ar : %s"

--也可以指定查看的個數(shù)

git log -3

回退命令:

--回退到上個版本

$ git reset --hard HEAD^

--回退到前3次提交之前程奠,以此類推丈牢,回退到n次提交之前

$ git reset --hard HEAD~3

-- *退到/進到 指定commit的sha碼,sha碼通過上面的 log 命令獲取

$ git reset --hard commit_id

強推到遠程:

作者:楓林風(fēng)雨

鏈接:http://www.reibang.com/p/ec7e8ed1dfcb

來源:簡書

簡書著作權(quán)歸作者所有瞄沙,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處己沛。

5)git rebase 使用

當(dāng)前分支問題develop,從master拉取最新代碼

git pull --rebase origin master 或者 git rebase develop

先將develop分支的代碼checkout出來距境,作為工作目錄

然后將master分支從develop分支創(chuàng)建起的所有改變的補丁申尼,依次打上。如果打補丁的過程沒問題垫桂,rebase就搞定了

如果打補丁的時候出現(xiàn)了問題师幕,就會提示你處理沖突。處理好了诬滩,可以運行g(shù)it rebase –continue繼續(xù)直到完成

如果你不想處理霹粥,你還是有兩個選擇,一個是放棄rebase過程(運行g(shù)it rebase –abort)疼鸟,另一個是直接用test分支的取代當(dāng)前分支的(git rebase –skip)后控。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市空镜,隨后出現(xiàn)的幾起案子忆蚀,更是在濱河造成了極大的恐慌,老刑警劉巖姑裂,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件馋袜,死亡現(xiàn)場離奇詭異,居然都是意外死亡舶斧,警方通過查閱死者的電腦和手機欣鳖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茴厉,“玉大人泽台,你說我怎么就攤上這事什荣。” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長仰冠。 經(jīng)常有香客問我,道長桅锄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任样眠,我火速辦了婚禮友瘤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘檐束。我一直安慰自己辫秧,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布被丧。 她就那樣靜靜地躺著盟戏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪甥桂。 梳的紋絲不亂的頭發(fā)上柿究,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機與錄音格嘁,去河邊找鬼笛求。 笑死廊移,一個胖子當(dāng)著我的面吹牛糕簿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播狡孔,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼懂诗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了苗膝?” 一聲冷哼從身側(cè)響起殃恒,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辱揭,沒想到半個月后离唐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡问窃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年亥鬓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片域庇。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡嵌戈,死狀恐怖覆积,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情熟呛,我是刑警寧澤宽档,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站庵朝,受9級特大地震影響吗冤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜偿短,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一欣孤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧昔逗,春花似錦降传、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至笔链,卻和暖如春段只,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鉴扫。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工赞枕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人坪创。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓炕婶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親莱预。 傳聞我的和親對象是個殘疾皇子柠掂,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容

  • git branch 查看本地所有分支 git status 查看當(dāng)前狀態(tài) git commit 提交 git b...
    猿萬閱讀 5,029評論 1 45
  • 一、 Git 常用命令速查 git branch 查看本地所有分支 git status 查看當(dāng)前狀態(tài) git c...
    LOVE_晴天閱讀 2,320評論 0 10
  • Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照依沮,而是把代碼倉庫完整的鏡像下來涯贞。這樣一來,任何一處協(xié)同...
    __silhouette閱讀 15,855評論 5 147
  • 真的是很無語也很衰的一天
    景塵閱讀 94評論 0 0
  • http://tutorials.jenkov.com/java-nio/index.html 原文地址Java ...
    YaleWei閱讀 879評論 0 0