Git和Github的使用教程

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目;

GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。

 

0、首先在电脑上安装好Git;

      关于区域描述,git管理的目录叫工作区(.git文件夹除外),add 文件后的叫暂存区,提交后是分支(版本库);

 

常用命令

1、配置用户名和邮箱,打开Git Bash

  1. git config --global user.name "username"
  2. git config --global user.email "email"  
  3. 使用git config --list查看已设用户配置

 

2、创建版本库

      先在电脑合适的地方创建一个空目录,

      打开Git Bash,输入cd '目录路径',

      输入 git init      (init表示管理这个目录);

 

3、添加文件

      创建一个文件放在git管理的目录下,

      git add 文件名     (该操作把文件添加到了暂存区),

      git commit -m "提交描述"     (该操作把文件添加到了分支),

      使用git log --pretty=oneline命令可以看到每次提交的记录(commit的ID和描述),

      git reflog命令记录你的每一次命令,里面有commit ID,方便回退;

 

4、文件比对:

            git diff 是工作区和暂存区的对比

            git diff -- cached 是暂存区和分支的对比

            git diff HEAD -- readme.txt 工作区和分支的对比

 

5、版本回退

     (1) 对于已提交的版本(commit): git reset --hard 要回退到的commit id  (版本号不用写全,写前几位就行了);

     (2)命令git checkout -- 文件名 意思就是,把该文件在工作区的修改全部撤销,这里有两种情况:

                   一种是该文件自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

                   一种是该文件已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

                   总之,就是让这个文件回到最近一次git commitgit add时的状态。

     (3)对于已add到暂存区但未提交的,可以撤销修改,放回工作区:git reset HEAD 文件名     (HEAD表示最新版本);

     (4)可以使用 git status查看当前暂存区的状态;

 

6、文件删除

     可以先手动在目录(工作区)删除文件,或者用 rm 文件名 删除文件;

     然后可以用git status看到哪些文件被删了,此时工作区和版本库就不一致了,此时可以:

        (1)用git rm 文件名   把版本库的也删掉;

        (2)是误删手动误删时,可以用git checkout -- 文件名   命令来恢复(git checkout是把版本库的版本替换工作区的版本,回退删除或修改);

  (3)git rm - m "文件夹"

 

7、分支管理

      (1)创建和合并分支

            创建一个分支,可以先在分支上修改内容,再选择合并到主分支或者撤销修改;

            可以在分支上修改文件,并add和commit后,再切换回主分支,分支合并,再删除不用了的分支;

               查看分支:git branch

               创建分支:git branch <name>

               切换分支:git checkout <name>

               创建+切换分支:git checkout -b <name>

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

               删除分支:git branch -d <name>

               强行删除:git branch -D <name>

         (2)分支历史

               若使用git merger 分支名合并分支,再删除分支后,会丢掉分支信息,可以使用git merge --no-ff -m "提交描述" 分支名 命令来合并,合并后有历史分支,可以使用git log 查询;

         (3)暂存当前分支

               使用 git stash 把当前分支‘储藏’起来,干完其它事情再回来接着用分支;

               通过git stash list 查看储藏的分支,用 git stash apply stash@{分支序号} 恢复;

 

8、分支合并冲突

        若两个分支所修改的文件合并后有所冲突,可以用 git status 看到冲突,手动去文件里解决修改冲突,再add,commit;

        用 git log --graph --pretty=oneline --abbrev-commit 命令可以看到分支合并图。

 

         使用远程仓库Github

1、配置

    (1)首先应去github官网注册一个账号;

    (2)添加SSH:登陆Github - 打开Account settings - 打开SSH Keys页面,根据需要填写title,在文本框粘贴来自C:\Users\管理员名\.ssh\id_rsa.pub文件的内容,点击Add Key;

 

2、添加远程库(本地已有git仓库,又想在GitHub上创建一个仓库,并把两个库关联起来)

     (1)本地仓库建好后,在GitHub上创建一个仓库(在头像旁边点添加新库-填入仓库名-点创建);

     (2)在本地Git Bash输入git remote add origin git@github.com:github用户名/新建仓库名.git

             origin就是远程库名(当然也可以写为其它),可以使用git remote -v显示远程库信息

     (3)把本地库指定分支全部推送到远程库对应分支:git push -u origin master     (master是主分支;-u 表示把指定远程master关联起来);

 

3、从远程仓库克隆(远程库已建好了,本地没有)

     (1) 使用git clone git@github.com:github用户名/远程仓库名.git  命令,克隆完后可以在当前目录下看到克隆下来的仓库

     (2) 使用 cd '仓库目录路径'  可以转换当前管理的仓库目录;

 

4、本地库分支和远程库分支

       (1)github上已经有master分支 和dev分支

       在本地:

            git checkout -b dev 新建并切换到本地dev分支

            git pull origin dev 本地分支与远程分支相关联

      (2)在本地新建分支并推送到远程

           git checkout -b test

           git push origin test   这样远程仓库中也就创建了一个test分支

 

5、远程库推送冲突

     (1)若两个本地库修改文件,但有所冲突,后推送的一个则会推送失败;

     (2)首先建立本地分支和远程分支的关联,使用git branch --set-upstream 本地分支名 origin/分支名

     (3)再抓取最新提交的文件  git pull;

     (4)解决冲突,并add、commit、push; 

 

         标签

发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。所以,tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。

1、打上标签:   git tag 标签名 commit id  (标签名就对应着本次提交;若commit id省略,默认最新一次提交)

2、 打上带说明的标签:   git tag -a 标签名 -m "标签说明" commit id

3、使用 git tag查看所有标签; 使用 git show 标签名 查看标签信息;

4、git tag -d 标签名   本地删除标签;

5、推送某个标签到远程,使用命令git push origin 标签名;一次性推送全部尚未推送到远程的本地标签 git push origin --tags;

6、删除远程库标签:  git push origin :refs/tags/标签名;

 

       特殊文件忽略提交

1、在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件:

       #windows 

        thrund.db

        *.class

 

2、使用 git add -f 文件名 强行加载;

3、也可下载他人已写好的.gitignore文件,我们修改一下就可以了,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore

 

           配置命令别名

1、例如使用  git config --global alias.st status  命令,以后想查看状态时,就可以 git st  (原git status);

        git config --global alias.命令别称 原命令  (其中--global是针对当前用户有用,如果不加,则对当前仓库有用)

2、删除别称

         每个仓库的Git配置文件都放在.git/config (该目录是隐藏的)文件中,别称就在[alias]后面,要删除,直接把对应的行删掉即可。

 

           删除github上的文件 不删本地的文件

1、需求描述:有些本地的配置文件或者自动生成文件不想提交到远程仓库

2、先把文件或文件夹加入到 .gitignore->

git rm --cached -r 文件名或文件夹名        //删除文件夹需要 -r
git commit -m "提交描述"
git push

 

 

以上内容参考:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

posted @ 2017-09-07 11:35  Drajun  阅读(300)  评论(0编辑  收藏  举报