git 使用
1. 输入git命令查看是否安装git
2. mac 安装 git
安装Xcode, Xcode集成了git, 不过默认没有安装。选择菜单Xcode->Preferences 在弹出窗口中找到Downloads, 选择Command Line Tools 点击install就完成安装了.
3. 创建版本库repository
选一个空地方,创建一个空目录,通过git init把这个目录变成Git可以管理的仓库
mkdir git_allen
cd git_allen
git init
完成后提示如下
Initialized empty Git repository in /Users/sun/git_allen/.git
4. 把文件添加到版本库
注意:所有的版本控制系统都只能跟踪文本文件的改动.
创建一个文件readme.txt
git add readme.txt //第一步:add
git commit -m “创建一个readme.txt” //第二步commit
-m 后面输入的是本次提交的说明
5. git status命令查看结果, 随时掌握工作区的状态
6. 查看具体修改了那些内容 git diff
这样, 你可以不断修改文件、提交版本. 每当感觉文件修改到一定程度的时候, 就可以保存以快照, 这个快照在Git中称作commit. 可以从最近的一个commit恢复工作进度
7. git log 显示提交各个版本的历史纪录
可以添加一个参数 --pretty=online
显示出的一长串数字是commit id(版本号)
8. 恢复到之前的版本
HEAD 表示当前版本 HEAD^上一个版本 HEAD^^上上一个版本, HEAD~100
eg: 恢复到上一个版本 git reset —hard HEAD^
这时候你又想撤销这个操作,就要找到之前HEAD的commit id
用git reset —hard f46185就可以了 //f46185是之前版本的commit id 前几位
git版本回退速度很快, 因为git内部有个当前版本的HEAD指针,当你版本回退的时候, git 只是改变了HEAD指针的指向, 然后把工作去的文件改动了下
当回退到某个版本,再想撤销这个回退的时候, 如果不知道回退之前版本的commit id怎么办?
git reflog记录你的每一命令!
9. HEAD指向当前版本, git reset —-hard commit_id在各个版本之间切换
用git log查看提交历史, 以便确定回退到那个版本
要返回未来, 用git reflog查看历史命令
10. working dierctory工作区 就是git_allen 文件夹
repository版本库 就是工作区中的.git版本库
git版本库中存了很多东西,最重要的就是stage(暂存区), 还有git自动为我们创建的master分支, 以及指向master的一个指针HEAD
可以理解为:需要提交的修改通通放在暂存区, 然后一次性提交暂存区所有修改.
新创建一个文件,而不add它, 用git status查看它是untracked状态. 所以git add其实就是把所有的修改放到stage暂存区, 执行git commit是将stage中所有修改提交到分支
一旦提交后, 如果没有对工作去做任何修改, 工作区是干净的 git status : nothing to commit (working directory clean)
11. 管理修改
git 跟踪并管理的是修改而非文件(这是比svn等优秀的地方之一)
eg: 第一次修改-> git add -> 第二次修改-> git commit
用git status 查看会发现第二次修改没被提交, 因为第二次修改没有add到暂存区. 如果想要提交第二次修改可以这样 第一次修改-> git add -> 第二次修改-> git add -> git commit
12. 撤销修改
# use git checkout -- <file>. . to discard changes in working directory
命令 git checkout —-readme.txt 意思是把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有add到暂存区,现在撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经add到暂存区, 又做了修改, 现在撤销就该就回到添加到暂存区后的状态
总之:就是让这个文件回到最近一次git commit或git add时的状态
13. 如果你对文件做了修改并且add到暂存区, 在commit之前. 可以用git reset HEAD file把暂存区的修改撤销unstage, 重新放回working directory工作区
git reset既可以回退版本, 也可以把暂存区的修改回退到工作区. 当我们用HEAD时, 表示最新版本! 然后git checkout --readme.txt丢弃工作区的修改
14.
场景1:想要直接丢弃工作区的修改 git checkout --file
场景2:修改了某个文件, add到了stage, 想要丢弃修改: 分两步:第一步git reset HEAD file回到工作区;第二部git checkout --file
场景3:已经提交了不合适的版本到版本库, 想要撤销, 使用git reset HEAD --commit id回退版本
15. 删除文件
如果直接在working directory删除了一个文件 rm readme.txt. 这时候工作区和版本库就不一致了 git status 会告诉你那些文件被删除了.
两种情况:第一种:确实想要删除 git rm readme.txt 然后git commit
第二种: 删错了 git checkout --readme.txt
命令git rm 用于删除一个文件, 如果一个文件已经被提交到了版本库, 那么你永远不用担心误删, 但是小心:你只能恢复文件到最新版本, 你会丢失最近一次提交后你修改的内容
16. 远程仓库
就是有一个24小时开机的服务器github. 每个人可以将自己的提交推送到服务器仓库中, 也可以从服务器中拉取自己或别人的提交.这些提交都是公开的,所以公司可以搭建自己的服务器.
本地git仓库和github仓库之间的传输是通过SSH加密.
想要用多个电脑提交到github, 就要把每台电脑的key添加到github
17. 添加远程库
现在的状态是:已经在本地创建了一个git仓库, 又想在Github创建一个git仓库, 并且让这两个仓库进行远程同步, 这样, github上的仓库既可以作为备份, 又可以让其他人通过该仓库来协作
a. 首先进入Github网站找到”create a new repo” 按钮,填入repository name git_allen
b. 根据提示
//create a new repository on the command line
echo "# first_git" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:mangxue/first_git.git
git push -u origin master
//push an existing repository form the command line
git remote add origin git@github.com:mangxue/first_git.git
git push -u origin master
//import code from another repository
You can initialize this repository with code from a Subversion, Mercurial, or TFS project.
把本地库推送到远程, 用git push 命令, 把本地库推送到远程实际上是把当前分支master推送到远程
由于远程库是空的,我们第一次推送master分支时,加上了-u参数, git不但会把本地的master分支内容推送到远程的新的master分支, 还会把本地的master分支和远程的master分支关联起来, 在以后的推送或者拉取时就可以简化命令
推送成功后, 就可以在Github页面上看到远程库和本地一模一样
c. 从现在起, 只要本地做了提交, 就可以通过命令 git push origin master把本地master分支的最新修改推送至Github!
18. SSH警告
19. 关联一个远程库 git remote add origin git@server-name:path/repo-name.git
关联后 git push -u origin master 第一次推送master分支的所有内容
此后, 每次本地提交,只要有必要, 就可以用命令git push origin master 推送最新修改
20. 从远程库克隆 git clone
新建一个仓库repository 选中Initialize this repository with a README, 这样Github会自动为我们创建一个README.md文件.
开始克隆
git clone git@github.com:mangxue/bobo.git
21. 要克隆一个仓库,必须知道仓库的地址,用 git clone 克隆. git支持多种协议, 包括https, 但通过ssh支持的原声git协议速度最快
1. 输入git命令查看是否安装git
2. mac 安装 git
安装Xcode, Xcode集成了git, 不过默认没有安装。选择菜单Xcode->Preferences 在弹出窗口中找到Downloads, 选择Command Line Tools 点击install就完成安装了.
3. 创建版本库repository
选一个空地方,创建一个空目录,通过git init把这个目录变成Git可以管理的仓库
mkdir git_allen
cd git_allen
git init
完成后提示如下
Initialized empty Git repository in /Users/sun/git_allen/.git
4. 把文件添加到版本库
注意:所有的版本控制系统都只能跟踪文本文件的改动.
创建一个文件readme.txt
git add readme.txt //第一步:add
git commit -m “创建一个readme.txt” //第二步commit
-m 后面输入的是本次提交的说明
5. git status命令查看结果, 随时掌握工作区的状态
6. 查看具体修改了那些内容 git diff
这样, 你可以不断修改文件、提交版本. 每当感觉文件修改到一定程度的时候, 就可以保存以快照, 这个快照在Git中称作commit. 可以从最近的一个commit恢复工作进度
7. git log 显示提交各个版本的历史纪录
可以添加一个参数 --pretty=online
显示出的一长串数字是commit id(版本号)
8. 恢复到之前的版本
HEAD 表示当前版本 HEAD^上一个版本 HEAD^^上上一个版本, HEAD~100
eg: 恢复到上一个版本 git reset —hard HEAD^
这时候你又想撤销这个操作,就要找到之前HEAD的commit id
用git reset —hard f46185就可以了 //f46185是之前版本的commit id 前几位
git版本回退速度很快, 因为git内部有个当前版本的HEAD指针,当你版本回退的时候, git 只是改变了HEAD指针的指向, 然后把工作去的文件改动了下
当回退到某个版本,再想撤销这个回退的时候, 如果不知道回退之前版本的commit id怎么办?
git reflog记录你的每一命令!
9. HEAD指向当前版本, git reset —-hard commit_id在各个版本之间切换
用git log查看提交历史, 以便确定回退到那个版本
要返回未来, 用git reflog查看历史命令
10. working dierctory工作区 就是git_allen 文件夹
repository版本库 就是工作区中的.git版本库
git版本库中存了很多东西,最重要的就是stage(暂存区), 还有git自动为我们创建的master分支, 以及指向master的一个指针HEAD
可以理解为:需要提交的修改通通放在暂存区, 然后一次性提交暂存区所有修改.
新创建一个文件,而不add它, 用git status查看它是untracked状态. 所以git add其实就是把所有的修改放到stage暂存区, 执行git commit是将stage中所有修改提交到分支
一旦提交后, 如果没有对工作去做任何修改, 工作区是干净的 git status : nothing to commit (working directory clean)
11. 管理修改
git 跟踪并管理的是修改而非文件(这是比svn等优秀的地方之一)
eg: 第一次修改-> git add -> 第二次修改-> git commit
用git status 查看会发现第二次修改没被提交, 因为第二次修改没有add到暂存区. 如果想要提交第二次修改可以这样 第一次修改-> git add -> 第二次修改-> git add -> git commit
12. 撤销修改
# use git checkout -- <file>. . to discard changes in working directory
命令 git checkout —-readme.txt 意思是把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有add到暂存区,现在撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经add到暂存区, 又做了修改, 现在撤销就该就回到添加到暂存区后的状态
总之:就是让这个文件回到最近一次git commit或git add时的状态
13. 如果你对文件做了修改并且add到暂存区, 在commit之前. 可以用git reset HEAD file把暂存区的修改撤销unstage, 重新放回working directory工作区
git reset既可以回退版本, 也可以把暂存区的修改回退到工作区. 当我们用HEAD时, 表示最新版本! 然后git checkout --readme.txt丢弃工作区的修改
14.
场景1:想要直接丢弃工作区的修改 git checkout --file
场景2:修改了某个文件, add到了stage, 想要丢弃修改: 分两步:第一步git reset HEAD file回到工作区;第二部git checkout --file
场景3:已经提交了不合适的版本到版本库, 想要撤销, 使用git reset HEAD --commit id回退版本
15. 删除文件
如果直接在working directory删除了一个文件 rm readme.txt. 这时候工作区和版本库就不一致了 git status 会告诉你那些文件被删除了.
两种情况:第一种:确实想要删除 git rm readme.txt 然后git commit
第二种: 删错了 git checkout --readme.txt
命令git rm 用于删除一个文件, 如果一个文件已经被提交到了版本库, 那么你永远不用担心误删, 但是小心:你只能恢复文件到最新版本, 你会丢失最近一次提交后你修改的内容
16. 远程仓库
就是有一个24小时开机的服务器github. 每个人可以将自己的提交推送到服务器仓库中, 也可以从服务器中拉取自己或别人的提交.这些提交都是公开的,所以公司可以搭建自己的服务器.
本地git仓库和github仓库之间的传输是通过SSH加密.
想要用多个电脑提交到github, 就要把每台电脑的key添加到github
17. 添加远程库
现在的状态是:已经在本地创建了一个git仓库, 又想在Github创建一个git仓库, 并且让这两个仓库进行远程同步, 这样, github上的仓库既可以作为备份, 又可以让其他人通过该仓库来协作
a. 首先进入Github网站找到”create a new repo” 按钮,填入repository name git_allen
b. 根据提示
//create a new repository on the command line
echo "# first_git" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:mangxue/first_git.git
git push -u origin master
//push an existing repository form the command line
git remote add origin git@github.com:mangxue/first_git.git
git push -u origin master
//import code from another repository
You can initialize this repository with code from a Subversion, Mercurial, or TFS project.
把本地库推送到远程, 用git push 命令, 把本地库推送到远程实际上是把当前分支master推送到远程
由于远程库是空的,我们第一次推送master分支时,加上了-u参数, git不但会把本地的master分支内容推送到远程的新的master分支, 还会把本地的master分支和远程的master分支关联起来, 在以后的推送或者拉取时就可以简化命令
推送成功后, 就可以在Github页面上看到远程库和本地一模一样
c. 从现在起, 只要本地做了提交, 就可以通过命令 git push origin master把本地master分支的最新修改推送至Github!
18. SSH警告
19. 关联一个远程库 git remote add origin git@server-name:path/repo-name.git
关联后 git push -u origin master 第一次推送master分支的所有内容
此后, 每次本地提交,只要有必要, 就可以用命令git push origin master 推送最新修改
20. 从远程库克隆 git clone
新建一个仓库repository 选中Initialize this repository with a README, 这样Github会自动为我们创建一个README.md文件.
开始克隆
git clone git@github.com:mangxue/bobo.git
21. 要克隆一个仓库,必须知道仓库的地址,用 git clone 克隆. git支持多种协议, 包括https, 但通过ssh支持的原声git协议速度最快