參考學習于廖雪峰的git教程--https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
git config user.name 使用者name
git config user.email 使用者email
1. git init? 初始化git倉庫
2. git status 查看倉庫當前的狀態(tài)
3. git diff
? ? .暫存區(qū)有文件的時候,查看工作區(qū)和暫存區(qū)的差別
? ? .暫存區(qū)沒有文件的時候,查看工作區(qū)和上次提交到版本庫中的文件的差別
? ? .git diff HEAD --readme.txt 查看版本庫中readme.txt文件和工作區(qū)中的readme.txt文件的區(qū)別
? ? HEAD指向版本庫中的當前版本
4. git add? 文件修改提交到暫存區(qū)
5. git commit 提交更改,即把暫存區(qū)的內(nèi)容提交到當前分支(參數(shù) -m 后面跟備注)
6. git log 查看歷史提交記錄,后面有很多參數(shù)可用,比如 --pretty=oneline(每個提交信息單行顯示)
7. git reset --hard HEAD^ (回退到上一個版本,HEAD^^回退到上上個版本,HEAD~100回退到前100個版本)
? git reset --hard 1e650aa (1e650aa是提交版本的哈希,回到哈希值為1e650aa的版本)
? git reflog? 記錄每次操作的命令,可用獲得各個版本的哈希值
8. git checkout --readme.txt 把工作區(qū)的修改全被撤銷,即,讓這個文件回到最近一次git commit 或者 git add 后 的狀態(tài)
9. git reset HEAD readme.txt 把暫存區(qū)的修改全部撤銷掉,重新放回工作區(qū)
10. 遠程倉庫?
? ? 創(chuàng)建ssh key $ ssh-keygen -t ras -C "youremail@example.com",使用默認值就可以了
? ? 在用戶目錄中找到.ssh目錄 id_rsa.pub是公鑰
? ? 在github中的SSH key中 在文本框里粘貼id_rsa.pub的內(nèi)容
? ? 本地倉庫和github倉庫關聯(lián),本地倉庫運行 $ git remote add origin git@github.com:kevinJser/gitstudy.git (后面的為github上倉庫的ssh地址)
11. git push origin master 提交推送 向遠程倉庫origin推送master分支
12. git clone ......? 克隆
13. git checkout -b dev? 創(chuàng)建分支dev
? ? 相當于兩步操作 git branch dev? ? git checkout dev
14. git branch 查看當前分支
15. git merge dev? 合并指定分支到當前分支 (Fast-forward,快進模式) 也就是直接把master指向dev的當前提交
16. git branch -d dev? 刪除dev分支
17. 合并沖突解決, 本地修改后 git add ...? git commit ... 最后刪除臨時分支
18. 強制禁用Fast forward模式合并(Fast forward模式下,刪除分支后,會丟掉分支信息)
? ? 禁用后,git會在merge時生成一個新的commit,這樣就可以從分支歷史上看到分支信息
19. bug分支,由于git中分支功能的強大,因此,每個bug都是可以通過一個新的臨時分支來修復,修復后合并分支,然后刪除臨時分支
20. git stash 儲存當前的工作,當工作未完成,需要切換到其他分支處理事務的時候,可以先把當前工作內(nèi)容存儲起來
? ? git stash list 查看存貯的工作內(nèi)容。
? ? git stash apply stash@{0}(這個是 git stash list 中查看到的存儲內(nèi)容地址) 恢復工作內(nèi)容,后面需要使用
? ? git stash drop? 來刪除保存的工作內(nèi)容
? ? git stash pop 恢復的同時也把stash內(nèi)容刪除了
21. feature分支(實驗性分支,比如添加新功能的時候?qū)懙囊恍崿F(xiàn)新的代碼),完成后合并刪除
? ? git branch -D feature 強制刪除feature分支,沒有合并過的分支無法普通刪除,只能強制刪除
22. git remote 查看遠程倉庫
? ? git remote -v 詳細信息
23. 當推送失敗的時候,一般是因為和遠程倉庫有了沖突(比如,你的工作伙伴也修改了你推送的那個分支,并且已經(jīng)推送到了遠程倉庫中)
? ? 這時候,需要先pull下來,然后在本地合并,解決沖突.
24. git pull 的時候需要指定本地分支和遠程倉庫分支的鏈接
? ? git branch --set-upstream dev origin/dev,然后再git pull
? ? 然后就是手動解決沖突,然后再push
25. git tag v1.0 為當前分支打上標簽
? ? git tag 查看當前分支的標簽
? ? 要為之前的commit打標簽:
? ? git log --pretty=oneline --abbreve-commit 查看各個commit的哈希號
? ? git tag v0.9 commit號
? ? git tag 展示出來的標簽不是按照時間順序列出,而是按照字母排序
? ? git show v0.9? 查看標簽信息
? ? git tag -a v0.1 -m "version 0.1 released" commit號
? ? git tag -d v0.1 刪除標簽
? ? git push origin
? ? git push origin --tags 推送所有尚未推送到遠程的本地標簽
? ? 刪除遠程標簽:
? ? git tag -d v0.9 先本地刪除
? ? git push origin :refs/tags/v0.9 從遠程刪除
26. 忽略特殊文件
? ? https://github.com/github/gitignore
? ? 忽略原則:
? ? ? ? 1. 忽略操作系統(tǒng)自動生成的文件,比如縮略圖等。
? ? ? ? 2. 忽略編譯生成的中間文件、可執(zhí)行文件等,也就是如果一個文件是通過另外一個文件自動生成的,
? ? ? ? ? 那自動生成的文件就沒必要放進版本庫,比如Java編譯產(chǎn)生的.class文件。
? ? ? ? 3. 忽略你自己的帶有敏感信息的配置文件,比如存放口令的配置文件。
? ? git add -f App.class 強制添加到GIT, 因為gitignore的原因可能一些文件被忽略,這樣可以強制添加。
? ? git check-ignore -v App.class 檢查