学习git,github

学习廖神GIT教程总结:
一、操作前工作
1、安装GIT
ubuntu上,可用git命令试一下。

sudo apt-get install git

二、操作版本库
1、版本库(repository)
可以理解为仓库,实质上是一个目录,被git管理起来。
创建命令:git init

$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),当前目录下多了一个.git的目录,这是用来跟踪管理版本库的。
如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。

2、添加文件
在learngit文件夹下加入文件,比如readme.txt
然后用git add命令添加进仓库缓存

$ git add readme.txt

git add -A把目录中所有的文件信息添加到索引库的暂存区里面去

3、提交到版本库

$ git commit -m "wrote a readme file"
[master (root-commit) eaadf4e] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt

尽可能的写注释

4、总结:

  • 初始化一个Git仓库,使用git init命令。
  • 添加文件到Git仓库,分两步: 使用命令git add ,可反复多次使用,添加多个文件;
  • 使用命令git commit -m ,完成。

三、远程版本库Github.com
1、注册 github.com
2、创建SSH KEY

在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

$ ssh-keygen -t rsa -C "[email protected]"

你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH
Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

3、登录Github打开Account settings,SSH Keys
点击Add SSH Key,title可任意,Key文本框黏贴id_rsa.pub文件内容
转自廖神
4、Github上创建仓库
初始化添加README不勾选
,把本地仓库与之关联,内容推送至Github仓库。

$ git remote add origin [email protected]:michaelliao/learngit.git

5、本地仓库内容推送至Github远程仓库

$ git push -u origin master
Counting objects: 20, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (20/20), 1.64 KiB | 560.00 KiB/s, done.
Total 20 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), done.
To github.com:michaelliao/learngit.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

成功之后在Github页面中可见远程库内容与本地一模一样。

6、提交
从现在起,本地提交完通过命令:

$ git push origin master

都可以推送至Github

7、远程库克隆

上次我们讲了先有本地库,后有远程库的时候,如何关联远程库。
现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆。
首先,登陆GitHub,创建一个新的仓库,名字叫gitskills:

勾选README。
克隆命令:

$ git clone [email protected]:michaelliao/gitskills.git
Cloning into 'gitskills'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3
Receiving objects: 100% (3/3), done.

四、更新本地版本库
git 使用之 更新本地仓库 git
当你要提交的远程git仓库及分支被别人更新了时候,要想提交自己的更新,先要同步别人的更新到本地:

Git中从远程的分支获取最新的版本到本地有这样2个命令:

  1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge

    git fetch origin master
    git log -p master…origin/master
    git merge origin/master

含义:
首先从远程的origin的master主分支下载最新的版本到origin/master分支上
然后比较本地的master分支和origin/master分支的差别
最后进行合并

  1. git pull:相当于是从远程获取最新版本并merge到本地
    git pull origin master

上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并

参考:http://blog.csdn.net/hudashi/article/details/7664457

五、Git操作命令
1、查看当前仓库状态:

$ git status

2、查看对比上一次修改内容:

$ git diff readme.txt 

3、比如readme.txt有三个版本,查看:

$ git log
$ git log --pretty=oneline
$ git log --pretty=oneline
1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master) append GPL
e475afc93c209a690c39c13a46716e8fa000c366 add distributed
eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 wrote a readme file

一大串字符数字为版本号(commit id)
4、退回上一个版本

$ git reset --hard HEAD^

5、从新回到第三个版本

$ git reset --hard 1094a
HEAD is now at 83b0afe append GPL

1094a是第三版ID。只需要写一部分即可。

6、如果不知道版本号,可用命令查看:

$ git reflog

6、修改
(1)丢弃工作区的修改:

$ 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 checkout -- readme.txt(还原操作,如果误删了也可以还原)

(2)丢弃暂缓区的修改

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   readme.txt
$ git reset HEAD readme.txt
Unstaged changes after reset:
M    readme.txt

此时已经从暂缓区回到工作区,然后命令:

$ git checkout -- readme.txt

此时工作区也还原了。
总结:

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD
,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

猜你喜欢

转载自blog.csdn.net/leon1827/article/details/84661917
今日推荐