git平常操做

0.準備工做

0.1 git安裝

 
圖形客戶端建議使用source tree, 中文界面

http://www.sourcetreeapp.com/git

0.3 git幫助信息

git help 
 
git help 指令名稱
 

0.4 git配置

顯示配置信息
git config -l -- global
 
修改基本配置
git config --global user.name 「姓名」
git config --global user.email 「郵箱」
git config --global color.ui auto
git config --global core.autocrlf input    
git config --global push.default simple 

0.5 git日誌

顯示全部或某個文件的 修改記錄

git log <可選的文件名>

顯示全部或某個文件的 修改記錄的概要(修改文件列別行數等)

git log --stat

顯示某次提交中 全部或某個文件 的具體修改內容

git show <提交ID>  <可選的文件名>
 

0.6 git操做記錄(用於無限悔棋)

操做記錄顯示
git reflog show
 
$ git reflog show
1ab8fe7 HEAD@{0}: reset: moving to HEAD^
f902b09 HEAD@{1}: reset: moving to HEAD@{3}
1ab8fe7 HEAD@{2}: reset: moving to HEAD^
f902b09 HEAD@{3}: reset: moving to HEAD@{1}
1ab8fe7 HEAD@{4}: reset: moving to HEAD^
f902b09 HEAD@{5}: commit: test
1ab8fe7 HEAD@{6}: reset: moving to HEAD^
815cee5 HEAD@{7}: commit: test
1ab8fe7 HEAD@{8}: commit: added missed cacheLib.h
a724beb HEAD@{9}: pull: Merge made by the 'recursive' strategy.
 
回退到某次操做後的狀態
git reset HEAD@{序號}
 
注意:沒有提交到倉庫中的代碼沒法恢復。
 

0.7 git倉庫構成

查看本地倉庫狀態
git status
 
$ git status
On branch dev                                                  =》 本地倉庫當前branch名稱
Your branch is up-to-date with 'origin/dev'.    =》 本地倉庫當前branch與遠程倉庫對應branch之間的差別
 
Changes to be committed:                               =》暫存區內容
  (use "git reset HEAD <file>..." to unstage)
 
        modified:   Makefile
 
Changes not staged for commit:                       =》工做區內容 (對倉庫中文件的修改)
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
 
        modified:   Makefile
 
Untracked files:                                                    =》工做區內容 (對私有文件的修改)                
  (use "git add <file>..." to include in what will be committed)
 
        build_native/
 
顯示臨時緩衝區內容
git stash list
 
$ git stash list
stash@{0}: On dev: clean 2
stash@{1}: On dev: clean
 
 
1.從遠程倉庫到本地倉庫
 
建立新的本地倉庫
git clone git@192.168.0.190:os.git <可選的本地倉庫目錄名稱>
 
從遠程倉庫獲取最新內容併合併到當前分支
git pull
 
從遠程倉庫獲取最新內容可是不合並
git fetch
2.從本地倉庫到遠程倉庫
本地倉庫更新到遠程倉庫
git push
3.從本地倉庫已有分支到私有分支
切換到已有分支
git checkout  <分支名稱>
 
從當前分支建立一個新分支並切換到新分支
git checkout -b <新分支名稱>
 
從某個提交建立一個新分支並切換到新分支(用於查看內容或者查找問題)
git checkout <提交ID> -b <新分支名稱>
 
查看branch信息
 
git branch -v
 
刪除某個branch
git branch -D <分支名稱 >
 
3.從私有分支到本地倉庫已有分支
合併其餘分支到當前分支
git merge  <其餘分支名稱>
 

若是有衝突,文件中會有以下內容:緩存

<<<<<<< app

當前分支fetch

=======ui

合併進來的分支spa

>>>>>>> 日誌

解決衝突後,根據merge命令的提示將文件放入暫存區(stage區),而後提交blog

終止當前合併操做get

git merge --abortinput

 

合併某個提交到當前分支

git cherry-pick <提交ID>

5.從工做區到暫存區
將工做區中的全部或某個文件放到暫存區(stage區)
git add <可選的文件或者目錄名>
 
將工做區全部對倉庫中代碼的修改(tracked文件)放到暫存區(stage區)
git add -u
 
查看暫存區中對倉庫中全部或某個文件的修改
git diff --cached <可選的文件或者目錄名>
查看工做區中對倉庫中全部或某個文件的修改
git diff <可選的文件或者目錄名>
6.從暫存區到工做區
將暫存區中對倉庫中全部或某個文件的修改恢復到工做區
git reset HEAD <文件或者目錄名>
7.從暫存區到本地倉庫
將暫存區中的內容提交到本地倉庫(簡單註釋)
git commit -m "註釋信息"
 
將暫存區中的內容提交到本地倉庫(複雜註釋,將會進入文本編輯界面)
git commit
修改上次提交的註釋信息
git commit --amend  -m "註釋信息"
8.從本地倉庫到暫存區
恢復到某次提交前的狀態(修改內容仍然在工做區)
git reset <提交ID^>
注意:本操做實質上是 復位到某次提交的前一次提交,並用其內容覆蓋暫存區的內容,但當前修改內容仍然在工做區
9.從本地倉庫到工做區
取消對某個文件或者文件夾的修改
git checkout <文件或者目錄名>    
注意:本操做實質上是用本地倉庫中的數據覆蓋工做區中的內容
 
恢復到某次提交前的狀態(工做區修改內容被丟棄 )
git reset <提交ID^>
注意:
1.本操做實質上是 復位到某次提交的前一次提交,並用其內容覆蓋暫存區和工做區的內容
2.若是工做區無修改內容,或者修改內容已保存到臨時緩衝區,能夠使用該命令 查看某次提交的內容或者查找問題,查看完畢後經過reflog恢復。
10.從工做區到本地倉庫
直接將文件提交到本地倉庫(!!不通過暫存區,慎用)
git commit -a -m  "註釋信息"
 
11.從工做區到臨時緩衝區
將工做區中全部對倉庫中代碼的修改(tracked文件)放到臨時緩衝區(stash區)
git stash save "緩衝區描述"
12.從臨時緩衝區到工做區
將臨時緩衝區(stash區) 中全部對倉庫中代碼的修改(tracked文件)彈出到工做區
git stash pop stash@{序號}
 
顯示臨時緩衝區某個緩存的內容
git stash show  stash@{序號}
顯示臨時緩衝區某個緩存的內容
git stash show  stash@{序號}
 



相關文章
相關標籤/搜索