资讯专栏INFORMATION COLUMN

【Linux】git 常用命令

stonezhu / 1935人阅读

摘要:自从以来的所有改变都会显示在的中仅重设,但是不重设。这个模式是默认模式,即当不显示告知模式时,会使用模式。

作者:LogM

本文原载于 https://segmentfault.com/u/logm/articles ,不允许转载~

1. 克隆
git clone <版本库的网址>
git clone <版本库的网址> <本地目录名>

# 克隆版本库的时候,所使用的远程主机自动被git命名为origin
# 使用-o修改远程主机名
git clone -o <远程主机名> <版本库的网址>
2. 查看历史
# 查看历史的每一次操作
git reflog

# 查看历史commit 
git log
git log --oneline

# 查看commit的修改
git show 
git show --stat 
git show  

# 查看两个分支的差异
git diff  
git diff --stat  

# 查看某个文件的改动,还未add
git diff 

# 查看已经add的文件相比上一次commit有哪些改动
git diff --cached
3. 远程主机管理
# 列出所有的远程主机名
git remote

# 参看远程主机的网址
git remote -v

# 查看主机的详细配置
git remote show <主机名>

# 添加远程主机
git remote add <主机名> <网址>

# 删除远程主机
git remote rm <主机名>

# 远程主机改名
git remote rename <原主机名> <新主机名>
4. 分支管理
# 将远程主机新的更新取回本地,默认取回所有branch的更新
# 它取回的代码对你本地的开发代码没有影响(只是让 `git branch -a` 显示出远程新增的branch,不修改本地代码)
git fetch <远程主机名>

# 取回远程主机的特定branch
git fetch <远程主机名> <分支名>

# 查看远程分支
git branch -r

# 查看所有分支
git branch -a

# 在origin/master的基础上,新建本地分支
git checkout -b newBrach origin/master
# 相当于执行
git branch newBrach
git checkout newBrach

# 查看跟踪关系
git branch -vv

# 手动建立追踪关系
git branch --set-upstream-to=origin/remoteBranch localBranch

# 删除本地分支
git branch -d 
5. 拉回更新
# 取回远程主机某个分支的更新,再与本地的指定分支合并
# 实质上,这等同于先做git fetch,再做git merge
git pull <远程主机名> <远程分支名>:<本地分支名>

# 采用rebase模式,可以使用--rebase选项
git pull --rebase <远程主机名> <远程分支名>:<本地分支名>

# 如果远程分支是与当前分支合并,则冒号后面的部分可以省略
git pull <远程主机名> <远程分支名>

# 如果本地的当前分支在远程主机上已经有追踪关系的分支,可以省略分支名
git pull <远程主机名>

# 如果只有一个追踪的分支,则可以省略主机名
git pull

# 如果远程主机删除了某个分支,默认情况下,git pull 不会在拉取远程分支的时候,删除对应的本地分支
# 加上参数 -p 就会在本地删除远程已经删除的分支
git pull -p
# 等同于
git fetch --prune origin 
git fetch -p
6. 推送更新
# 将本地分支的更新,推送到远程主机
git push <远程主机名> <本地分支名>:<远程分支名>

# 如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支,如果该远程分支不存在,则会被新建
git push origin master

# 如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支
git push origin :master
# 等同于
git push origin --delete master

# 如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略
git push origin

# 如果当前分支只有一个追踪分支,那么主机名都可以省略
git push

# 还有一种情况,就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要使用--all选项
git push --all origin

# 如果远程主机的版本比本地版本更新,推送时Git会报错,应当先pull合并代码。如果你一定要推送,可以使用--force选项
git push --force origin 

# git push不会推送标签(tag),除非使用--tags选项
git push origin --tags
7. 代码回滚

# 文件被修改了,但未执行git add操作
git checkout fileName

# 同时对多个文件执行了git add操作,但本次只想提交其中一部分文件
# 取消暂存
git reset HEAD 

# 文件执行了git add操作,但想撤销对其的修改
# 取消暂存
git reset HEAD fileName
# 撤销修改
git checkout fileName

