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

[经验分享] Git 之——常用命令集合

[复制链接]

尚未签到

发表于 2018-9-17 10:43:31 | 显示全部楼层 |阅读模式
  因为前面一篇Git的介绍已经谈论过了关于Git管理理论方面的内容,这里不赘述,直接上干货。主要谈论Git使用中一些常用命令,本文环境是Linux下的shell。

  •   git init创建仓库
  首先需要在一个路径下面创建出一个文件,比如test_git,进入到test_git文件里面,pwd打印出当前路径,那么这个路径就将是创建成仓库的一个路径,使用git init test_git命令,就可以将这个文件变成一个Git可以进行管理的仓库了:
DSC0000.png


  •   git add添加文件
  创建好目录后就可以在该目录下创建出一个文件,比如一个test_git.c文件,编辑这个test_git.c文件并保存:
#include   
int main()
  
{
  
    printf("hello world\n");
  
    return 0;
  
}
  然后使用git add命令将其添加进仓库,运行结果什么也没有就对了;
DSC0001.png


  •   git commit提交文件
  上一步只是将test_git.c文件添加进仓库,至于进一步的提交才是真正将其交给Git来进行管理:
DSC0002.png

  上面的显示告诉我们有1个文件被改动,添加了6行,0行被删除;

  •   git status查看状态
  使用git status可以查看当前git的状态,比如刚刚将修改过的文件成功的提交了,所以当前的工作目录就为干净的,也就是并没有什么改动,如果有改动就会显示:
DSC0003.png


  •   git diff查看修改情况
  这时候如果在test_git.c中添加进去一句话并保存:
printf("Hi,I'm just a test\n");  使用git diff命令可以查看修改的情况,diff就是difference:
DSC0004.png

  上面用不同的颜色显示出来被修改的内容,且显示为添加了一行;

  •   git log显示日志
  将上面改动的内容进行再次的提交,并用git log命令可以查看从最近到最远提交的日志情况:
DSC0005.png


  •   git reset回退
  如果不向使用当前的版本,想要恢复上一个或者以前的某一个版本,就可以使用git reset --hard HEAD^命令,HEAD表示当前版本,HEAD^表示上一个,HEAD^^表示上上个,而上面第100个则表示为HEAD~100:(看不清请戳大图,戳戳戳就对了)
DSC0006.png


  •   git checkout -- filename撤销修改

  •   如果在当前工作区想要撤销掉已经修改的内容,可以使用git checkout -- filename,这里就不再截图显示了,请自行实践;
  •   而如果已经将修改的内容给提交到了暂存区,就需要使用git reset HEAD filename来将该文件从暂存区回退到工作区,然后再使用git checkout -- filename命令;
  •   如果已经执行了git commit将文件交给了Git分支管理,可以使用上面的版本回退命令撤销提交;
  •   要是还有如果,已经将版本推送到了远程库怎么办,没救了......


  •   git rm filename删除文件
  如果想要删除工作区中已经被提交过的一个文件,使用普通的shell命令rm是不能够的,应该使用git rm filename来进行删除,同时还要用git commit命令来进行提交同步;

  •   git remote add origin git@github.com:name/repository_name.git关联远程库
  GitHub网站是提供Git仓库托管服务的,可以将本地的仓库上传到这个网站中变成一个远程仓库,这样的话,就算本地所有数据全部都丢失也仍然可以从之前保存过的远程库中获取;但是在这之前,Git是支持SSH协议的,也就是说为了安全起见,必须设置相应的推送密码好让远程库能够识别到,因此,需要如下命令:
ssh-keygen -t rsa -C "youremail@example.com"    //执行过程一路回车使用默认就好  这样的话就会在用户主目录下多出一个.ssh的隐藏目录,id_rsa时私密钥匙不可泄露,将该目录下面的id_rsa.pub里面的内容复制粘贴交给GitHub账号里面Personal settings下面的SSH keys并保存就可以啦:
DSC0007.png

  接下来就可以在GitHub中创建出一个repository远程库来同步本地的数据,因为方便观察和使用,最好将二者的名字相同,然后再使用上面那一长串命令(其实我本来已经写了一遍,无奈断网没保存,再写一遍心好累T_T)将本地Git与GitHub的远程库进行关联,其中,origin是默认的远程库名,name是GitHub账户名,后面的repository_name就是在GitHub上创建出的仓库名;运行完命令后什么都没有就对了;之后再使用git remote命令就可以查看远程库:
