Git使用教程

 
1.在github上新建一个项目仓库
 
2安装客户端msysigit
     下载路径(官网): http://git-for-windows.github.io/
    安装方法(百度经验):http://jingyan.baidu.com/article/e52e36154233ef40c70c5153.html     
github 是服务端,要想在本身电脑上使用 git 还须要一个 git 客户端,这里选用 msysgit,这个只是提供了 git 的核心功能,并且是基于命令行的。若是想要图形界面的话只要在 msysgit 的基础上安装 TortoiseGit 便可
3.建立本地版本库文件夹
     装完 msysgit 后右键鼠标会多出一些选项来,而后咱们在本地新建个文件夹(好比叫 github),右键选择 Git Init Here,这样 github 文件夹内会多出来一个 .git 文件夹,(若是没有“Git Init Here”能够Git Bash,进入命令行后运行“git init”,一样能够生成.git文件)这就表示本地 git 建立成功。右键 Git Bash 进入 git 命令行就能够把刚刚新建的仓库克隆到本地,固然咱们还须要配置下 ssh key。
 
4.配置git
首先,建立ssh key
ssh-keygen -t rsa -C "chinawjb@foxmail.com"
 
后面的 your_email@youremail.com 改成本身的邮箱,以后会要求确认路径和输入密码,这里使用默认的一路回车就行。成功的话会在 "C:\Users\Administrator\.ssh"(我本身的)下生成 .ssh 文件夹,打开 id_rsa.pub,复制里面的 key,回到 github,进入 settings,左边选择 SSH keys,Add SSH Key,title 随便填,粘贴 key。为了验证是否成功,在 git bash 下输入:
 
ssh -T git@github.com
 
若是是第一次的会提示是否 continue,输入 yes 就会看到:You've successfully authenticated, but GitHub does not provide shell access,这就表示已成功连上 github。
 
而后要设置 username 和 email,由于 github 每次 commit 都会记录他们。
1 git config --global user.name "ChinaWJB"
2 git config --global user.email chinawjb@foxmail.com
五、上传和克隆
而后能够两种操做
          (1) 克隆到本地(好比克隆 css 的项目):
git clone git@github.com:zhuyujia/css.git
 
须要注意的是:github 提供了 3 种 url 路径(HTTPS,SSH,Subversion),通常若是帐号处于登陆状态,那么咱们能够用 SSH,就像上面的代码,若是没有登陆的话,只能用 HTTPS 的 url 了
 
          (2)上传文件
                    选择要添加进仓库的文件:            
 git add .
【 通常若是你想分享这个文件夹里的全部代码,就在 add后面加“.”,上面的例子就是这样,若是传指定的,只须要把“.”改成文件名便可】
                  
                    上面只是选择了要加入仓库的文件,下面添加进仓库
 git commit -m 'Test'后面的说明必须加,不然会出现高亮代码,没法继续操做
-m后面跟一个参数,表示说明,将代码提交到GitHub后,将会在代码文件信息上显示这个说明】
               正式提交到github上
1 git remote add origin git@github.com:XXX/XXX.git
2 git push (-u) origin master
【若是远程库是空的,加“-u”, Git不但会把本地的 master分支内容推送的远程新的 master分支,还会把本地的 master分支和远程的 master分支关联起来,在之后的推送或者拉取时就能够简化命令。若是上传若失败,则 git pull (-u) origin master 将其拉回来,从新再提交】
以后若是本地提交了,直接使用“git push origin master“就能够提交到对应的远程库了
 
说明:
     
  1. cd test  
  2. touch README  
  3. git commit -m 'first commit'  
  4. @github.com:lzjun/test.git  
  5.  大概意思就是在本地建立test目录,初始化,建立一个README文件,固然这个文件时空的,你能够往里面填内容。接下来就是add就是把README文件归入到git的管理范围内,

     

     

    commit:至关于把你项目的代码,文件及全部的东西作一个快照,(比如咱们拍照),这全部的文件定格在这个时刻,以后的每一次commit也只把那些发生了改变的文件作快照。此时还并无把代码提交到GitHub上去css

     

    remote:和GitHub创建远程链接,注意这里的"lzjun"就是个人帐户名,这根据本身的名称作相应的改变。这一步只在你第一次提交文件的时候出现,而且要输入以前的pressphrases.html

     

push:就很好理解了,把文件推送到GitHub站点去。
 
 
六、帮助
     git help               在命令窗口显示经常使用的命令
     git help git          在浏览器打开git的api帮助文档
 
本地仓库或本地工做区
七、在本地提交,提交到本地版本库,更新后的提交也是用这两条命令
     git add  filename.txt(git rm filename同理)
     git commit -m "描述"
      删除文件rm同add
 
八、git status                         查看当前文件是否被修改过
     git diff  filename.txt          查看当前文件哪些地方被修改过
     git log                               查看历史提交版本,版本号
     git log --pretty=oneline     会有条理的输出历史提交版本
     git reset --hard 【加上版本号的前几位就能够,会自动填充】该命令会返回到指定版本号的版本
     git reset --hard HEAD^     该命令是返回上一个版本
     git reset --hard HEAD        该命令只是显示HEAD指针当前的分支的位置
     git reflog                            记录每一条命令,会显示执行每一条命令时当前的版本号
     git checkout -- filename     在工做区修改后 尚未add(或rm)到缓存区,能够丢弃工做区的修改
     git reset HEAD filename      修改后已经提交到了暂存区,能够经过该命令返回到add以前的状态,
                                               能够在用git checkout -- filename 丢弃工做区的修改
