一、命令行的演示
1.初始化一個代碼倉庫
- git init
2.如果使用git海蔽,必須給git配置用戶名和郵箱
給當前的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"
備注:如果既有當前配置又有全局配置钥组,會優(yōu)先使用當前配置输硝,如果沒有當前配置,會使用全局配置程梦;
3.初始化項目
- 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ū)的所有內容提交到本地版本庫橘荠,清空暫緩區(qū)
- git add . :將在工作區(qū)的所有不在暫緩區(qū)的所有的內容添加到暫緩區(qū);git 一般不使用星號作為通配符郎逃,一般使用點‘.’哥童;
注意:添加的文件或者修改的文件都要通過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,用的時候直接 git ci "描述“ 即可
- git config --global alias.st "status" :全局配置status的別名
6.刪除文件
- git rm README.md :刪除README.md文件
7.查看版本信息
- git log :版本號是有sha1算法生成的40位哈希值,查看正常的版本信息优训;
- git reflog :可以查看到所有版本回退的信息朵你;
8.版本回退
一種是:本地寫了東西,但是沒有提交(指的是沒有進行過commit命令)揣非,可以使用下面的命令直接回退抡医;也就是放棄所有沒有提交過的修改;
- git reset --hard HEAD :回到當前版本(HEAD)就是git的指針早敬;
一種是:寫過的東西忌傻,已經(jīng)提交了,使用如下命令:
- git reset --hard HEAD^:回到上一個版本
- git reset --hard HEAD^^:回到shag上上個版本
- git reset --hard HEAD~100:回到前100個版本
- git reset --hard 版本號(前5位:重復了就6位搞监,依次類推):回到指定的版本號(git reflog得到的版本號)水孩;
提示:在git中,版本號是一個由SHA1生成的哈希值
版本回退的操作順序:
1.git reset --hard HEAD^ :回到上一個版本(A角色)
2.git push -f :A角色強制上傳到共享版本庫
3.git reset --hard HEAD^ :回到上一個版本(B角色)
4.git pull :B角色再拉下代碼琐驴,才真正的回退
注意:如果多人開發(fā)荷愕,想要版本真正的回退,必須合作棍矛,必須多人同時回退
9.給log起別名
10.git的工作區(qū)-Working directory
倉庫文件夾里除.git目錄以外的內容;也就是.git的同級目錄及同級目錄的子目錄都是git的工作區(qū)抛杨,不包裹.git目錄;
11.git版本庫-Repository
就是.git目錄,用于存儲記錄版本信息夯辖;
- 暫緩區(qū)-stage
- 分支-master:git會自動創(chuàng)建的第一個分支就是master分支十嘿;
- HEAD指針:用于指向當前分支;
二 共享版本庫
- git服務器的搭建非常繁瑣(Linux)
- 可以把代碼托管到github/OSChain
- 一個文件夾
- 一個U盤
1.一個文件夾作為共享版本庫
- git init --bare :(看到配置里面的config文件屈嗤,bare=true潘拨;且里面無.git文件夾)
2.將共享版本庫的所有內容下載到本地的一個文件夾(稱為文件夾A)
- git clone 克隆共享文件夾的地址
3.在文件夾A中創(chuàng)建忽略文件----svn是先創(chuàng)建項目,再創(chuàng)建忽略文件饶号;git是在先創(chuàng)建忽略文件铁追,在初始化項目;
- touch .gitignore :在工作區(qū)中創(chuàng)建此文件
- git add .
- git commit -m "添加.gitignore文件"
4.創(chuàng)建項目
將創(chuàng)建的新項目的地址放在2中項目的文件夾A
三 現(xiàn)有項目 再添加版本控制
1.先創(chuàng)建一個代碼倉庫(比如在GitHub上創(chuàng)建)
2.git clone 上述創(chuàng)建的倉庫地址 :clone遠程倉庫到本地文件夾A中
3.直接把存在的項目拖到文件夾A中
4.git add .
5.git commit -m "描述"
- git push [遠程主機名] [本地分支名]:[遠程分支名]
四 錯誤修改
- 4.1 git pull 失敗 ,提示:fatal: refusing to merge unrelated histories
在進行git pull 時茫船,添加一個可選項: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或者合并分支的時候有時會遇到這個界面琅束∨てǎ可以不管(直接下面3,4步),如果要輸入解釋的話就需要:
1.按鍵盤字母 i 進入insert模式
2.修改最上面那行黃色合并信息,可以不修改
3.按鍵盤左上角"Esc"
4.輸入":wq",注意是冒號+wq,按回車鍵即可
五涩禀、關聯(lián)遠程分支
git remote add origin git@github.com:git_username/repository_name.git