git 常用命令

獲得版本庫

  • git init

  • git clone

    ?

查看信息

  • git help

  • Git log

    ? 查看提交日志

  • git diff

    ? 比較文件在不同狀態(tài)中的文件區(qū)別

版本管理

  • Git add

    ? 加入到版本暫存區(qū)中

    ? . 表示當前文件夾都納入到暫存區(qū)

  • git commit

    ? 將暫存區(qū)的文件提交到git版本庫中

  • git rm

    ? git rm 版本庫中的文件

遠程協作

  • git pull

    ? 將遠程版本庫中的文件拉取到本地

  • git push

    ? 將本地版本庫中的文件推送到遠程庫

Git配置

git 查看版本

  • git —version

首次使用前的配置

對于user.name與user.email來說订雾,有3個地方可以設置

  • 1块促,/etc/gitconfig (幾乎不用) 對于操作系統的 git config —system

  • 2,~/.gitconfig (很常用) 對于所有的git項目 git config —global

  • 3地沮,針對于特定的項目的 .git/config文件中 對于特定的項目 git config —local

     git config --local user.name 'lihao'
     git config --local user.email 'test@qq.com'
     git config user.name
     git config user.email
     
     //重置
      git config --local user.name 'lisan'
      
      //刪除
      git config --local --unset user.name
      
      
    

    ?

git的提交更新

提交更新风响,每次準備提交前嘉汰,先用 git status 看下,是不是都已暫存起來了状勤,然后在運行提交命令鞋怀。

  • Git commit
  • git commit -m 'init'
  • Git commit —amend -m 'init' 修改最后一次提交的message
  • git commit -am 'init' 添加到索引庫并提交 不用寫add了

git 刪除文件

  • 刪除文件
  • Git rm readme

以上兩者區(qū)別

Git rm :

  • 刪除了一個文件
  • 將被刪除的文件納入到暫存區(qū)(stage,index)
  • git rm --cached -r .idea 從暫存區(qū)刪除

如果恢復文件

git reset HEAD index.php 由暫存區(qū)恢復到工作區(qū)

git checkout — index.php 丟棄工作區(qū)刪除文件的內容

rm:

? 將文件刪除了,這時持搜,被刪除的文件并未納入緩存區(qū)當中.

如果恢復文件:

git checkout — index.php

git 重命名

git mv from_file to_file

Git 查看提交歷史

  • git log
  • -p 展開顯示每次提交的內容差異
  • -n 僅顯示最近的n次更新
  • —stat 僅顯示簡要的增改行數統計
  • —pretty=oneline
  • —pretty=format:'%h - %an,%ar:%s'
  • —graph 圖形化的方式查看log

