Git使用方法
来源:互联网 发布:锥度螺纹g92怎么编程 编辑:程序博客网 时间:2024/05/17 01:36
1.创建版本库
什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
所以,创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:
$ mkdir learngit$ cd learngit$ pwd/Users/michael/learngit
第二步,通过git init命令把这个目录变成Git可以管理的仓库:
$ git initInitialized empty Git repository in /Users/michael/learngit/.git/
2.把文件添加到版本库
1.1 我们编写一个readme.txt文件
一定要放到learngit目录下(子目录也行),因为这是一个Git仓库.
Git is a version control system.Git is free software.
1.2 用命令git add告诉Git,把文件添加到仓库
$ git add readme.txt
1.3 用命令git commit告诉Git,把文件提交到仓库
$ git commit -m "wrote a readme file"[master (root-commit) cb926e7] wrote a readme file 1 file changed, 2 insertions(+) create mode 100644 readme.txt
-m后面输入的是本次提交的说明,
3. 查看工作区修改内容与当前版本的区别
3.1 我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容:
Git is a distributed version control system.Git is free software.
3.2 运行git status命令看看结果:
$ git status# On branch master# Changes not staged for commit:# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in working directory)## modified: readme.txt#no changes added to commit (use "git add" and/or "git commit -a")
git status命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改
3.3 用git diff这个命令具体区别
$ git diff readme.txt diff --git a/readme.txt b/readme.txtindex 46d49bf..9247db6 100644--- a/readme.txt+++ b/readme.txt@@ -1,2 +1,2 @@-Git is a version control system.+Git is a distributed version control system. Git is free software.
4. 版本回退
4.1 用git log命令查看历史记录
$ git logcommit 3628164fb26d48395383f8f31179f24e0882e1e0Author: Michael Liao <askxuefeng@gmail.com>Date: Tue Aug 20 15:11:49 2013 +0800 append GPLcommit ea34578d5496d7dd233c827ed32a8cd576c5ee85Author: Michael Liao <askxuefeng@gmail.com>Date: Tue Aug 20 14:53:12 2013 +0800 add distributedcommit cb926e7ea50ad11b8f9e909c05226233bf755030Author: Michael Liao <askxuefeng@gmail.com>Date: Mon Aug 19 17:51:55 2013 +0800 wrote a readme file
简化输出信息
$ git log --pretty=oneline3628164fb26d48395383f8f31179f24e0882e1e0 append GPLea34578d5496d7dd233c827ed32a8cd576c5ee85 add distributedcb926e7ea50ad11b8f9e909c05226233bf755030 wrote a readme file
4.2 使用git reset命令(HEAD表示当前版本 上一个版本就是HEAD^ 之前n个版本 HEAD~n)
回退到上个版本
$ git reset --hard HEAD^HEAD is now at ea34578 add distributed
通过 commit id 定位到某个版本
$ git reset --hard 3628164HEAD is now at 3628164 append GPL
通过git reflog用来记录你的每一次命令
$ git reflogea34578 HEAD@{0}: reset: moving to HEAD^3628164 HEAD@{1}: commit: append GPLea34578 HEAD@{2}: commit: add distributedcb926e7 HEAD@{3}: commit (initial): wrote a readme file
5. 工作区和暂存区
git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支
6.撤销修改
git checkout – file可以丢弃工作区的修改
$ git checkout -- readme.txt
命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
git checkout – file命令中的–很重要,没有–,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。
7.删除文件
7.1 用rm删除没用的文件
$ rm test.txt
7.2 用git status查看哪些文件被修改了
$ git status# On branch master# Changes not staged for commit:# (use "git add/rm <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in working directory)## deleted: test.txt#no changes added to commit (use "git add" and/or "git commit -a")
7.3 现在你有两个选择:
一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:
$ git rm test.txtrm 'test.txt'$ git commit -m "remove test.txt"[master d17efd8] remove test.txt 1 file changed, 1 deletion(-) delete mode 100644 test.txt
二时删错了,恢复删除:
$ git checkout -- test.txt
8. 远程仓库
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
在本地的learngit仓库下运行命令,添加远程库:
$ git remote add origin git@github.com:michaelliao/learngit.git
就可以把本地库的所有内容推送到远程库上:
$ git push -u origin masterCounting objects: 19, done.Delta compression using up to 4 threads.Compressing objects: 100% (19/19), done.Writing objects: 100% (19/19), 13.73 KiB, done.Total 23 (delta 6), reused 0 (delta 0)To git@github.com:michaelliao/learngit.git * [new branch] master -> masterBranch master set up to track remote branch master from origin.
把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
之后,只要本地作了提交,就可以通过命令:
$ git push origin master
用命令git clone从远程库克隆一个本地库:
$ git clone git@github.com:michaelliao/gitskills.gitCloning into 'gitskills'...remote: Counting objects: 3, done.remote: Total 3 (delta 0), reused 0 (delta 0)Receiving objects: 100% (3/3), done.
Git远程操作详解:http://www.ruanyifeng.com/blog/2014/06/git_remote.html
- Git使用方法
- git使用方法
- git使用方法
- git 使用方法
- Git使用方法
- Git使用方法
- git使用方法
- Git使用方法
- GIT 使用方法
- Git使用方法
- Git使用方法
- git使用方法
- git使用方法
- Git 使用方法
- Git使用方法
- git使用方法
- Git 使用方法
- Git 使用方法
- EasyDemo*Java面试常见题
- 土豆网(第三方网站)使用qq登录的步骤和原理------oAuth协议
- SpringMVC工作原理
- Spring之Ioc配置和使用
- maven工程
- Git使用方法
- 常用正则表达式
- 数据结构基础知识核心归纳(一)
- EasyDemo*android面试常见题
- 在fragment中使用ButterKnife, 加Okhttp等异步网络库时的空指针异常
- shadowsocks配合chrome插件SwitchyOmega
- 本人简书博客:http://www.jianshu.com/u/61b0362f5329
- 剑指Offer——跳台阶
- python2和python3 map函数的区别