(四)Java工程化--Git基礎
阿新 • • 發佈:2018-08-27
rename 記錄 lena 本地 git reset line 文件 運行 簽到
GIT學習參考:https://git-scm.com/book/zh/v2
常見命令
git init
初始化項目git add *.java
添加文件到git版本控制(.java後綴的全部文件)
Git 有三種狀態, commited(已提交),modified(已修改),staged(已暫存);已提交表示數據已經安全的保存在本地數據庫中。 已修改表示修改了文件,但還沒保存到數據庫中。 已暫存表示對一個已修改文件的當前版本做了標記,使之包含在下次提交的快照中。
由此引入 Git 項目的三個工作區域的概念:Git 倉庫、工作目錄以及暫存區域。
git status -s
當前狀態,一般有進行下一步操作的提示信息-s
git commint -m ‘提交描述信息‘
提交到本地倉庫git clone https://github.com/xuelingxiao/java-knowledge-structure knstuct
克隆遠端倉庫並重命名> GitHub 有一個十分詳細的針對數十種項目及語言的 .gitignore 文件列表,你可以在 https://github.com/github/gitignore 找到它.
git diff
查看哪些修改了還沒有暫存;查看哪些修改暫存了準備下次提交;git diff --cache
查看暫存區git commit -a
跳過add,將跟蹤文件暫存並一起提交git rm filename.txt
將文件移除跟蹤狀態git rm --cached filename
從暫存區移除文件,將保留工作區文件git mv filefrom fileto
移動文件git log
查看提交歷史git log -p -2
-p顯示每次提交的內容差異,-2顯示最近兩次提交,常用的還有git log --graph
,git log --pretty=oneline[short,full,fuller,format]
,git log -Sfunctionname
,git log --grep 關鍵字
其他的請參閱幫助git commit --amend
amend 將用來修復上次提交,例如上次提交如果忘記了某些文件,可以使用此命令修復,git將會把amend的文件與之前的文件記錄為一次提交git reset HEAD 文件名.txt
取消暫存git checkout -- 文件名
撤銷對文件的修改, 比較危險,因為本地的修改可能會被從遠端來的文件覆蓋git remote -v
查看配置的遠端倉庫信息, -v顯示git保存的簡寫和urlgit remote add knstuct https://github.com/https://github.com/xuelingxiao/java-knowledge-structure
添加遠端倉庫配置git fetch knstuct
獲取倉庫,即鏡像同步到本地git pull knstuct
拉取遠端分支到本地,並合並,fetch不會合並git push -f remote-name branch-name
推送到遠端, -f將回滾版本(強制推送)git remote show origin
查看一個遠端分支的更多信息git remote rename oldname newname
遠端分支重命名git remote rm branch-name
移除遠端分支git tag
列出標簽git tag -l ‘v1.8.5*‘
只列出v1.8.5系列的標簽git tag -a v1.1 -m ‘v1.1版本的標簽‘
創建一個附註標簽(git標簽分兩類:輕量標簽和附註標簽,附註標簽存儲了git數據庫中的一個完整對象,可以被檢驗,包含了打標簽人的信息)git tag v1.2 -lw
打輕量標簽git push origin v1.1
推送標簽到遠端,這樣可以共享標簽git checkout -b brahchname tagname
檢出標簽,實際是將標簽版本檢出到工作區 -b只是第一次checkout使用- 別名設置, 參考示例如下
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status
$ git config --global alias.unstage ‘reset HEAD --‘
--上面命令運行後,下面兩條語句等價
$ git unstage fileA
$ git reset HEAD -- fileA
--如果是外部命令, 可以在命令前加!
$ git config --global alias.visual ‘!gitk‘
git merge branch master
合並分支git rebase master
變基,掌握不住的話要少用
Git-Flow
規劃團隊如何使用git, 即使用git的一套規範; 可以參考google的gitflow.
git hooks
可以在CI使用, 自動發布,與jenkins集成.
通過本次學習我們基本就可以應對平時的需要了.作為工程化的一部分,git就先了解這麽多(後面如果有時間的話再整理下git的更多知識), 下一步將學習jenkins.
(四)Java工程化--Git基礎