CentOs7下GitHub入门复习

来源:互联网 发布:苏州程序员招聘 编辑:程序博客网 时间:2024/05/17 12:19

1。在CentOs7下面 配置GitHub

      1.1 确认CentOs7可以联网

             yum -y install git

      1.2  在需要进行版本控制的目录下, 

              mkdir  .git   (如果没有做1.2,直接做1.3,会显示error: could not lock config file .git/config: No such file or dir)

      1.3  然后   git config user.name "参数1"      参数1是github账号名

                        git config user.email "参数2"       参数2是申请github用的邮箱

      1.4  SSH Key 配置(用来识别是否有权限访问)

             1): ssh-keygen -t rsa -C "参数3"                参数3是申请github用的邮箱        复制出现那一段文字

             2):登录GitHub ,Account  settings --> SSH Keys -->Add SSH Key .  Title随意,Key 粘贴

2. 创建版本库

    2.1 创建一个空目录,

           mkdir  testgit  

           cd testgit

   2.2  将testgit 转为git版本库

           git init

   2.3 文件添加到版本库

           git add test.txt                添加到暂存区

           git commit  -m “message”      提交到版本库      message 表示“需要填的版本修改信息,便于版本控制”

3. 版本控制http://write.blog.csdn.net/postedit/51912848

    3.1 两个需要注意的常用命令

          3.1.1 git status

                    查看当前状态,可以看到当前文件的修改情况

          3.1.2 git diff

                    查看之前修改的信息,比较详细

    3.2 版本转换

          3.2.1 多次修改一个文件后,可以使用 git log 命令进行版本查看           git relog 可以查看历史命令(用来回到未来)

                    git log --pretty=oneline  信息简单

                   回退到上一个版本

                   git reset --hard HEAD^       (HEAD 表示当前版本,上上个版本为HEAD^^,之前的版本为HEAD~n,)

                   切换到最新版本

                   git reset --hard ******              ******表示git log 查询到的id,此id是一长串不规则的数

4. 修改文件

    test.txt 先add,然后 commit 之后。

    4.1 二次修改 

          第一次修改->git add ->第二次修改->git commit. 

          这样只提交了第一次修改的,第二次修改的并没有提交。

          git  diff HEAD -- test.txt 可以查看工作区和版本库中最新版的区别

          第二次修改要提交  就进行 git add   ,  git  commit

   4.2 撤销工作区修改

         git checkout -- test.txt 可以丢弃工作区的修改

   4.3 撤销暂存区修改

          git reset HEAD file  即把仓库中的文件还原到工作区,并且去掉暂存区的修改         HEAD表示仓库中的最新版

   ##  有时需要 4.3和4.2都进行

   4.4 删除文件

         工作区中  rm test.txt

        4.4.1  需要把版本库中的删除

                   git rm test.txt  , 并且 git commit -m “remove test.txt”

       4.4.2  删错了,将版本库中的文件克隆到工作区

                  git checkout -- test.txt   (就算是修改, 也可以用来还原)

5. 创建远程库

    5.1 登录GitHub ,右上角 Create a new repository ,填上库名,确认  ,然后按步骤进行即可。

    5.2 远程库是空的,与本地库关联

          git remote add orgin git@github.com:XXXXXX/learngit.git           XXXXXXXXXX指的是你的用户名

    5.3 将本地库推送到远程库

          git push -u origin master            -u    不仅推送内容, 还推送分支

    5.4 本地提交后,即可用命令

           git push origin master  将本地master 分之推送到远程库GitHub

    5.5 SSH警告, 在第一次使用  clone 和 push 时,使用yes

6. 克隆库

    6.1 远程库初始化

          GitHub 网站 create a new  repository   , 勾选initizlize this repository with a README。

    6.2 在本地克隆

          git clone git@github.com:chaorwin/714repo.git          地址使用的是  SSH 协议  , http  使用http 协议