小结:
     场景1:当你改乱了工做区某个文件的内容,想直接丢弃工做区的修改时,用命令 git checkout -- file
 
     场景2:当你不但改乱了工做区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令 git reset HEAD file,就回到了场景1,第二步按场景1操做。
 
     场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考 版本回退一节,不过前提是没有推送到远程库
 
9.工做区:有.git 的文件夹
   版本库:.git 文件夹
         暂存区:.git 中的stage区
         master分支
 
  
 
远程仓库:
小结:   
要关联一个远程库,使用命令 git remote add origin git@server-name:path/repo-name.git
关联后,使用命令 git push -u origin master第一次推送master分支的全部内容;
此后,每次本地提交后,只要有必要,就可使用命令 git push origin master推送最新修改;
 
 
分支:
本地新建分支+合并分支+删除分支

查看分支:git branchgit

建立分支:git branch <name>github

切换分支:git checkout <name>shell

建立+切换分支: git checkout -b <name>( " -b"参数表示建立并切换 )

合并某分支到当前分支:git merge <name>windows

删除分支: git branch -d <name>
 
一、查看分支:git branch
*master
 
 
 
二、新建+切换分支:git checkout -b dev
     查看分支: git branch
          *dev
            master
三、在新分支上commit代码到本地仓库:
四、切换回master分支:git checkout master
                 +
五、合并分支:git merge dev
六、删除分支dev: git branch -d dev
 
 
 
分支冲突
     在两个分支分别更改了代码,在master和dev都add和commit以后,合并时出现冲突,此时查看文件会出现:   
                         <<<<<<< HEADCreating a new branch is quick & simple.
                          =======Creating a new branch is quick AND simple.
             >>>>>>> feature1    
      注意:此时,两个分支处于等待修改后自动合并的状态, 只需把文件 手动修改后,再add和commit以后两个分支就从新合并到一块儿了。
 
     合并后经过命令:
git log --graph --pretty=oneline --abbrev-commit
或:git log --graph
 
     能够查看到以下输出:
*   3aeb259 delete confilict in master and dev
| \
| * d1f9b49 new a branch dev
* | b6d227b in master new
|/
* 94e8f6b change testliaoxuefeng
* f56ae93 add readme
* f32d4bf wrire a test file
* 736e83c wrire a testliaoxuefeng file
 
Bug分支
    
     修复bug时,咱们会经过建立新的bug分支进行修复,而后合并,最后删除;
     当手头工做没有完成时,先把工做现场 git stash一下,而后去修复bug,修复后,再 git stash pop,回到工做现场。
     恢复现场:两种方法
          一是:用 git stash apply恢复,可是恢复后,stash内容并不删除,你须要用 git stash drop来删除;
          另外一种是:用 git stash pop,恢复的同时把stash内容也删了:
     能够用 git stash list 来查看刚才的工做现场去哪了。
 
Feature分支
      添加一个新功能时,你确定不但愿由于一些实验性质的代码,把主分支搞乱了,因此,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。
      可是在合并的时候,不须要这个新功能了,则,须要 强制删除该分支 git branch -D <name>,普通删除删除不了,由于没有合并。
     小结:
          开发一个新feature,最好新建一个分支;
          若是要丢弃一个没有被合并过的分支,能够经过 git branch -D <name>强行删除
 
多人协做

多人协做的工做模式一般是这样:api

  1. 首先,能够试图用git push origin branch-name推送本身的修改;浏览器

  2. 若是推送失败,则由于远程分支比你的本地更新,须要先用git pull试图合并;缓存

  3. 若是合并有冲突,则解决冲突,并在本地提交;bash

  4. 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

若是git pull提示“no tracking information”,则说明本地分支和远程分支的连接关系没有建立,用命令git branch --set-upstream branch-name origin/branch-name

这就是多人协做的工做模式,一旦熟悉了,就很是简单。

小结

  • 查看远程库信息,使用git remote -v

  • 本地新建的分支若是不推送到远程,对其余人就是不可见的;

  • 从本地推送分支,使用git push origin branch-name,若是推送失败,先用git pull抓取远程的新提交;

  • 在本地建立和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

  • 创建本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name

  • 从远程抓取分支,使用 git pull,若是有冲突,要先处理冲突。

 
标签管理
     建立标签:
     
  • 命令git tag <name>用于新建一个标签,默认为HEAD,也能够指定一个commit id;
 
  • git tag -a <tagname> -m "blablabla..."能够指定标签信息;
 
  • git tag -s <tagname> -m "blablabla..."能够用PGP签名标签;
  • 命令git tag能够查看全部标签
 
     使用标签:
  • 命令git push origin <tagname>能够推送一个本地标签;

  • 命令git push origin --tags能够推送所有未推送过的本地标签;

  • 命令git tag -d <tagname>能够删除一个本地标签;

  • 命令 git push origin :refs/tags/<tagname>能够删除一个远程标签。

使用GitHub之fork
  • 在GitHub上,能够任意Fork开源仓库;

  • 本身拥有Fork后的仓库的读写权限;

  • 能够推送pull request给官方仓库来贡献代码。

 
 
 ————————参考廖雪峰老师官网
相关文章
相关标签/搜索