.git目錄下文件的介紹
- hooks (鉤子函數的一個庫 類似於回調函數)
- info (包含一個全局性的排除文件)
- objects (目錄存儲所有數據內容)
- refs (目錄存儲指向數據(分支)的提交對象的指針)
- config (文件包含項目特有的配置選項)
- description (顯示對倉庫的描述信息)
- HEAD (文件目前被檢出的分支)
- logs (日誌信息)
- index (文件保存暫存區的信息)
基礎Linux命令
- clear 清除屏幕
- echo 'hello word '>test.tet 命令臺書寫內容
- ll 將當前目錄下的子目錄展現出來
- find ./ 將當前目錄下的子目錄以及文件也展現出來
- find ./ -type f 只講文件展現出來
- rm text.txt 刪除文件
- MV a.txt b.txt 更名字
- cat a.txt 查看文件內容
- vim a.txt 編輯內容 i 插入 ese : wq 保存退出 :set nu 設置行號 q! 強制退出不保存
初始化git
- git init (初始化倉庫 生成.git文件)
- git config --global user.name “ychunx”
- git config --global user.email @ .com
- git config --list
高級命令(crud)
-
git init 初始化
-
git add ./ 添加暫存區
-
git commit -m “註釋” 提交項目
-
git status 查看當前狀態
-
git diff 查看當先做的哪些更新沒有暫存
-
git diff -cached 查看哪些已經更新好了準備下次提交
-
git commit -a -m git自動將已經跟蹤過的文件暫存起來一併提交
-
rm yd.txt 刪除文件 暫存區裏沒有文集 版本庫多了一個提交對象不過沒有內容
刪除文件屬於修改操作 跟上面的提交步驟一樣
-
-
mv z.txt zx.txt 重新起名字跟已修改一樣的操作
-
git add ./
-
git commit -m “rename zx”
-
git log --oneline 查看提交歷史記錄
-
git reflog 查看命令歷史記錄
-
git checkout – filename 撤銷工作區修改,注意 – ,區分分支管理
-
git reset HEAD filename 撤銷暫存區版本,放回工作區
-
git reset --hard HEAD^ 在版本庫回退至第幾個版本(有幾個^)可以HEAD~num指定
-
也可以git reset --hard id ,利用git reflog 或 git log 查找文件id
-
git commit --amend 提交區註釋寫錯了修改註釋
-
git rm 刪除文件後 git commit ,可以用 git checkout 恢復
-
git push origin master 把本地
master
分支的最新修改推送至GitHub -
git clone https://github.com/name/ .git 或者 [email protected]:name/ .git
-
分支
-
每一個功能都可以開一個分支,不影響主線的分支
分支就是一個活動的指針就在提交對象的前面指向最新提交
切換分支的時候一定要提交完的時候再切否則會出現問題
每次切換分支前當前分支一定要是已提交狀態 否則會污染主分支 如果第一次提交了再修改的時候沒有提交他就不讓切換分支了- master默認是主分支
- git branch 查看當前分支,列出所有分支,* 指向當前分支
- git branch test 會在當前的提交對象上創建一個分支
- git checkout test 將分支轉到test上面來
- git checkout -b test 創建分支並且切換過去
- git branch -d test 刪除分支 不能自己刪自己
- git merge test 將test合併到當前分支上
- 如果在沒有合併的情況下修改,可能會衝突
- 衝突後 git status 查看衝突文件
- Git用
<<<<<<<
,=======
,>>>>>>>
標記出不同分支的內容,我們修改如下後保存 - 刪除多餘分支
- switch
- git switch -c test 創建並切換到新的分支test
- git switch master 直接切換已有分支
- git branch -v 查看分支的最後一個提交
- git log --graph 查看分支合併圖
- git merge --no-ff -m “merge with no-ff” dev
--no-ff
參數,表示禁用Fast forward
:- 因爲本次合併要創建一個新的commit,所以加上
-m
參數,把commit描述寫進去 - 合併分支時,加上
--no-ff
參數就可以用普通模式合併,合併後的歷史有分支,能看出來曾經做過合併,而fast forward
合併就看不出來曾經做過合併
- 因爲本次合併要創建一個新的commit,所以加上
- git log --graph --pretty=oneline --abbrev-commit用
git log
看看分支歷史
bug 分支
-
git stash 把當前工作現場“儲藏”起來,等以後恢復現場後繼續工作
-
儲藏起來的用 git stash list 查看
-
恢復:
-
一是用
git stash apply /stash@{0}/
恢復,但是恢復後,stash內容並不刪除,你需要用git stash drop
來刪除 -
另一種方式是用
git stash pop
,恢復的同時把stash內容也刪了
-
-
在一個分支上修復了bug後,這個bug其實在其他分支上也存在
- Git專門提供了一個
git cherry-pick
命令,讓我們能複製一個特定的提交到當前分支,避免重複勞動 - 我們只需要把
4c805e2 fix bug 101
這個提交所做的修改“複製”到命令後 git cherry-pick 4c805e2
- Git專門提供了一個
-
-
強行刪除沒有合併的分支d需要大寫 git branch -D name
-
查看遠程庫的信息,用
git remote
或者,用git remote -v
顯示更詳細的信息- git push origin name 推送本地分支到 github
多人協作
因此,多人協作的工作模式通常是這樣:
- 首先,可以試圖用
git push origin
推送自己的修改; - 如果推送失敗,則因爲遠程分支比你的本地更新,需要先用
git pull
試圖合併; - 如果合併有衝突,則解決衝突,並在本地提交;
- 沒有衝突或者解決掉衝突後,再用
git push origin
推送就能成功!
如果git pull
提示no tracking information
,則說明本地分支和遠程分支的鏈接關係沒有創建,用命令git branch --set-upstream-to origin/
。
這就是多人協作的工作模式,一旦熟悉了,就非常簡單。