7.  分支

    7.1 创建与合并分支

           7.1.1 创建分支                       

                     git branch dev

           7.1.2 查看分支

                     查看分支 git branch 会列出所有分支,在当前分支标  *

           7.1.3 切换

                     git checkout dev

           7.1.4 创建并且切换

                     git checkout -b dev    (-b表示创建并且切换)

           7.1.5 将分支dev成果合并到master 主支 ,  git merge 用于合并指定分支到当前分支。 合并完成后,就可以删除dev 分支

                     git merge dev

           7.1.6 删除分支

                     git branch -d dev

    7.2 冲突处理

          7.2.1  产生冲突

                     git checkout -b  branch1

                     修改test.txt 文件      :  例如,加上一句话,  “this is a branch1”

                     在 branch1 上提交, git add text.txt    git commit -m "add branch1"

                     切换到 master 主枝,  git checkout  -master

                     此时,Git 会提示: 当前master 分支比远程的master分支要超前一个提交

                     在master 分支上把 test.txt   加上一句话 ,  “this is master” ,   然后  add ,  commit

                     此时master  和 branch1 都有了新的提交。

                     这种情况下,Git 无法执行“快速合并”,在合并过程中后有冲突。   合并   git merge feature1

         7.2.2  解决冲突

                    test.txt的冲突必须先手动解决后才可以提交。  

                    git status 可以告诉我们冲突的文件

                   Git  用 <<<<<<<<<,=========,>>>>>>>>>  标记处不同分支的内容,我们修改后保存,再提交,add,commit           

                    使用 git log 也可以看到分支的合并情况 :

                    git log --graph --pretty=online --abbrev-commit

                    最后删除branch1分支

                   git branch -d branch1

                    OVER

                    ******  使用git log --graph 命令可以查看分支合并图

        7.3  分支管理策略  

              (合并分支时,--no-ff 参数可以用普通模式合并,合并后的历史有分支,能看出曾经进行的合并,而 Fast forwaird 合并就看不出曾经进行的合并)

                7.3.1  合并分支时,Git 会用Fast forward模式,这种模式下,会删除分支,丢掉分支的信息。

                           如果强制(禁用)Fast forward 模式,Git 会在merge 时生成一个新的commit ,这样,从分支合并情况可以看到分支信息。

                7.3.2  禁用Fast forward 模式(即快速合并),  no Fast forward       ---》 --no-ff 的git merge

                           创建切换分支

                                git checkout -b dev

                           修改 test.txt , 病提交一个新的commit

                                git add test.txt

                                git commit -m "add merge"

                          切换回 master

                                git checkout master     

                          合并dev分支,注意 --no-ff , 表示禁用 Fast forward

                                git merge --no-ff -m "merge with no-ff"  dev

                                因为合并要创建一个新的commit , 所以要加上 -m  参数,把 commit 的描述写进去

                          合并完成,用 git log 查看分支历史

                                git log --grapth --pretty="oneline"  --abbrev-commit.

                7.3.3  分支策略

                             1)  master 是稳定的,只用来发布新版本,不能在这干活

                             2)  在新创建分支1,2,3上干活,即分支不稳定。在需要合并时,合并

        7.4  Bug 分支

                遇到 Bug 时,需要用一个临时分支来修复,修复后,临时分支删除。、

                在需要处理临时分支上的 bug 时,当前分支 branch1 的内容还没有提交,但是又不能提交(任务没做完),使用 git stash 将当前 工作区状态保存起来,等回复后再 

                工作。 现在用 git status 查看工作区是干净的, 可以放心使用分支处理bug,在哪个分支上修复就在哪个分支上创建 bug临时分支 。

                例如:在master 上修复。

                            git checkout master                     切换到master

                            git checkout -b problem_1         创建并切换到bug分支

                           *****************************************************************

                           修复bug    修改   test.txt 文件,添加,提交

                            git add readme.txt

                            git  commit -m "fix a promble"

                           *****************************************************************

                            切换到 master 分支,合并,最后删除

                            git checkout master        切换到master

                            git merge --no-ff -m "mergeed bug fix pro1"  problem1    合并bug分支

                            git branch -d  problem1           删除bug 分支

                          *****************************************************************

                           回到原来的工作区, 恢复现场

                            git checkout branch1

                            git status                       此时工作区是干净的

                            git stash list               查看刚才的工作现场, 可以看到 还在,保存在别的地方

                            *****************************************************************

                           恢复

                           方法1:git stash apply      恢复后 stash 内容没有删除               用 git stash list 可以查看到内容

                           方法2:git stash pop         恢复的同事 stash 的内容也删除了  用 git stash list 可以查看不到内容

                           #######:  多次stash,恢复时,先用 git stash list 查看, 然后用 git stash apply stash@{0} 恢复

        7.4  Feature 分支

                添加新功能时, 创建分支,因为某种原因需要销毁

                git checkout -b feature-new

                开发完毕后, feat_test.txt

                git add feat_test.txt

                 git status

                 git commit -m "add feat_test"

               切回分支 branch1,合并

                 git checkout branch1

                 因为某种原因需要删除这个功能。

                 git branch -d feature-new                  销毁失败,因为feature-new 分支还没有合并,如果删除,将丢掉数据,

                  这时,强行删除

                git branch -D feature-new.

    ##### 开发新功能,使用新分支, 要丢弃一个没有合并过的分支,可以通过  (强行删除)。

       7.5  多人协作,分支与远程库

              7.5.1 克隆是把 本地 master 分支和 远程的 master 分支对应,远程仓库 默认 origin

                        要查看远程库的信息, 用 git remote     或者 git remote -v  详细

              7.5.2 推送分支,

                        git push  origin master

                        git push origin  “参数1”   参数1:其他分支名

              7.5.3 分支 是否推送 详解

                        master 是主分支,时刻与远程同步

                        其他分支是开发分支,团队所有成员都需要在上面工作,所以也要与远程同步

                        bug 分支只用于本地修复,不用推送到远程,除非特出情况。

                        feature 分支是否推送,取决于是否与别人共同参与        

              7.5.4 抓取分支

                        get clone git@git@github.com:“XXXXXXX”/714repo.git

                        别人从远程 clone , 默认情况下,只能看到本地的 master 分支, 可用 git branch 查看

                        别人要在 分支 branch1 上开发,需要创建远程origin 的 branch1分支到本地,

                        git checkout -b dev origin/branch1

                        这样就可以在 branch1 上修改,将 branch1 分支  push 到远程

                        git commit -m “XXXXXXXXXX”

              7.5.5 自己和别人的推送冲突、

                        若自己和别人对相同的文件进行了修改,且别人先推送了提交。你在推送提交时会有冲突。

                         解决方法, 先用 git pull 将新的提交从origin 的最新提交从 origin/branch1 抓取下来,然后在本地合并,解决冲突,再推送

              7.5.6 多人协作的工作模式

                         1.  推送自己的提交,  git push origin branch-name

                          2. 推送失败,因为远程分支比本地更新, 新 git pull 试图合并

                         3. 合并有冲突, 先解决冲突,在本地提交

                         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 , 有冲突,先处理冲突