忽略文件 .gitignore

  • 新建 .gitignore 文件
  • *.a 忽略所有 .a結尾的文件
  • !lib.a 但 lib.a除外
  • /todo 僅僅忽略項目根目錄下的todo文件不包括subdir/todo
  • Build/ 忽略build/目錄下的所有文件
  • doc/*.txt 會忽略doc/notes.txt 但不包括 doc/server/arch.txt
  • ** 表示所有的目錄

如果.gitignore嘗試以下方法

.gitignore只能忽略哪些原來沒有被track的文件密似,如果某些文件已經被納入了版本管理中,
則修改.gitignore是無效的葫盼,那么解決方法就是先把本地緩存刪除(改變成未track狀態(tài)),然后再提交:

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

分支

列出當前所有分支

  • git branch

創(chuàng)建分支

  • git branch branch_name

切換分支

  • git checkout branch_name

刪除分支

  • git branch -d branch_name

創(chuàng)建并轉向所創(chuàng)建的分支

  • git checkout -b branch_name

修改分支的名稱

  • git branch -m branch_name new_branch_name

fast-forward

  • 如果可能残腌,合并分支時git 會使用fast-forward 模式
  • 在這種模式下,刪除分支時會丟掉分支信息。
  • 合并時加上 —no-ff 參數會禁用fast-forword, 這樣會多出一條commit id
  • git merge —no-ff dev

合并分支

  • Git merge branch_name

git 回退版本

  • 回退到上一個版本

    git reset -- hard HEAD^  //回退到上一個版本
    git reset -- hard HEAD^^ //回退到上兩個版本
    git reset -- hard HEAD~2 //回退到指定第幾個版本
    git reset -- hard commit_id //回退到指定的版本
    

    ?

  • 查看操作日志

    git reflog 
    

checkout

  • Git checkout — test.txt

    作用是:丟棄掉相對于暫存區(qū)中最后一次添加的文件內容所做的變更

  • Git reset HEAD test.txt

    作用是:將之前添加到暫存區(qū)(stage,index)的內容從暫存區(qū)移除到工作區(qū)抛猫。

保存工作現場

保存現場

  • git stash
  • git stash sava 'init'
  • git stash list
  • git stash —help

恢復現場

  • Git stash apply (stash 內容并不刪除蟆盹,需要通過git stash drop stash@{0} 手動刪除)
  • git stash pop (恢復的同時也將stash 內容刪除)
  • Git stash apply stash@{0}

git 標簽

  • 新建標簽,標簽有兩種:輕量級標簽(lightweight)與帶有附注標簽(annotated)

  • 創(chuàng)建一個輕量級標簽

    git tag v1.0.1
    
  • 創(chuàng)建一個帶有附注的標簽

    git tag -a v1.0.2 -m 'release verion'
    

    ?

  • 刪除標簽

    git tag -d tag_name
    
  • 搜索標簽

    git tag -l 'v*'
    
  • 查看標簽

    git show v1.0.0 
    

    ?

  • 將標簽推送到遠程

    git push origin v1.0.0  //推送指定的標簽
    
    git push origin --tags  // 推送所有的標簽
    
    
  • 刪除遠程標簽

    git push origin --delete tag v1.0.1
    

    ?

    ?

    ?

查看一個文件都是誰提交的

git blame  index.php

git diff 比較

  • git diff : 比較的是暫存區(qū)與工作區(qū)文件之間的差別闺金,暫存區(qū)表示是原始文件逾滥。
  • git diff HEAD: 比較的是最新的提交與工作區(qū)之間的差別。
  • git diff —cached: 比較的是版本庫與暫存區(qū)之間的差別败匹。

遠程

查看遠程倉庫

  • Git remote show 顯示遠程倉庫的別名寨昙。

  • Git remote show origin 遠程倉庫詳細信息

    git remote show origin
    
    * remote origin
      Fetch URL: https://github.com/haojuwang/git.git
      Push  URL: https://github.com/haojuwang/git.git
      HEAD branch: master
      Remote branch:
        master tracked
      Local branch configured for 'git pull':
        master merges with remote master
      Local ref configured for 'git push':
        master pushes to master (up to date)
    

    ?

添加到遠程倉庫

  • Git remote add origin 遠程地址
  • git push -u origin master

查看遠程倉庫

  • git branch -a 查看遠程分支

  • git branch -av 查看遠程分支并顯示最后一次提交的信息

  • git remote show origin 查看遠程分支與本地的對比

    ?

clone

  • git clone git@github.com:haojuwang/git.git git2 下載到指定的git2 文件夾

創(chuàng)建遠程分支

  • git push —set-upstream origin 遠程名稱

  • git push —set-upstream origin src:dest (src 本地 dest 遠程)

    ?

刪除遠程分支

  • git push origin :dev(遠程分支名稱)

  • git push origin --delete dev

    ?

修改遠程分支名稱

git remote rename origin origin2

遠程分支刪除了本地同步刪除

git remote prune origin

推送到遠程

  • Push 完整命令: git push origin srcBranch:destBranch (srcBranch 本地 destBranch遠程)
  • pull操作的完整命令是: git pull origin srcBranch:destBranch (srcBranch 遠程 destBranch本地)
  • HEAD 標記: HEAD 文件是一個指向你當前所在分支的引用標識符,該文件內部并不包含SHA-1值,而是一個指向另外一個引用的指針掀亩。
  • 當執(zhí)行git commit 命令時舔哪,Git會創(chuàng)建一個commit對象,并且將這個commit對象的parent指針設置為head所指向的引用的SHA-1值槽棍。
  • 我們對于HEAD修改的任何操作尸红,都會被git reflog 完整記錄下來
  • 實際上,我們可以通過git底層命令symbolic-ref來實現對HEAD文件內容的修改

基于遠程分支創(chuàng)建分支

  • git checkout -b develop origin/develop
  • git checkout --track origin/test

git別名

  • git config --global alias.br branch br 表示 branch 的簡寫

  • ~/.gitconfig 別名文件

    cat ~/.gitconfig
    
    [alias]
      br = branch
      co = commit
    

    ?

查看遠程分支提交log

git log origin/master

git log remotes/origin/master

git log refs/remotes/origin/master

git裸庫

  • Git裸庫是指沒有工作區(qū)的git 項目刹泄,常用于服務器端
  • 創(chuàng)建一個裸庫 gi init —bare

git submodule

git submodule add git@10.211.55.3:java/git_child.git submodule

子倉庫的地址:git@10.211.55.3:java/git_child.git
submodule 子倉庫放置的目錄

更新submodule

  • 直接進入submodule 的目錄 執(zhí)行git pull
  • 更新所有的submodule git submodule foreach git pull

submodule git clone 發(fā)生了變化

git clone git@10.211.55.3:java/git_parent.git git_parent2

git submodule init

git submodule update --recursive

--------------
git clone git@10.211.55.3:java/git_parent.git git_parent2 --recursive

刪除submodule

git rm --cached mymodule

rm rf mymodule

git add .

git commit -am 'update'

rm .gitmodules

git push

git subtree

添加 subtree

git remote add subtree-origin git@10.211.55.3:java/git_subtree_child.git

git subtree add --prefix=subtree subtree-origin master --squash


git push

subtree: 表示目錄
subtree-origin: 遠程版本庫
master: 表示遠程版本庫的分支

parent subtree pull

git subtree pull --prefix=subtree subtree-origin master --squash

parent Subtee push

git push

git subtree push --prefix=subtree subtree-origin master 

git cherry-pick

將一個分支的修改應用到另外一個分支上

現在是在dev 分支上修改,我想把修改放在master上

master:  git cherry-pick c7d3592

c7d3592 commit sha-1 這個id 是dev上面的

原來的分支修改刪除
dev:  git checkout  c7d3592 //切換到 c7d3592分支

c7d3592 :    git branch -D dev  刪除分支

c7d3592 :  git branch -b dev 創(chuàng)建分支

Git rebase

  • Rebase : 變基怎爵,意即改變分支的根基
  • 從某種程度上來說特石,rebase與merge可以完成類似的工作,不過二者的工作方式有著明顯的差異

生成公鑰私鑰

  • ssh-keygen

    ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/Users/lixueqin/.ssh/id_rsa):
    

    ?

  • id_rsa 私鑰 不能給別人

  • id_rsa.pub 公鑰

gretty

http://akhikhl.github.io/gretty-doc/Gretty-configuration.html

repositories {
    maven {
        name 'aliyun'
        url 'http://maven.aliyun.com/nexus/content/groups/public/'
    }
    mavenCentral()
}

//gretty
buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath 'org.akhikhl.gretty:gretty:2.0.0'
    }
}

if (!project.plugins.findPlugin(org.akhikhl.gretty.GrettyPlugin))
    project.apply(plugin: org.akhikhl.gretty.GrettyPlugin)

gretty{
    httpEnabled = true
    servletContainer = 'tomcat8'
    contextPath = '/mygit'
    httpPort = 8081
    host = "localhost"
    scanInterval = 1
    fastReload =true
    inplaceMode = 'soft'
    loggingLevel = "DEBUG"
    consoleLogEnabled = true
    
    debugPort = 6005
    debugSuspend = true

}





運行
gradle appRun

debug

gradle appRunDebug

debug-2.png

遠程debug

https://dancon.gitbooks.io/intellij-idea/content/remote-debugging.html

gitlab安裝

  • 安裝地址 https://about.gitlab.com/installation/#centos-7

  • 配置 vim /etc/gitlab/gitlab.rb

     external_url 'http://Vultr'
     external_url 'http://108.61.126.40/
     
    
  • 載入配置服務(初始化和修改/etc/gitlab/gitlab.rb 后需要重新載入)

    gitlab-ctl reconfigure
    
  • 啟動服務

     gitlab-ctl start
    
  • 停止服務

    gitlab-ctl stop
    
  • 重啟服務

    gitlab-ctl restart
    
  • 查看日志

gitlab日志:/var/log/gitlab

查看gitlab日志:gitlab-ctl tail
查看gitlab對應的Nginx訪問日志:gitlab-ctl tail nginx/gitlab_access.log
查看gitlab對應的數據庫postgre-sql的日志:gitlab-ctl tail postgresql

gitlab數據存放目錄:/var/opt/gitlab/git-data

  • 下載失敗

    https://packages.gitlab.com/gitlab/gitlab-ce
    
    rpm -i gitlab-ce-9.4.6-ce.0.el7.x86_64.rpm
    

    ?


    image.png

不讓用戶注冊

http://10.211.55.3/admin/application_settings

602C3386-31C1-4476-8E0E-E8D91D50381C.png

git 倉庫

git init --bare 倉庫名稱.git
///data/git/cangku.git/
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子欲主,更是在濱河造成了極大的恐慌憔四,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件必怜,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機推捐,發(fā)現死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侧啼,“玉大人牛柒,你說我怎么就攤上這事∪” “怎么了皮壁?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長哪审。 經常有香客問我蛾魄,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任滴须,我火速辦了婚禮舌狗,結果婚禮上,老公的妹妹穿的比我還像新娘描馅。我一直安慰自己把夸,他們只是感情好,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布铭污。 她就那樣靜靜地躺著恋日,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嘹狞。 梳的紋絲不亂的頭發(fā)上岂膳,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音磅网,去河邊找鬼谈截。 笑死,一個胖子當著我的面吹牛涧偷,可吹牛的內容都是我干的簸喂。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼燎潮,長吁一口氣:“原來是場噩夢啊……” “哼喻鳄!你這毒婦竟也來了?” 一聲冷哼從身側響起确封,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤除呵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后爪喘,有當地人在樹林里發(fā)現了一具尸體颜曾,經...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年秉剑,在試婚紗的時候發(fā)現自己被綠了泛豪。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡秃症,死狀恐怖候址,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情种柑,我是刑警寧澤岗仑,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站聚请,受9級特大地震影響荠雕,放射性物質發(fā)生泄漏稳其。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一炸卑、第九天 我趴在偏房一處隱蔽的房頂上張望既鞠。 院中可真熱鬧,春花似錦盖文、人聲如沸嘱蛋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽洒敏。三九已至,卻和暖如春疙驾,著一層夾襖步出監(jiān)牢的瞬間凶伙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工它碎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留函荣,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓扳肛,卻偏偏與公主長得像傻挂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子挖息,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345