git config --list # 查看git配置信息 git config user.name # 查看git用戶名 git config user.email #查看郵箱配置 git config --global user.name "nameVal" # 全局配置用戶名 git config --global user.email "eamil@qq.com" # 全局配置郵箱
git init #初始化項目 git add 文件名 #添加指定文件 git add . #添加因此文件 git commit -m "提交註釋" #添加一個版本 git log #查看歷史版本(不包含回退部分的) git reflog #查看歷史版本(詳細 ,包含回退部分的版本) git reset --hard 提交的版本號 #回退到指定的歷史版本 git push -f #回退版本後,遠程也回退 (強制推送) git check out # git reset --soft git reset head git reset --mix # gitlab 本身建立代碼託管(基於linux)
git clone -b 分支名 倉庫地址 git branch -a //查看線上分支 git branch //查看本地分支
- 建立本地分支
git checkout -b 新分支名執行該指令後,會在本地建立一個新分支,該分支是從當前分支上檢出的,因此全部文件內容都和當前分支如出一轍,這是正常的。建立成功後,將自動切換至新分支上。linux
推送本地分支到遠程倉庫git
git push --set-upstream origin 分支名
- 當我想從遠程倉庫里拉取一條本地不存在的分支時:
# 本地不存在的分支 git checkout -b 本地分支名 origin/遠程分支名這個將會自動建立一個新的本地分支,並與指定的遠程分支關聯起來。github
若成功,將會在本地建立新分支dev2,並自動切到dev2上。shell
若是出現提示:json
fatal: Cannot update paths and switch to branch 'dev2' at the same time. Did you intend to checkout 'origin/dev2' which can not be resolved as commit?表示拉取不成功。咱們須要先執行緩存
git fetch而後再執行服務器
git checkout -b 本地分支名 origin/遠程分支名
- 本地存在的分支
# 當前分支 git pull # 本地其餘分支(存在的) git pull 分支名若是git pull 不成功,就使用
git pull origin 分支名
就行了)app
git branch -a #查看已有的本地及遠程分支 git push origin --delete dev #刪除遠程分支 git remote prune origin # 同步遠程分支(刪除本地分支) git remote show origin # 查看遠程分支狀況 git branch -d dev #刪除本地分支
git remote add origin ....... # 添加git地址 git push origin dev 推送到線上dev分支 git pull origin dev 獲取線上的dev分支 提交的代碼晚於github行的代碼,會有錯誤提示,叫你從新拉取代碼 拉取代碼會提示你合併代碼 git pull origin dev = git fetch origin dev + git merge origin/dev git pull 的代碼會有分叉(有忘記提交的代碼的狀況:好比在公司開的代碼已經commit 可是忘提交,回家繼續開發提交,次日到都公司pull代碼就會出現分叉) 下面的方法不會有分叉 git fetch origin dev git rebase origin/dev #rebase 保持提交記錄的整潔
git stash save "save message" : 執行存儲時,添加備註,方便查找,只有git stash 也是能夠的,但查找時不方便識別。gitlab
git stash list :查看stash了哪些存儲fetch
git stash show :顯示作了哪些改動,默認show第一個存儲,若是要顯示其餘存貯,後面加stash@{$num},好比第二個 git stash show stash@{1}
git stash show -p : 顯示第一個存儲的改動,若是想顯示其餘存存儲,命令:git stash show stash@{$num} -p ,好比第二個:git stash show stash@{1} -p
git stash apply :應用某個存儲,但不會把存儲從存儲列表中刪除,默認使用第一個存儲,即stash@{0},若是要使用其餘個,git stash apply stash@{$num} , 好比第二個:git stash apply stash@{1}
git stash pop :命令恢復以前緩存的工做目錄,將緩存堆棧中的對應stash刪除,並將對應修改應用到當前的工做目錄下,默認爲第一個stash,即stash@{0},若是要應用並刪除其餘stash,命令:git stash pop stash@{$num} ,好比應用並刪除第二個:git stash pop stash@{1}
git stash drop stash@{$num} :丟棄stash@{$num}存儲,從列表中刪除這個存儲
git stash clear
:刪除全部緩存的stash
$ git tag v1.0 v2.0
1.8.5 系列感興趣,能夠運行:
$ git tag -l "v1.8.5*"
在 Git 中建立附註標籤十分簡單。 最簡單的方式是當你在運行 tag
命令時指定 -a
選項:
$ git tag -a v1.4 -m "my version 1.4" $ git tag v0.1 v1.3 v1.4
另外一種給提交打標籤的方式是使用輕量標籤。 輕量標籤本質上是將提交校驗和存儲到一個文件中——沒有保存任何其餘信息。 建立輕量標籤,不須要使用 -a
、-s
或 -m
選項,只須要提供標籤名字:
$ git tag v1.4-lw $ git tag v0.1 v1.3 v1.4 v1.4-lw v1.5
你也能夠對過去的提交打標籤。 假設提交歷史是這樣的:
$ git log --pretty=oneline 15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment' a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support 0d52aaab4479697da7686c15f77a3d64d9165190 one more thing 6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment' 0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function 4682c3261057305bdd616e23b64b0857d832627b added a todo file 166ae0c4d3f420721acbb115cc33848dfcc2121a started write support 9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile 964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo 8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme
如今,假設在 v1.2 時你忘記給項目打標籤,也就是在 「updated rakefile」 提交。 你能夠在以後補上標籤。 要在那個提交上打標籤,你須要在命令的末尾指定提交的校驗和(或部分校驗和):
$ git tag -a v1.2 9fceb02
能夠看到你已經在那次提交上打上標籤了:
默認狀況下,git push
命令並不會傳送標籤到遠程倉庫服務器上。 在建立完標籤後你必須顯式地推送標籤到共享服務器上。 這個過程就像共享遠程分支同樣——你能夠運行 git push origin
。
$ git push origin v1.5
若是想要一次性推送不少標籤,也可使用帶有 --tags
選項的 git push
命令。 這將會把全部不在遠程倉庫服務器上的標籤所有傳送到那裏。
$ git push origin --tags Counting objects: 1, done. Writing objects: 100% (1/1), 160 bytes | 0 bytes/s, done. Total 1 (delta 0), reused 0 (delta 0) To git@github.com:schacon/simplegit.git * [new tag] v1.4 -> v1.4 * [new tag] v1.4-lw -> v1.4-lw
要刪除掉你本地倉庫上的標籤,可使用命令 git tag -d
。 例如,可使用如下命令刪除一個輕量標籤:
$ git tag -d v1.4-lw Deleted tag 'v1.4-lw' (was e7d5add)
注意上述命令並不會從任何遠程倉庫中移除這個標籤,你必須用 git push :refs/tags/
來更新你的遠程倉庫:
第一種變體是 git push :refs/tags/
:
$ git push origin :refs/tags/v1.4-lw To /git@github.com:schacon/simplegit.git - [deleted] v1.4-lw
上面這種操做的含義是,將冒號前面的空值推送到遠程標籤名,從而高效地刪除它。
第二種更直觀的刪除遠程標籤的方式是:
$ git push origin --delete <tagname>
若是你想查看某個標籤所指向的文件版本,可使用 git checkout
命令, 雖然這會使你的倉庫處於「分離頭指針(detached HEAD)」的狀態——這個狀態有些很差的反作用:
$ git checkout 2.0.0 Note: checking out '2.0.0'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b <new-branch> HEAD is now at 99ada87... Merge pull request #89 from schacon/appendix-final $ git checkout 2.0-beta-0.1 Previous HEAD position was 99ada87... Merge pull request #89 from schacon/appendix-final HEAD is now at df3f601... add atlas.json and cover image
在「分離頭指針」狀態下,若是你作了某些更改而後提交它們,標籤不會發生變化, 但你的新提交將不屬於任何分支,而且將沒法訪問,除非經過確切的提交哈希才能訪問。 所以,若是你須要進行更改,好比你要修復舊版本中的錯誤,那麼一般須要建立一個新分支:
$ git checkout -b version2 v2.0.0 Switched to a new branch 'version2'
若是在這以後又進行了一次提交,version2
分支就會由於這個改動向前移動, 此時它就會和 v2.0.0
標籤稍微有些不一樣,這時就要小心了。
1.修改提交的註釋
git commit --amend