GIT學習


工作區 --git add--> 暫存區(stage/index)--git commit--> 本地庫 --git push--> 遠程倉庫

git add file 從工作去添加到暫存區
git commit file -m "#message."
提交修改和提交新文件都是兩步:git add 和 git commit
git status 
git pull
git push
git diff file

git log 查看版本記錄
git log --pretty=oneline
git log --graph --pretty=oneline --abbrev-commit 查看分支的合併情況

HEAD 當前版本
HEAD^ 上一個版本
HEAD^ 上上一個版本
HEAD~100 上100個版本
git reset --hard HEAD^ 把當前版本回退到上一個版本,(這個指令回退的是本地的版本)
git reset --hard 1094a 回到指定的某個版本,包括未來的某個版本
cat file  查看文件內容

git checkout -- file 撤銷工作區的修改,這裏有兩種情況:
一種是file自修改後還沒有提交到暫存區,現在,撤銷修改就回到了與版本庫一模一樣的狀態;
另一種是file已經添加到暫存區後,又做了修改,現在,撤銷修改就回到添加到暫存區後的狀態。

git reset HEAD file 把暫存區的修改撤銷掉,重新放回工作區

刪除文件:
再git rm file
再git commit -m "message",
如果刪錯了,那就git checkout -- file ,checkout其實就是用版本庫中的版本替換工作區的版本。

本地git倉庫和遠程github倉庫之間的傳輸是通過SSH加密的。
創建SSH Key: ssh-keygen -t rsa -C "[email protected]" 用戶主目錄裏找到.ssh目錄,裏面有id_rsa和id_rsa.pub兩個文件,這兩個就是SSH Key的祕鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰
關聯遠程倉庫:git remote add origin [email protected]:michaelliao/learngit.git
第一次推送master分支的所有內容:git push -u origin master   之後推送gitpush origin master
從遠程庫克隆一個本地庫:git clone [email protected]:michaelliao/gitskills.git

git checkout -b dev 創建分支: -b 表示創建分支並切換,相當於一下兩條命令:
git branch dev;git checkout dev
git branch 查看當前分支: 該命令會列出所有分支,當前分支前面會有一個*號
git checkout master 切換回master分支
git merge dev 把dev分支的工作成果合併到master分支上
git merge 合併指定分支到當前分支
    git branch -d dev 刪除分支

實踐得出的結論:切換分支前,本地修改必須提交,否則不能切換過去。兩個分支的修改互不影響,一個分支不能看到另一個分支合併之前修改的內容。
分支的意義?什麼情況下用分支?假設你準備開發一個新功能,但是需要兩週才能完成,第一週你寫了50%的代碼,如果立刻提交,由於代碼還沒有寫完,不完整的代碼庫會導致別人沒法幹活,如果等代碼完全寫完再提交一次,又存在丟失每天進度的巨大風險。現在有了分支就不用怕了。你創建了一個屬於你自己的分支,別人看不到,別人還繼續在原來的分支上工作,而你在自己的分支上工作,想提交就提交,知道開發完畢後,再一次性合併到原來的分支上,這樣,即保證了每天得開發進度不丟失,又不影響別人的工作。
dev分支上能push代碼到遠端嗎?即dev分支與master分支是相同的嗎?答:能。dev同樣能push代碼到遠端。切換帶dev分支後,執行git remote,能返回origin。
研究一下log中時間圖的看法?合併的時候沒有發生衝突,也會產生兩條線合併的效果。
研究一下什麼情況下回產生衝突?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章