一、命令行的演示
1.初始化一個(gè)代碼倉庫
- git init
2.如果使用git,必須給git配置用戶名和郵箱
給當(dāng)前的git倉庫配置用戶名和郵箱
- git config user.name "android"
- git config user.email "wang_lu90125@163.com"
給git配置全局的用戶名和郵箱
- git config --global user.name "android"
- git config --global user.email "wang_lu90125@163.com"
備注:如果既有當(dāng)前配置又有全局配置,會優(yōu)先使用當(dāng)前配置,如果沒有當(dāng)前配置,會使用全局配置;
3.初始化項(xiàng)目
- touch README.md :創(chuàng)建README.md
- open README.md :打開README.md文件
- git add README.md :將README.md 添加到暫緩區(qū);也就是將工作區(qū)中修改過的文件或新添加的文件添加到暫緩區(qū)
- git commit -m "描述“ :將暫緩區(qū)的所有內(nèi)容提交到本地版本庫,清空暫緩區(qū)
- git add . :將在工作區(qū)的所有不在暫緩區(qū)的所有的內(nèi)容添加到暫緩區(qū);git 一般不使用星號作為通配符,一般使用點(diǎn)‘.’;
注意:添加的文件或者修改的文件都要通過add命令將該文件添加到暫緩區(qū);
4.查看文件狀態(tài)
- git status
備注:
1.紅色:該文件被添加或者被修改,但是沒有添加到git的暫緩區(qū)
2.綠色:該文件在在暫緩區(qū),但是沒有提交到本地版本庫
5.給命令行起別名
- git config alias.st "status" :給查看狀態(tài)的status的命令起別名
- git config alias.ci "commit -m " :給他commit -m 起別名為ci,用的時(shí)候直接 git ci "描述“ 即可
- git config --global alias.st "status" :全局配置status的別名
6.刪除文件
- git rm README.md :刪除README.md文件
7.查看版本信息
- git log :版本號是有sha1算法生成的40位哈希值,查看正常的版本信息;
- git reflog :可以查看到所有版本回退的信息;
8.版本回退
一種是:本地寫了東西,但是沒有提交(指的是沒有進(jìn)行過commit命令),可以使用下面的命令直接回退;也就是放棄所有沒有提交過的修改;
- git reset --hard HEAD :回到當(dāng)前版本(HEAD)就是git的指針;
一種是:寫過的東西,已經(jīng)提交了,使用如下命令:
- git reset --hard HEAD^:回到上一個(gè)版本
- git reset --hard HEAD^^:回到shag上上個(gè)版本
- git reset --hard HEAD~100:回到前100個(gè)版本
- git reset --hard 版本號(前5位:重復(fù)了就6位,依次類推):回到指定的版本號(git reflog得到的版本號);
提示:在git中,版本號是一個(gè)由SHA1生成的哈希值
版本回退的操作順序:
1.git reset --hard HEAD^ :回到上一個(gè)版本(A角色)
2.git push -f :A角色強(qiáng)制上傳到共享版本庫
3.git reset --hard HEAD^ :回到上一個(gè)版本(B角色)
4.git pull :B角色再拉下代碼,才真正的回退
注意:如果多人開發(fā),想要版本真正的回退,必須合作,必須多人同時(shí)回退
9.給log起別名
10.git的工作區(qū)-Working directory
倉庫文件夾里除.git目錄以外的內(nèi)容;也就是.git的同級目錄及同級目錄的子目錄都是git的工作區(qū),不包裹.git目錄;
11.git版本庫-Repository
就是.git目錄,用于存儲記錄版本信息;
- 暫緩區(qū)-stage
- 分支-master:git會自動創(chuàng)建的第一個(gè)分支就是master分支;
- HEAD指針:用于指向當(dāng)前分支;
二 共享版本庫
- git服務(wù)器的搭建非常繁瑣(Linux)
- 可以把代碼托管到github/OSChain
- 一個(gè)文件夾
- 一個(gè)U盤
1.一個(gè)文件夾作為共享版本庫
- git init --bare :(看到配置里面的config文件,bare=true;且里面無.git文件夾)
2.將共享版本庫的所有內(nèi)容下載到本地的一個(gè)文件夾(稱為文件夾A)
- git clone 克隆共享文件夾的地址
3.在文件夾A中創(chuàng)建忽略文件----svn是先創(chuàng)建項(xiàng)目,再創(chuàng)建忽略文件;git是在先創(chuàng)建忽略文件,在初始化項(xiàng)目;
- touch .gitignore :在工作區(qū)中創(chuàng)建此文件
- git add .
- git commit -m "添加.gitignore文件"
4.創(chuàng)建項(xiàng)目
將創(chuàng)建的新項(xiàng)目的地址放在2中項(xiàng)目的文件夾A
三 現(xiàn)有項(xiàng)目 再添加版本控制
1.先創(chuàng)建一個(gè)代碼倉庫(比如在GitHub上創(chuàng)建)
2.git clone 上述創(chuàng)建的倉庫地址 :clone遠(yuǎn)程倉庫到本地文件夾A中
3.直接把存在的項(xiàng)目拖到文件夾A中
4.git add .
5.git commit -m "描述"
- git push [遠(yuǎn)程主機(jī)名] [本地分支名]:[遠(yuǎn)程分支名]
四 錯(cuò)誤修改
- 4.1 git pull 失敗 ,提示:fatal: refusing to merge unrelated histories
在進(jìn)行g(shù)it pull 時(shí),添加一個(gè)可選項(xiàng):git pull origin master --allow-unrelated-histories
- 4.2 git中Please enter a commit message to explain why this merge is necessary,Please enter a commit message to explain why this merge is necessary.解決方案如下:
請輸入提交消息來解釋為什么這種合并是必要的

git 在pull或者合并分支的時(shí)候有時(shí)會遇到這個(gè)界面??梢圆还?直接下面3,4步),如果要輸入解釋的話就需要:
1.按鍵盤字母 i 進(jìn)入insert模式
2.修改最上面那行黃色合并信息,可以不修改
3.按鍵盤左上角"Esc"
4.輸入":wq",注意是冒號+wq,按回車鍵即可
五、關(guān)聯(lián)遠(yuǎn)程分支
git remote add origin git@github.com:git_username/repository_name.git