Git使用總結(廖雪峰git)


安裝

$ sudo apt-get install git

### 配置 ``` # 配置用戶名和郵箱 $ git config --global user.name "Your Name" $ git config --global user.email "email@example.com" # 查看用戶和郵箱配置 $ git config user.name $ git config user.email # 或者 $ git config --list 配置PGP簽名私鑰 git config --global user.signingkey # 解決亂碼問題 $ git config --global core.quotepath false # 顏色配置 $ git config --global color.ui true ```
### 創建及刪除版本庫 ``` # 創建版本庫 $ git init # 刪除版本庫 把.git文件刪除 ```
### 添加文件及刪除文件 ``` # 添加一個文件 $ git add readme.txt # 工作區-->暫存區 $ git commit -m "wrote a readme file" # 暫存區-->版本庫 # 添加所有文件 $ git add . $ git commit -m "add all files" # 刪除文件 $ git rm test.txt # 根據私鑰提交 $ git commit -S -m "GPG-sign" ```
### 查看工作區狀態、修改內容及日志 ``` # 查看工作區狀態 $ git status # 查看修改內容 $ git diff readme.txt # 查看日志 $ git log # 查看日志(可以顯示出PGP簽名) git log --show-signature $ git log --pretty=oneline # 查看以往的命令記錄 $ git reflog ```
### 時光穿梭 ``` # 版本庫回到上一個狀態 $ git reset --hard HEAD^ # 版本庫回到其他狀態(可以重返之后的狀態,配合git log或git reflog使用) $ git reset --hard 3345674 ``` #### 用版本庫里的版本替換工作區的版本 ``` # 1.還沒有git add # 把工作區的修改丟棄,回到最近一次git commit或git add時的狀態,to discard changes in working directory $ git checkout -- readme.txt # 2.已經git add # Git同樣告訴我們,用命令git reset HEAD file可以把暫存區的修改撤銷掉(unstage),重新放回工作區: $ git reset HEAD readme.txt # 然后 $ git checkout -- readme.txt ```
### 連接遠程庫 ``` # 創建sshkey $ ssh-keygen -t rsa -C "youremail@example.com" # 登陸GitHub,打開“settings”,“SSH Keys”頁面:然后,點“Add SSH Key”,填上任意Title,在Key文本框里粘貼id_rsa.pub文件的內容 # 添加遠程庫 $ git remote add origin git@github.com:saitama233/lxf-gitlearning # 把本地內容推送到遠程庫(第一次需要加-u參數,之后就不需要了) # 如果git push有沖突,可以先git pull解決沖突,再git push $ git push -u origin master # 把遠程庫克隆到本地 $ git clone git@github.com:saitama233/lxf-gitlearning # 查看遠程庫 $ git remote # 查看遠程庫(顯示更詳細的信息) $ git remote -v 指定本地dev分支與遠程origin/dev分支的鏈接 $ git branch --set-upstream dev origin/dev ```
### 分支管理 ``` # 創建分支 $ git branch # 切換分支 $ git checkout # 創建+切換分支 $ git checkout -b # 刪除分支 $ git branch -d # 強行刪除分支(即刪除還沒有合並過的分支) # 查看分支 $ git branch

合並某分支到當前分支

1.Fast forward模式,但這種模式下,刪除分支后,會丟掉分支信息。

$ git merge

2.加上--no-ff參數就可以用普通模式合並,合並后的歷史有分支,能看出來曾經做過合並

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

#### 分支中的沖突

先查看狀態

$ git status

然后修改沖突文件

$ vi readme.txt

#### stash功能(把當前還未提交的工作現場“儲藏”起來,然后切換到其他分支工作,之后回來再恢復現場)

暫存

$ git stash

恢復現場

1.一種方式是用git stash pop,恢復的同時把stash內容也刪了

(這種貌似只能恢復到最后一個)

$ git stash pop

2.另一種方式是用git stash apply恢復,但是恢復后,stash內容並不刪除,你需要用git stash drop來刪除

這種可以指定恢復到哪個stash狀態

$ $ git stash apply stash@{0}


### 標簽管理
tag就是一個讓人容易記住的有意義的名字,它跟某個commit綁在一起。

創建標簽(為當前commit)

$ git tag v1.0

創建標簽(為其他commit)

$ git tag v0.9 6224937

創建帶說明文字的標簽

$ git tag -a v0.1 -m "version 0.1 released" 3628164

用PGP私鑰簽名一個標簽

1.-s使用默認私鑰

$ git tag -s v0.2 -m "signed version 0.2 released" fec145a

2.-u指定私鑰

$ git tag -u FCC61057 v0.2 -m "signed version 0.2" 3a367e8

推送某個標簽到遠程服務器

$ git push origin v1.0

推送所有標簽到遠程服務器

$ git push origin --tags

刪除標簽

$ git tag -d v0.1

刪除遠程的標簽

$ git tag -d v0.1
$ git push origin :refs/tags/v0.9

顯示某個標簽

$ git show v0.9

顯示所有標簽

$ git tag


### 設置別名

--global參數是全局參數,也就是這些命令在這台電腦的所有Git倉庫下都有用。

用st來代替status

$ git config --global alias.st status

用lg來代替那一長串

$ 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"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM