Git:分佈式版本控制系統 (CVS及SVN都是集中式的版本控制系統)
參考地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/
1.windows下安裝
$ git config --global user.name "YourName"
$ git config --global user.email"[email protected]"
2.創建版本庫
a. 初始化倉庫:git init
b. 添加文件到倉庫:(1) git add file : 添加到暫存區 .
(2) git commit -m"文檔說明" :提交到分支
(3) 有多次修改:第一次修改 -> git add -> 第二次修改 -> git add git commit
3. 查看工作區狀態:git status
4. 查看修改內容: git diff HEAD -- file
5. 版本回退 :
a: 回到指定版本:git reset --hard commit_id (HEAD:當前版本 HEAD^:上個版本 HEAD~100)
b:查看提交歷史:git log
c: 查看命令歷史:git reflog
d: 查看文件內容:cat file
6.撤銷修改
a:丟棄工作區的修改 :git checkout -- file
b:把暫存區的修改回退到工作區:git reset HEAD file
c:提交到版本庫的修改:直接版本回退
7.刪除文件
a: 刪除:rm file
b:從版本管理器刪除:git rm file
c: 回覆文件到最新版本:git checkout -- file
8.添加遠程庫
a:關聯遠程庫:git remote add [email protected]:chenzhijie521143/gitdemo.git
b:第一次推送master分支的所有內容:git push -u origin master
c:推送最新修改: git push origin master
9.從遠程庫克隆
兩種地址
Git clone https://github.com/chenzhijie521143/musicplayer.git / [email protected]:chenzhijie521143/gitdemo.git
10.分支管理
查看分支:git branch
創建分支:git branch <name>
切換分支:git checkout <name>
創建+切換分支:git checkout -b <name>
合併某分支到當前分支:git merge <name> (快速合併)
普通合併: git merge --no-ff -m"chenzhijie" chenzhijie
刪除分支:git branch -d <name>
強行刪除沒有合併的分支:git branch -D <name>
查看分支歷史:git log --graph --pretty=oneline --abbrev-commit
bug分支:修復bug時,我們會通過創建新的bug分支進行修復,然後合併,最後刪除;
git stash(儲存當前工作現場),然後去修復bug,修復後,再git stash pop(git stash apply),回到工作現 場。
多人協作:
查看遠程庫信息,使用git remote -v;
本地新建的分支如果不推送到遠程,對其他人就是不可見的;
從本地推送分支,使用git push origin branch-name,如果推送失敗,先用git pull抓取遠程的新提交;
在本地創建和遠程分支對應的分支,使用git checkout -b branch-nameorigin/branch-name,本地和遠程分支的名稱最好一致;
建立本地分支和遠程分支的關聯,使用git branch --set-upstream branch-nameorigin/branch-name;
從遠程抓取分支,使用git pull,如果有衝突,要先處理衝突。
11.標籤:
創建標籤:
命令git tag <name>用於新建一個標籤,默認爲HEAD,也可以指定一個commit id;
git tag -a <tagname> -m"blablabla..."可以指定標籤信息;
git tag -s <tagname> -m"blablabla..."可以用PGP簽名標籤;
命令git tag可以查看所有標籤。
操作標籤:
命令git push origin <tagname>可以推送一個本地標籤;
命令git push origin --tags可以推送全部未推送過的本地標籤;
命令git tag -d <tagname>可以刪除一個本地標籤;
命令git push origin :refs/tags/<tagname>可以刪除一個遠程標籤