git基本概念

工作區:倉庫的目錄。工作區是獨立於各個分支的。
暫存區:數據暫時存放的區域,類似於工作區寫入版本庫前的緩存區。暫存區是獨立於各個分支的。
版本庫:存放所有已經提交到本地倉庫的代碼版本
版本結構:樹結構,樹中每個節點代表一個代碼版本。
工作區- >暫存區- >版本庫
HEAD指針
安裝
-
安裝時:use git from git bash only,其他默認下一步
配置path:git的bin目錄 -
配置
git:用戶名和郵箱git config --global user.name "用戶名"git config --global user.email "郵箱"
查看用戶名和郵箱:C:\Users\用戶名\.gitconfig
-
搭建git服務器:統一托管網站(https://github.com/)
-
本地和遠程倉庫之間免秘鑰通信:配置ssh,先在本地配置,再發送給遠程
- 本地生成ssh:
ssh-keygen或者ssh-keygen -t rsa -C 郵箱一路回車 - 發送給遠程:github -settings -ssh -new ssh -title任意 key中輸入本地生成的ssh:將id_rsa.pub文件中的內容復制到遠程的key中
- 本地生成ssh:
-
測試連通性:ssh -T git@github.com
- 如果本地和遠程成功通信,則可以在
/.ssh目錄中發現一個known_hosts文件 - 如果失敗:可能是網站不穩定,多試幾次
- 如果本地和遠程成功通信,則可以在
-
.git目錄:git版本控制的目錄
git常用命令
-
git remote set-url --add origin xxx: 添加另外一個遠程庫 -
git config --global user.name xxx:設置全局用戶名,信息記錄在~/.gitconfig文件中 -
git config --global user.email xxx@xxx.com:設置全局郵箱地址,信息記錄在~/.gitconfig文件中 -
git init:將當前目錄配置成git倉庫,信息記錄在隱藏的.git文件夾中 -
git add XX:將XX文件添加到暫存區 -
git add .:將所有待加入暫存區的文件加入暫存區 -
git rm --cached XX:將文件從倉庫索引目錄中刪掉,git不去管理 -
git restore --stage XX: 將文件從緩存區拿出來 -
git commit -m "給自己看的備注信息":將暫存區的內容提交到當前分支 -
git status:查看倉庫狀態 -
git diff XX:查看XX文件相對於暫存區修改了哪些內容 -
git log:查看當前分支的所有版本 -
git log --pretty=oneline: 顯示在一行 -
git reflog:查看HEAD指針的移動歷史(包括被回滾的版本) -
git reset --hard HEAD^或git reset --hard HEAD~:將代碼庫回滾到上一個版本-
git reset --hard HEAD^^:往上回滾兩次,以此類推 -
git reset --hard HEAD~100:往上回滾100個版本 -
git reset --hard 版本號:回滾到某一特定版本
-
-
git restore XX:將文件XX從工作區的修改恢復到暫存區,如果暫存區沒有內容,就是頭節點指向的版本,可以恢復刪除文件 -
git checkout — XX或git restore XX:將XX文件尚未加入暫存區的修改全部撤銷 -
git remote add origin git@git.acwing.com:xxx/XXX.git:將本地倉庫關聯到遠程倉庫 -
git push -u (第一次需要-u以后不需要):將當前分支推送到遠程倉庫 -
git push -f:強制覆蓋提交 -
git push origin branch_name:將本地的某個分支推送到遠程倉庫 -
git remote rm origin:移除本地關聯 -
git clone git@git.acwing.com:xxx/XXX.git:將遠程倉庫XXX下載到當前目錄下 -
git checkout -b branch_name:創建並切換到branch_name這個分支 -
git branch:查看所有分支和當前所處分支 -
git checkout branch_name:切換到branch_name這個分支 -
git merge branch_name:將分支branch_name合並到當前分支上 -
git branch -d branch_name:刪除本地倉庫的branch_name分支 -
git branch branch_name:創建新分支 -
git push --set-upstream origin branch_name:設置本地的branch_name分支對應遠程倉庫的branch_name分支 -
git push -d origin branch_name:刪除遠程倉庫的branch_name分支 -
git pull:將遠程倉庫的當前分支與本地倉庫的當前分支合並 -
git pull origin branch_name:將遠程倉庫的branch_name分支與本地倉庫的當前分支合並 -
git branch --set-upstream-to=origin/branch_name1 branch_name2:將遠程的branch_name1分支與本地的branch_name2分支對應 -
git checkout -t origin/branch_name:將遠程的branch_name分支拉取到本地 -
git stash:將工作區和暫存區中尚未提交的修改存入棧中 -
git stash apply:將棧頂存儲的修改恢復到當前分支,但不刪除棧頂元素 -
git stash drop:刪除棧頂存儲的修改 -
git stash pop:將棧頂存儲的修改恢復到當前分支,同時刪除棧頂元素 -
git stash list:查看棧中所有元素
git刪除中間某個commit
- git log獲取commit信息
- git rebase -i (commit-id)
commit-id 為要刪除的commit的下一個commit號 - 執行命令后,進入編輯文件,將要刪除的commit之前的單詞改為drop

- 保存文件退出大功告成
- git log查看
盡量不要刪除節點,直接回滾就行了,因為回滾前的版本我們以后可以通過git reflog找到。
