1、git基礎入門
1.1 基礎概念
git是一個開源的分佈式版本控制系統,用於敏捷高效的處理或大或小的項目,更是一個內容管理系統(CMS),工作管理系統。
git和snv差異
- git是分佈式的,svn不是
- git把內容按元數據方式存儲,而svn是按照文件
- git沒有一個全局的版本號,而svn有
- git的內容完整性要優於svn。
1.2 安裝
window平臺安裝,安裝包下載地址
安裝時候按照提示步驟,一步一步安裝就行了。安裝完成就可以使用git工具,還有一個圖形界面的項目管理工具。
圖形管理工具
git命令行
1.2 git配置
git提供了一個git config的工具,用來配置讀取相應的工作環境變量
在 Windows 系統上,Git 會找尋用戶主目錄下的 .gitconfig 文件。主目錄即 $HOME 變量指定的目錄,一般都是 C:\Documents and Settings\$USER。
1、配置個人的用戶名和郵件
使用了global選項,以後所有的項目都會默認使用這裏配置的用戶信息
git config --global user.name 'youname'
git config --global user.email [email protected]
2、查看配置信息
git config --list //所有的配置信息都會列出來
git config user.name //查看姓名
git config user.email //查看郵箱
3、工作流程圖
1.3 git工作區、暫存區、版本庫概念
- 工作區:電腦裏面能看到的目錄
- 暫存區:英文stage或者index,在.git目錄下的index文件,暫存區也叫索引。
- 版本庫:工作區有個隱藏的目錄.git,這個不算工作區,而是git的版本庫
2、git基本操作
2.1 git初始化:git init
git使用init來初始化倉庫,因爲很多命令都需要在倉庫裏面使用,因此首先需要初始化,初始化以後,倉庫下回多出來一個.git目錄(隱藏文件,可在文件夾設置裏面把隱藏文件顯示),.git目錄下包括了所有的元數據。如果需要某個文件當做倉庫,只需要再當前目錄下,在執行git init命令。
git init
2.2 創建倉庫:git init 【directory】
使用指定目錄作爲git倉庫,執行這個命令,會生成一個newrepo的文件,作爲git倉庫,newrepo裏面也有一個.git目錄
git init newrepo
2.3 拷貝(克隆)項目:git clone [url]
使用git clone從倉庫中拷貝代碼,也可以克隆項目到指定文件夾。url是git倉庫地址,directory本地目錄。
git clone [url]
git clone [url] [directory]
2.4 查看項目的當前狀態:git status
查看當前項目的狀態,更改了那些文件。如果你新建了文件,添加了文件到緩存,修改了文件,想知道有沒有提交,都可以執行這個命令,來查看相關的文件信息,和你的操作軌跡。
git satus
2.5 新建文件等文件操作命令:touch [filename]
touch a // 創建一個a文件
echo 1234 >> a // 把1234這個內容放入a文件
cat a // 打開a文件 讀取出a文件中的內容
mkdir test // 創建test文件夾
rm 文件名 // 刪除文件
2.6: 降文件添加到緩存區:git add [filename]
將文件添加到緩存,如果是多個文件,在命令行後面新增文件名即可。
git add test.js//把test.js提交到緩存
git add test.js one.html//把test,one提交到緩存區
git add .//把所有文件提交到緩存區
2.7 提交文件到本地倉庫:git commit
執行git commit將緩存區內容添加到倉庫中。每次提交都會記錄你的名字與郵箱,所以要提前設置一下。-m添加註釋
git commit //提交到倉庫
git commit -m '註釋內容' //提交到倉庫,添加備註信息
git commit -am ''//提交到倉庫,添加備註信息,文件已經放入倉庫,直接提交添加備註,不用add,commit。
2.8 提交代碼到遠程倉庫:git push
git push //把文件上傳到遠程倉庫
2.9 更新代碼,從遠程倉庫拉取代碼:git pull
git pull //從遠程倉庫拉取代碼,類似svn的update
2.10 取消已緩存的內容:git reset head /[filename]
取消贏緩存的內容(git add提交到緩存裏面的文件),
git reset head,取消所有緩存的內容(當前版本);
git reset [filename],取消指定文件的內容。取消以後,可執行status查看文件狀態;
git reset head
git reset test.js
2.11 刪除文件:git rm 【file】
從git裏面移除某個文件,執行git rm [file]命令;
如果要刪除暫存區的的文件,則執行git rm -f [file]命令;
如果要刪除暫存區的文件,但是又要保留在工作目錄中,執行 git rm --cached [file];
從工作區刪除刪除目錄,git rm -r [directory ]
git rm test.js
git rm -f test.js
git rm --cached test.js
git rm -r test
2.12、比較文件:git diff
如果文件已經修改了,還麼有提交,可以執行 git diff命令,來查看差異
2.13 查看提交日誌:git log/relog
查看命令歷史,查看倉庫的操作歷史
git log
git reflog
git log -n//查看近期提交的n條記錄
git log -p//查看提交的詳細記錄
2.14 快速打開圖形操作界面:gitk
gitk
2.15 查看文件信息:ls
ls // 查看當前路徑下面的所有文件名
ls 文件夾名 // 查看對應文件夾中的內容
ls -l // 拉出最近git提交記錄以及對應修改的文件名
ls -l -a // 拉出最近git提交記錄以及對應修改的文件名,隱藏的文件也會顯示
2.16 文件目錄操作:cd
cd ~ // 將工作路徑快速切換到root
cd - // 將工作路徑切換到上一狀態
cd ../ // 切回到上一個工作路徑
cd 文件夾名 // 進入某個目錄
cd / // 進入根目錄
2.17 常見分支操作:
git branch //列出本地所有分支
git branch 分支名 // 新建分支
git branch // 查看當前所有分支
git checkout 分支名 // 檢出分支
git checkout -b 分支名 // 創建並切換分支
git checkout commitId 文件名(文件路徑下的文件名) 還原這個文件到對應的commitId的版本
(例如src/page/attendance/attendanceSum.vue我想把它還原到2個版本之前 首先git log src/page/attendance/attendanceSum.vue找到對應想要還原的版本
複製版本提交的commitID 然後執行git checkout commitID src/page/attendance/attendanceSum.vue
這樣就把attendanceSum.vue這個單個文件 還原到了對應版本)
git branch -v // 查看分支以及提交hash值和commit信息
git merge 分支名 // 把該分支的內容合併到現有分支上
git branch -d 分支名 // 刪除分支
git branch -D 分支名 // 強制刪除 若沒有其他分支合併就刪除 d會提示 D不會
git branch -m 舊分支名 新分支名 // 修改分支名
git branch -M 舊分支名 新分支名 // 修改分支名 M強制修改 若與其他分支有衝突也會創建(慎用)
git branch -r // 列出遠程分支(遠程所有分支名)
git branch -a // 查看遠程分支(列出遠程分支以及本地分支名)
git fetch // 更新remote索引
git push -u origin 分支名 // 將本地分支推送到origin主機,同時指定origin爲默認主機,後面就可以不加任何參數使用git push 也可解決 git建立遠程分支關聯時出現fatal ... upstram的問題
2.17 標籤操作:git tag
git tag // 查看列出所有打過的標籤名
git tag -d 標籤名 // 刪除對應標籤
git tag 標籤名字 // 在當前倉庫打個標籤
git tag foo -m "message" // 在當前提交上,打標籤foo 並給message信息註釋
git tag 標籤名 哈希值 -m "message" // 在某個哈希值上打標籤並且寫上標籤的信息
git tag foo HEAD~4 // 在當前提交之前的第4個版本上 打標籤foo
git push origin --tags // 把所有打好的標籤推送到遠程倉庫
git push origin 標籤名 // 把指定標籤推送到遠程倉庫
git stash // 把暫存區的內容 暫時放在其他中 使暫存區變空
git stash list // 查看stash了哪些存儲
git stash pop // 將stash中的內容恢復到當前目錄,將緩存堆棧中的對應stash刪除
git stash apply // 將stash中的內容恢復到當前目錄,不會將緩存堆棧中的對應stash刪除
git stash clear // 刪除所有緩存的stash
git pull --tags // 把遠程倉庫的標籤也拉取下來
git push origin :refs/tags/遠程標籤名 // 刪除遠程倉庫的標籤
2.18 遠程同步操作
# 下載遠程倉庫的所有變動
$ git fetch [remote]
# 顯示所有遠程倉庫
$ git remote -v
# 顯示某個遠程倉庫的信息
$ git remote show [remote]
# 增加一個新的遠程倉庫,並命名
$ git remote add [shortname] [url]
# 取回遠程倉庫的變化,並與本地分支合併
$ git pull [remote] [branch]
# 上傳本地指定分支到遠程倉庫
$ git push [remote] [branch]
# 強行推送當前分支到遠程倉庫,即使有衝突
$ git push [remote] --force
# 推送所有分支到遠程倉庫
$ git push [remote] --all
3、提交代碼步驟
3.1 查看當前狀態:git status
第一步,查看當前文件狀態,git status,查看修改了那些文件,紅色字體就是修改的文件。
3.2 添加文件到緩存區:git add .
如果one.vue,test.vue你都都想提交執行git add .
如果只提交一個文件,執行 git add one.vue,提交指定的文件。
再執行 status看一下,是否全部提交成功。
3.3 提交代碼到本地倉庫:git commit -m 'xx'
提交代碼(提交已經加到緩存區裏面的代碼)到本地倉庫
3.4 從遠程主機更新代碼:git pull [主機] [分支]
取回遠程主機某個分支的更新,再與本地的指定分支合併
3.5提交代碼到遠程倉庫:git push [主機] 【分支】