8.  标签

     8.1 创建标签  (标签按字符排序,而不是时间)

                 git branch  切换到要打标签的分支

                 git  checkout master

                 git tag  <name>            打标签,默认在最新提交上打标签, HEAD

                 git tag                     查看所有标签

                 git log --pretty=oneline --abbrev-commit          查看历史提交

                 git tag v0.8    "参数1"                 参数1 表示 上条命令查到的id

                 git show <tagname>            可以查看标签信息

                 git tag   -s   <tagname>   -m  "message"     "参数1"     提交id      通过 -s 用私钥 签名一个标签

                 签名采用PGP签名,因此,必须首先安装gpg (GnuPG) ,如果没有找到gpg,或者没有gpg 密钥对,就会报错。

                 如果报错,参考GunPG帮助文档配置Key

                git show <tagname>     可以查看PGP签名信息。 PGP签名不可伪造,可以验证

     8.2 操作标签

            git tag -d <tagname>   删除标签(本地标签,还没推送)

            git push origin <tagname>       推送一个标签

            git push origin --tags                 推送所有本地标签到远程

            删除已经推送的标签

            git tag -d <tagname>                  先删除本地标签

            git  push origin:refs/tags/<tagname>     删除远程标签

9.  自定义Git

     改变颜色               git config --global color.ui true

     命令起别名   git config --global alias.st status                 st 表示 status

            类似的    git config --global alias.ci commit                 ci        commit

                            git config --global  alias.br  branch

                                       

               


0 0
原创粉丝点击