# 修改的文件已被git commit,但想再次修改不再产生新的Commit
# 修改最后一次提交 
$ git add fileName
$ git commit --amend -m"说明"

# 已在本地进行了多次git commit操作,现在想撤销到其中某次Commit
git reset [--hard|soft|mixed|merge|keep] [commit|HEAD]
# hard:重设index和working directory,从以来在working directory中的任何改变都被丢弃,并把HEAD指向
# soft:index和working directory中的内容不作任何改变,仅仅把HEAD指向。自从以来的所有改变都会显示在git status的“Changes to be committed”中
# mixed:仅重设index,但是不重设working directory。这个模式是默认模式,即当不显示告知git reset模式时,会使用mixed模式。这个模式的效果是,working directory中文件的修改都会被保留,不会丢弃,但是也不会被标记成“Changes to be committed”,但是会打出什么还未被更新的报告

# 将本地的状态回退到和远程一样
git reset --hard origin/devlop

# revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在;
# reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110566.html

相关文章

  • linux常用命令及文件权限管理

    摘要:拥有所有文件的读写运行权限。用户组,可以获得临时权限这主要用于修改权限什么的。目录列表文件所属用户及文件所有者变更查看当前目录下的文件加上会显示开头的文件查看当前目录下的文件信息变更文件所有者为变更文件的权限。 一些常规命令 # 切换目录 cd /www/app # 显示当前目录绝对路径 pwd # tab键可以自动补全路径,命令;及提示选择,自动补全、避免输入错误、 tab #...

    王陆宽 评论0 收藏0
  • Mac 虚拟机搭建及相关命令

    摘要:虚拟环境的搭建是一款用来管理虚拟机的工具,可以构建虚拟开发环境的,可以封装一个的开发环境,分享给其他开发人员。添加官方的镜像进行初始化切换目录启动环境入代码启动完成后,通过登录虚拟机。 Mac虚拟环境的搭建 1.Vagrant 是一款用来管理虚拟机的工具,可以构建虚拟开发环境的,Vagrant 可以封装一个 Linux 的开发环境,分享给其他开发人员。其他人可以在自己喜欢的桌面系统(M...

    TerryCai 评论0 收藏0
  • Win下必备神器之Cmder

    摘要:目前游走在前端,已离不开,这个组合无疑是运行的利器。更新感谢友可以修改目录下文件,就用实现以打开文件下就能进入所设置的目录相当于在使用文件目录下用凡此种种为常用命令设置下简短别名真心不错。 诚言,对于开发码字者,Mac和Linux果断要比Windows更贴心;但只要折腾下,Windows下也是有不少利器的。之前就有在Windows下效率必备软件一文中对此做了下记载;其虽没oh-my-z...

    hlcc 评论0 收藏0
  • Linux Ubuntu搭建Git服务器

    摘要:今天就介绍一下如何用搭建服务器以及使用来管理用户以及用户权限。总结至此,你就完成了在上搭建服务器的全部任务,接下来就是根据常用命令进行协同开发即可原文链接搭建服务器 之前介绍过如何在Windows上搭建Git仓库服务器,不过服务器用的比较多的还是Linux,因为便宜(同一个VPS商一般来说Linux比Windows便宜),没有图形界面,低配置VPS的也可以跑动Linux,开源免费,我感...

    bingchen 评论0 收藏0
  • 从零开始拥有一个自己的网站(流程版)

    摘要:欢迎指点错误,更详细的介绍和操作截图会在其他文章叙述,欢迎加一起交流本文所用本机系统为的深度系列,阿里云服务器为系列的一准备工作你需要的工具一共有系统,,,网站账号,阿里云服务器,域名。 欢迎指点错误,更详细的介绍和操作截图会在其他文章叙述,欢迎加QQ:512317053一起交流本文所用本机系统为liunx的深度系列,阿里云服务器为linux系列的centos一.准备工作 1.你需要...

    wendux 评论0 收藏0

发表评论

0条评论

stonezhu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<