DSC0008.png


  •   git push (-u) origin master向远端推送
  和远端关联后,就可以向远程库推送文件数据了,使用git push命令,加上-u选项表示不仅会将本地master分支的内容推送至远程新的master分支,还会使二者关联起来,这样以后再进行推送的话就简单些:
DSC0009.png

  如上表示推送成功,这时候打开GitHub的仓库test_git会发现内容和本地的一毛一样,这样的话就可以将本地的文件放入远程管理,就算电脑都格式化也不怕啦;
  如果在团队合作中多人同时推送自己对文件的修改,可能会推送失败,因为会产生冲突,这样的话就需要使用git pull试图合并,如果合并也有冲突,那就需要解决冲突,下面有介绍,然后再推送;

  •   git clone git@github.com:name/repository_name.git从远程克隆文件
  既然可以将数据送至远程库存储,那么如果想要拿到远程库中的数据也是可以的,使用如上命令,就可以在本地得到远程库中的文件了;其中,name同样是GitHub账户名,repository_name是要克隆的仓库名:
DSC00010.png

  上面表示从远端成功克隆完成,这时候打开本地工作区,就会发现里面的内容和远程库中一毛一样了,这可以用于多人协作完成同一项作业;

  •   git checkout -b branch_name创建并切换到该分支
  分支是Git中很强大的一个功能,具体介绍及用途请参考博客《初涉Git心得》,这里直接介绍一系列的命令;上面的命令表示创建一个分支并切换到该分支工作,git branch branch_name表示创建一个分支,如果不加-b选项只表示切换到该分支,git branch表示查看当前分支;需要注意的是,在当前分支上工作添加或者推送文件并不会影响其他分支;
DSC00011.png


  •   git merge branch_name合并分支
  如果一个分支完成任务后想要合并起来,使用如上命令branch_name是想要合并分支的内容;需要注意的是,如果要合并的两个分支内容有冲突,比如两个改的地方相同内容相似,就需要手动解决冲突才能合并;合并完成后如果想要删除分支可使用git branch -d branch_name命令;git bransh -D branch_name命令可用于强行删除还未合并的分支;
DSC00012.png

  上面告诉说产生了冲突,这时候打开产生冲突的文件就如下面所示:
DSC00013.png

  这时候需要手动解决,决定要怎么改动,解决完毕之后保存,再进行添加提交,就OK了;

  •   git stash保存当前工作现场内容
  如果当前正在做一个作业,这时候又要马上着手修另外一个作业的bug,但是当前的作业还不能提交怎么办,使用git stash命令可以将当前工作区的内容保存起来,当解决完毕之后再返回来就可以使用git stash apply恢复但是不删除stash的内容,而git stash drop可删除;git stash pop可恢复工作内容同时删除stash内容;
DSC00014.png


  •   git tag 打标签
  发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。
  Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。
  如果在命令中加上-a选项指定标签名,-m选项指定标签的说明文字,-s表示用私钥签名一个标签,-d选项给删除一个标签;如果在命令的后面加上版本的ID就是在某个版本上打特定的标签,git tag查看所有标签,git show tag_name查看标签信息;
DSC00015.png

  如果想要将标签同样推送至远程库,使用git push origin tag_name命令就行了,如果加上--tags选项则会推送所有尚未推送的标签:
DSC00016.png

  其实Git的强大之处还远远不止这些,比如还有用户可以自己配置Git来使其更加方便自己使用,更改命令更改颜色配置之类的;只是如果初涉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-588267-1-1.html 上篇帖子: php 通过exec 创建git分支失败 下篇帖子: 初涉 Git 心得
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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