设为首页 收藏本站
查看: 1015|回复: 0

[经验分享] Git笔记《一》

[复制链接]

尚未签到

发表于 2018-9-18 12:00:08 | 显示全部楼层 |阅读模式
  Git是一款分布式的源代码管理工具。
  分布式管理工具相对于CVS和SVN这种集中式的代码管理工具,有以下的几点好处:

  •   代码仓库分散,避免单点故障。如果集中的代码仓库出现问题,完全可以根据每个人的代码仓库重建集中的代码仓库,几乎没有什么损失。
  •   每个人在本地都有一个代码仓库,在本地也可以进行代码管理,checkin,checkout,可以离线管理代码,在连线之后再push到集中的代码库中。
  还有就是Git在速度方面要大大优于CVS和SVN,以及强大的分支合并功能。
  创建git仓库

  •   mkdir gittest
  进入仓库

  •   cd gittest
  初始化git工作目录

  •   git init
  创建readme文件,并且写入hello

  •   echo "hello" > readme
  查看当前状态
  状态信息中包括有哪些文件还没有添加到暂存区,需要执行git add命令。哪些文件添加到暂存区,还没有提交,需要执行git commit。总之,有很多的帮助信息。提示你下一步该怎么做。

  •   git status
  查看日志
  日志信息中包括提交者的姓名,电子邮件,提交时间,提交的注释

  •   git log

  •   user1@web:~/gittest$ git log
  •   commit bcf5ec69408e12b6654cc45a80a781cce6752be1
  •   Author: woaigithub
  •   Date:   Tue Oct 23 21:10:37 2012 +0800
  •   4
  •   commit 81971bb9852674f99844d65eac65effae899e75d
  •   Author: woaigithub
  •   Date:   Tue Oct 23 20:52:54 2012 +0800
  •   3
  •   commit 7bb694190d5443ebae494d5b47324d09eb8266e0
  •   Author: woaigithub
  •   Date:   Tue Oct 23 20:50:20 2012 +0800
  •   2
  •   commit 8cc48213baed67ca46836cfb69593529c6d361b1
  •   Author: user1.web
  •   Date:   Tue Oct 23 20:46:34 2012 +0800
  •   first
  查看某一个提交的详细信息

  •   git show
  首先从git log中获取所有的提交信息,然后用git show 加上某一次提交的commit信息,就是log中的commit段信息,作为参数,就可以查看这次commit的详细信息。
  包括提交的用户,时间,内容,所做的修改。

  •   user1@web:~/gittest$ git show 8cc482
  •   commit 8cc48213baed67ca46836cfb69593529c6d361b1
  •   Author: user1.web
  •   Date:   Tue Oct 23 20:46:34 2012 +0800
  •   first
  •   diff --git a/readme b/readme
  •   new file mode 100644
  •   index 0000000..ce01362
  •   --- /dev/null
  •   +++ b/readme
  •   @@ -0,0 +1 @@
  •   +hello
  commit信息一般只需要前面的几个字符就可以,经过尝试最好使用6个字符。

  •   git show HEAD #获取当前分支最近一次提交的详细信息
  设置git用户信息

  •   git config --global user.name "woaigithub"
  •   git config --global user.email jorden008@gmail.com
  添加到管理系统,每次修改文件,也需要执行下面的命令

  •   git add readme
  提交到仓库

  •   git commit -m "first commit"
  添加的同时提交

  •   git commit -a -m "second"
  未加入暂存区的文件和已加入暂存区的文件比较

  •   git diff

  •   user1@web:~/gittest$ git diff
  •   diff --git a/file1 b/file1
  •   index c7dc989..ad735d2 100644
  •   --- a/file1
  •   +++ b/file1
  •   @@ -1 +1,2 @@
  •   2222
  •   +helo
  •   diff --git a/readme b/readme
  •   index b1efb35..9e717a9 100644
  •   --- a/readme
  •   +++ b/readme
  •   @@ -1,4 +1,4 @@
  •   -hello
  •   +hasdfsdfello
  •   second
  •   3
  •   4
  第二行中显示比较的两个文件。
  第四行是已加入暂存区的文件,也就是执行git add命令的文件。
  第五行是未加入暂存区的文件,也就是刚编辑过,还么有执行git add的文件。
  第六行的信息是,-文件显示第1行,+文件显示第1行和第2行。
  第七行,信息中没有+-号,说明这两个文件中都包含2222。
  第八行,+号说明helo只是在第二个文件中才有。
  第九行,比较的是两个readme文件。
  显示的是两个文件的1-4行。
  第一个文件中有hello,第二个文件中有hasdfsdfello,两个文件都有second,3,4这些信息。
  列出所有的分支

  •   git branch
  创建分支

  •   git checkout -b develop #创建develop分支,并且切换到develop分支
  •   git branch fixbug001    #创建fixbug001分支
  切换分支
  切换到master分支

  •   git checkout master
  合并分支
  首先在develop分支开发,如果完成,达到合并的要求,要合并到master分支。首先要切换到master分支,然后执行合并命令。

  •   git checkout master
  •   git merge develop
  删除不要的分支
  有的分支,在完成使命之后,就可以删除,防止过多的分支导致混乱。在删除分支之前,要切换到其他分支。

  •   git checkout master
  •   git branch -d fixbug001
  克隆一个远程项目
  执行下面的命令,会在本地建立一个railsblog目录,然后初始化,然后从远程获取代码到目录。

  •   git clone https://github.com/woaigithub/railsblog.git
  账户@IP:工作树目录
  git@192.168.0.111:~/work/blog
  在192.168.0.111机器的git账户的/home/git/work/blog目录有一个仓库。

  •   git clone git@192.168.0.111:~/work/blog
  clone远程服务器的仓库以后,如果远程服务器有多个分支,在本地使用git branch发现只有一个master分支。
  需要使用

  •   git branch -a
  查看所有的分支,包括远程的分支。

  •   git checkout -b develop origin/develop
  可以获取远程的develop分支到本地,并且建立跟踪。
  合并远程仓库和本地仓库的代码
  假设在远程192.168.0.112有一个仓库/home/user2/work/blog,要合并到本地的仓库。首先进入本地仓库,然后执行git pull。

  •   cd ~/work/blog
  •   git pull git@192.168.0.112:~work/blog master
  git pull 远程地址 本地分支
  这个命令包含两个步骤,首先是从远程仓库获取,然后是将获取的代码和本地仓库合并。
  获取合并也可以分开做,首先fetch,然后在merge。
  从远程仓库fetch

  •   git fetch git@192.168.0.112:~/work/blog
  合并fetch的内容

  •   git merge origin/master
  多人协同开发的过程中,合并可能会发生冲突,git会提示有冲突,这时候需要我们人工处理,处理之后,再提交。
  如果两个人对同一个文件的同一行进行修改,在合并的时候就会发生冲突,git不知道如何取舍。git会将两个人的修改都保存起来,中间用===============分割开来,等待你的处理。
  git虽然是分布式的代码管理工具,但是我们在多人协同开发的时候还是需要一个服务器来集中管理最新的源代码以及每个版本的源代码,也就是需要一个集中的地方。
  假设这台服务器的地址是192.168.0.1,用户是git,在/home/git/blog.git目录建立空的共享的仓库。

  •   cd ~
  •   mkdir blog.git
  •   cd blog.git
  •   git init --bare --shared
  这时候,如果一个用户就可以把本地仓库的代码push到远程服务器,然后其他用户都从远程服务器pull最新的代码。

  •   git push git@192.168.0.1:~/blog.git master
  git push 远程地址 本地分支
  远程地址,每次都写一大堆比较麻烦,可以给他们起个简称。

  •   git remote add origin git@192.168.0.1:~/blog.git
  以后pull和push就可以。

  •   git pull origin master
  •   git push origin master
  查看所有的remote

  •   git remote #只显示名称
  •   git remote -v #显示名称和详细地址
  标签tag
  标签可以用来做版本,v1.0, v1.1。
  建立标签

  •   git tag v1.0
  列出tag

  •   git tag -l
  删除tag

  •   git tag -d v1.0
  git push默认不会push tags到服务器,需要加上--tags参数。

  •   git push --tags origin master
  这样才会将tag信息一并push到服务器,别人clone也会将tag一并clone的。
  工作流程
  使用git的工作流程和以前使用svn有些不一样。
  多人协作环境,有一个集中的源代码管理服务器,每个人都有本地仓库。
  首先从服务器pull最新代码,并合并到本地。
  git pull
  新开一个分支开始工作。
  git checkout newbranch
  git branch newbranch
  提交代码
  git add
  git commit
  再次从服务器获取最新。
  git pull
  合并没有问题之后,push到服务器。
  git push
  删除刚才建立的分支。
  git branch -d newbranch
  上面只是一个参考流程,具体根据环境调节。
  参考文献
  1.Git分支管理策略
  2.读懂diff
  3.git-tutorials.pdf(下面的附件下载)
  4.Git项目合作(remote pull push)学习学习
  5.Git学习教程



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-589812-1-1.html 上篇帖子: git与github在ubuntu下的使用 II 下篇帖子: Git Extensions 2.33出现unhandled exception has ……解决方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表