GIT

GIT

[TOC]git

版本庫

1.搭建服務器、初始化版本庫

1.1 搭建服務器參考地址
1.2 本地版本庫github

$ mkdir gitlearn && cd gitlearn
$ git init 
Initialized empty Git repository in ......

2.添加、克隆遠程倉庫

$ git clone git@git.in.codoon.com:ad-pages/console-codoon-admin.git
$ git remote add origin git@git.in.codoon.com:ad-pages/console-codoon-admin.git

第一次推送 -u 把本地的master分支和遠程的master分支關聯起來bash

$ git push -u origin master #--set-upstream
$ git pull origin master
$ git remote -v #查看遠程分支
$ git remote rename old new #修改遠程倉庫名稱
$ git remote remove name #移除遠程倉庫

3.分支

3.1關於分支

$ git branch -a | -r #查看全部分支 | 遠程分支
$ git checkout -b new_branch #建立分支並切換到新分支
$ git branch -m feature/old feature/new
$ git branch -d | -D branch #-d選項只能刪除已經參與了合併的分支,對於未有合併的分支是沒法刪除的。若是想強制刪除一個分支,可使用-D選項
#刪除遠程分支
$ git push origin :heads/branch
$ git push origin :branch

查看其餘分支上的文件而無需切換到那個分支 也能夠指定到一個臨時文件服務器

$ git show some-branch:some-file.js
 $ git show some-branch:some-file.js > temp

查看另外一個分支上文件與當前分支上文件的差別app

$ git diff some-branch some-file.js

3.2分支的合併,解決衝突

合併分支時,git會用fast forward模式,在這種模式下,刪除分支後,會丟掉分支的提交信息
解決衝突原則:以本身修改的分支爲準,不肯定的找到對應的開發一塊兒確認學習

$ git log -p file #查看某個文件的提交記錄

$ git merge --no-ff -m "merge with no-ff" dev

git還提供了一個stash功能,能夠把當前工做現場「儲藏」起來,等之後恢復現場後繼續工做spa

$ git stash
... #修復bug

#恢復以前工做區
$ git stash list
$ git stash apply #step 1
$ git stash drop #step 2
#或
$ git stash pop

#對於屢次stash
$ git stash list
$ git stash apply stash@{0}

分支-變基 參考3d

3.3分支提交

$ git add .
$ git add file

$git commit -m "message"
$git commit -am "message"

修復而非新建提交版本控制

1.修復你的拼寫錯誤
2.將修正過的文件暫存 $ git add file
3.運行 $ git commit –amend -m "message" 將會把最近一次的變動追加到你最新的提交。同時也會給你一個編輯提交信息的機會
4.提交指針

3.4撤銷操做、回退

3.4.1 工做區的修改 撤銷修改
#沒有執行add操做 
$ git checkout -- file #倉庫文件
#或
$ rm file #新文件
3.4.2 已添加到暫存區 撤銷修改
$ git reset HEAD file
$ git checkout -- file
3.4.3 已添加到版本庫 撤銷修改
#撤銷工做區自上次commit之後的全部修改
$ git reset --hard HEAD | commit_hash
$ git reset --hard HEAD^ | ^^ | ~100

錯誤回退,再回到將來版本

#查看提交記錄 找到某次的提交commit_hash
$ git reflog
$ git reset --hard commit_hash
3.4.3 已推送到遠程倉庫 版本回退
#若是尚未其餘人pull過,第一個方法比較簡單就是會退到合適的版本,而後push到遠程:
$ git reset --hard commit_hash
$ git push -f origin master
#上面那種方法至關於刪除了後面的提交,就是把HEAD向後移動了,因此在和其餘人合併代碼的時候很容易衝突,因此用revert多是更好的一種方法,它是基於你要恢復的版本建立了一個新的提交
$ git revert commit_hash
$ git push -f origin master

3.5 git-flow

參考

4. 標籤

git的標籤是版本庫的快照,但其實它就是指向某個commit的指針,跟分支很像,可是分支能夠移動,標籤不能移動

$ git tag #查看已有標籤
$ git tag v1.0 #建立
#給某次commit打標籤
$ git tag v1.1 commit_hash 
#用-a指定標籤名,-m指定說明文字
$ git tag -a v1.1 -m "version 1.1 released" commit_hash
$ git show v1.0 #查看

$ git tag -d v0.1 #刪除標籤
$ git push origin v1.0 #推送標籤到遠程
$ git push origin --tags #一次性推送所有還沒有推送到遠程的本地標籤
#標籤已經推送到遠程,刪除
$ git tag -d v1.1
$ git push origin :refs/tags/v1.1

5. 關於.gitconfig 、.gitignore

5.1 全部 Git 配置都保存在你的 .gitconfig 文件中
別名 Alias 命令 Command 設置
git cm git commit git config --global alias.cm commit
git co git checkout git config --global alias.co checkout
git ac git add . -A git commit git config --global alias.ac '!git add -A && git commit'
git st git status -sb git config --global alias.st 'status -sb'
git tags git tag -l git config --global alias.tags 'tag -l'
git branches git branch -a git config --global alias.branches 'branch -a'
git lg git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit -- git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --"

爲了在鍵入 comit 調用 commit命令,只需啓用自動糾錯功能:

$ git config --global help.autocorrect 1
5.2 .gitignore 忽略文件模板

忽略版本庫的文件、文件夾

#1.查看取消某個文件(夾)可能影響到的文件列表預覽 -n這個參數表示預覽
$ git rm -r -n --cached [Directory or File]

#2.將文件(夾)移除版本控制
git rm -r --cached [Directory or File]

#3.添加到.gitignore文件中,提交
$git commit -m "移除[Directory or File]的版本控制"

#4.推送到遠程服務器
git push origin master

6. 學習參考資料

相關文章
相關標籤/搜索