# cd 項目目錄下 git init #將整個項目文件加入暫存區 [liming@local project_name]$ git add . [liming@local project_name]$ git status # 位於分支 master # # 初始提交 # # 要提交的變動: # (使用 "git rm --cached <file>..." 撤出暫存區) liming@local project_name]$ git commit -m 'init add new files' [master(根提交) 450b4b4] init add new files ...... # 下面命令會增長URL地址爲'git@github.com:liming/project_name.git',名稱爲origin的遠程服務器庫. # 之後提交代碼的時候只須要使用 origin別名便可 liming@local project_name]$ git remote add origin git@github.com:liming/project_name.git # 顯示遠程倉庫在本地名字 [liming@local project_name]$ git remote show origin # git push [remote-name] [branch-name] git push -u origin master
#符合以下規則的,未被track的文件,git將忽略 .DS_Store .gitignore *.swp application/.DS_Store
有時候在項目開發過程當中,忽然心血來潮想把某些目錄或文件加入忽略規則,按照上述方法定義後發現並未生效,緣由是 .gitignore只能忽略那些原來沒有被track的文件,若是某些文件已經被歸入了版本管理中,則修改.gitignore是無效的。那麼解決方法就是,先把本地緩存刪除(改變成未track狀態),而後再提交。php
[liming@local project_name]$ git rm -r --cached . [liming@local project_name]$ git add . [liming@local project_name]$ git commit -m 'update .gitignore'
git標籤分爲兩種類型:輕量標籤和附註標籤。
# 輕量標籤是指向提交對象的引用,附註標籤則是倉庫中的一個獨立對象(建議使用附註標籤)。
# 建立輕量標籤
$ git tag v0.1.2-lightgit# 建立附註標籤
$ git tag -a v0.1.2 -m 「0.1.2版本」github區別:
建立輕量標籤不須要傳遞參數,直接指定標籤名稱便可。
建立附註標籤時,參數a即annotated的縮寫,指定標籤類型,後附標籤名。參數m指定標籤說明,說明信息會保存在標籤對象中。vim切換到標籤
#與切換分支命令相同
$ git checkout [tagname]centos查看標籤列表
# 查看本地 tag 列表
$ git tag -l
查看具體標籤信息
$ git show v0.1.2緩存刪除標籤
誤打或須要修改標籤時,須要先將標籤刪除,再打新標籤。
$ git tag -d v0.1.2 #參數d即delete的縮寫,意爲刪除其後指定的標籤。bash給指定的commit打標籤
# 打標籤沒必要要在head之上,也可在以前的版本上打,這須要你知道某個提交對象的校驗和(經過git log 獲取)。
# 補打標籤
$ git tag -a v0.1.1 9fbc3d0服務器分享標籤
# 默認狀況下,git push 並不會把標籤傳送到遠端服務器上,只有經過顯式命令才能分享標籤到遠端倉庫。其命令格式如同推送分支,運行 git push origin [tagname] 便可。
$ git push origin v0.1.2 #將v0.1.2標籤提交到git服務器
$ git push origin –tags #一次推送全部本地新增的標籤上去
$ git push origin --delete v0.1.2 #刪除遠程標籤app注意:若是想看以前某個標籤狀態下的文件,能夠這樣操做spa
$ git tag #查看當前分支下的標籤
$ git checkout v0.21 #此時會指向打v0.21標籤時的代碼狀態,(但如今處於一個空的分支上)
$ cat test.txt #查看某個文件批量操做
# 批量刪除遠端標籤
$ git show-ref --tag | awk '/(.*)(\s+)(.*)$/ {print ":" $2}' | xargs git push origin
# 批量刪除本地標籤(標籤名爲 1.0.0.* 的全部標籤)
$ git tag | grep "1.0.0." | xargs git tag -d
流程:git checkout branch => git tag -a 版本號 -m 註釋 => git push origin 版本號
# 比較兩個分支的差別,將會以文件列表的形式展現(遠程分支須要加 origin )
git diff branch1 origin/branch2 --stat
# 比較兩個分支中文件的不一樣
git diff branch1 origin/branch2 /path/具體文件
# 顯示最近一次 stash 中的文件列表
git stash show
# 顯示暫存區有多少條暫存記錄,stash@{0},stash@{1}... 一條暫存記錄會有多個文件
git stash list
# 暫存信息標識
git stash save 'message'
# 使用 stash@{1} 這個暫存
git stash apply stash@{1}
# 去掉 stash@{1} 這個 暫存
git stash drop stash@{1}
# 回退到某個版本
1)git log # 獲取要回退的版本標識
2) git reset --hard 1)步驟歷史版本的id
1. git config -l # 顯示當前的 git config 的全部配置內容,內容所在文件:~/.gitconfig 和 .git/config
2. git 結合 vim 實現 commit 前的 diff 展現。
執行以下命令:
#git 實現vimdiff $ git config --global diff.tool vimdiff $ git config --global difftool.prompt false # 以下爲 config git 操做命令 別名 配置 $ git config --global alias.d difftool
或者編輯你的 ~/.gitconfig 文件,添加如下各行:
[diff] tool = vimdiff [difftool] prompt = false [alias] d = difftool
如上配置完成後,就能夠在 git commit 前,使用 git d 打開vim界面對比代碼,而後用 :wq or :qa 繼續比較下一個文件。
https://git-scm.com/docs (英文)
https://git-scm.com/book/zh/v2 (中文)
** mac開發,無文件大小寫區分致使 centos 大小寫同時存在,處理方法:
####### 出現 兩個大小寫文件 #### 還沒有暫存以備提交的變動: # (使用 "git add <file>..." 更新要提交的內容) # (使用 "git checkout -- <file>..." 丟棄工做區的改動) # # 修改: application/controllers/Foo.php # 修改: application/controllers/foo.php # 修改還沒有加入提交(使用 "git add" 和/或 "git commit -a") [liming@local project]$ git commit -m 'w' application/controllers/ [master 6f85312] w 2 file changed, 2 insertion(+) [liming@local project]$ git rm application/controllers/foo.php rm 'application/controllers/foo.php' [liming@local project]$ git status # 位於分支 master # 您的分支領先 'origin/master' 共 1 個提交。 # (使用 "git push" 來發布您的本地提交) # # 要提交的變動: # (使用 "git reset HEAD <file>..." 撤出暫存區) # # 刪除: application/controllers/foo.php # # 還沒有暫存以備提交的變動: # (使用 "git add/rm <file>..." 更新要提交的內容) # (使用 "git checkout -- <file>..." 丟棄工做區的改動) # # 刪除: application/controllers/Foo.php # [liming@local project]$ git commit -m 'del foo.php' application/controllers/foo.php [master afabba6] del foo.php 1 file changed, 57 deletions(-) delete mode 100644 application/controllers/foo.php [liming@local project]$ git status # 位於分支 master # 您的分支領先 'origin/master' 共 1 個提交。 # (使用 "git push" 來發布您的本地提交) # # 還沒有暫存以備提交的變動: # (使用 "git add/rm <file>..." 更新要提交的內容) # (使用 "git checkout -- <file>..." 丟棄工做區的改動) # # 刪除: application/controllers/Foo.php # [liming@local project]$ git push # # 後續 git checkout application/controllers/Foo.php 這樣就刪除了git 庫中的 foo.php
2.單服實踐:
分支:
beta:標識文件env,設置 env = beta, 只合並 dev
① env=beta , git stash save "env=beta"
② env=online
dev: 標識文件env,設置 env = dev,合併到 beta 前 ,
① 只有 env=dev 的單文件, git stash save "env=dev";
② 存在 修改標識文件env的,設置 env = beta ,不存在 修改標識文件 env 的,直接 git commit -m 'mod' .
③ git checkout beta
④ git merge -m 'merge' dev
release:git merge -m