我的Git小本本
Git Notes
設定使用者名稱和Email
設定使用者名稱
git config --global user.name "fanyank"
設定Email
git config --global user.email "[email protected]"
設定這個的主要作用是檢視提交日誌時可以清楚的知道是哪位小夥伴提交了炸彈,那有人冒充我怎麼辦,這個....應該沒有人會那麼無聊
避免每次pull和push的時候輸入密碼
git config --global credential.helper store
gitignore
.idea# 忽略idea工程檔案 *.iml# 忽略以iml結尾的所有檔案 target/# 忽略 target/ 目錄下的所有檔案 *.class# 忽略所有 .class 結尾的檔案 !a.class# 但 a.class 除外 /.config# 忽略專案根目錄下的 .config 檔案,不包括 otherDir/.config doc/*.txt# 會忽略 doc/notes.txt 但不包括 doc/readme/a.txt
如果配置不起所用,那麼說明你的這些檔案已經被git
所管理了,使用如下命令清空本地版本管理的檔案,之後重新使用git add .
新增檔案到暫存區
git rm -r --cached .
新建分支
新建本地分支並切換到本地分支
git checkout -b dev_fanyank
注意,此時分支僅僅存在於你的本地,需要push
操作之後遠端倉庫才會有你的分支
接著你會愉快的修改程式碼,然後commit
,之後你熟練的敲下了push
命令
git push
結果你得到瞭如下資訊,程式碼並沒有被正確推到遠端倉庫
fatal: The current branch dev_fanyank has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin dev_fanyank
這告訴我們本地分支還沒有和遠端分支建立聯絡,提示已經很明確了,使用以下命令即可
git push --set-upstream origin dev_fanyank
以後我們就可以直接使用git push
命令進行推送操作啦
檢視遠端倉庫資訊
git remote origin
預設的遠端倉庫名是origin
你可以使用如下命令來顯示更詳細的資訊
git remote -v [email protected]:michaelliao/learngit.git (fetch) [email protected]:michaelliao/learngit.git (push)
可以看到抓取和推送的origin
地址,如果沒有推送許可權,是看不到push
地址的
版本回退
-
before add
將工作區的檔案回到到上一次的commit版本
git checkout -- filename
-
before commit
將暫存區的檔案返回到工作區
git reset HEAD filename
將工作區的檔案回退到上一次commit版本
git checkout -- filename
一個常見的應用場景就是剛剛從遠端分支拉下來一個專案,然後用idea開啟之後會建立一系列的.iml檔案,然後這個專案下還沒有.gitignore檔案。這時,你悄咪咪的修改完程式碼,興高采烈的敲下了
git add .
命令,你會發現有一大串的.iml和.class檔案被新增進了暫存區,此時該怎麼辦呢?只需把暫存區的檔案清空即可,使用如下命令
git reset HEAD .
如果連自己悄咪咪改的程式碼也不想要了,直接回到上一次commit版本,請使用如下命令
git checkout -- .
當然,大家都喜歡使用
git add .
命令來將所有變更新增到暫存區,專案拉下來之後發現沒有.gitignore檔案,但是我們又修改了程式碼怎麼辦?有沒有一種解決方案能讓我們既可以使用git add .
命令來新增變更,同時又不丟失我當前修改的程式碼呢?首先,將暫存區清空(暫存區裡面包含著你提交的大量的iml,class和少量的程式碼檔案)
git reset HEAD .
新建.gitignore檔案,內容設定好需要過濾的檔案,如過濾idea工程檔案,iml,class檔案
.idea *.iml *.class
接著開森的使用
git add .
命令git add .
接下來正常提交就可以啦
-
after commit
假設你剛剛執行完
git commit
命令,然後又修改了部分程式碼,但是這部分程式碼很糟糕,你想回到你剛剛commit的版本git reset --hard HEAD
如果你對你剛提交的版本也不滿意,想回到剛提交版本之前的版本(也就是回退兩個版本)
git reset --hard HEAD~2
版本前進
假設你剛剛執行如下了版本回退命令,版本回退了兩個版本
git reset --hard HEAD~2
現在我想回到我原來的版本,該怎麼辦呢?
首先檢視你原來版本的版本號
git reflog
接著根據版本號回到原來版本
git reset --hard 4a16a636