首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Git常用操作

Git常用操作

作者头像
码客说
发布于 2019-10-21 09:24:50
发布于 2019-10-21 09:24:50
77000
代码可运行
举报
文章被收录于专栏:码客码客
运行总次数:0
代码可运行

Clone项目

  • 克隆 git clone https://github.com/psvmc/RESideMenu_Swift.git ../RESideMenu_Swift
  • 克隆分支 git clone -b 分支名 https://github.com/psvmc/RESideMenu_Swift.git ../RESideMenu_Swift

克隆下来的项目git的配置信息也下载下来了,所以不用git init

第一次提交

  • 进入项目的根目录 cd /xx/xx
  • git初始化 git init
  • 添加远程库 git remote add origin https://github.com/psvmc/RESideMenu_Swift.git
  • 输入账号密码
  • 添加修改的文件 git add .
  • 提交已添加的文件 git commit -m "注释信息"
  • 修改push到远程 git push origin master

git拉取

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git pull <远程主机名> <远程主机分支名>:<本地分支名>

比如 取回origin主机的next分支,与本地的master分支合并,需要写成下面这样

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git pull origin next:master

Git提交方式

  • 进入项目的根目录 cd /xx/xx
  • 把远程的pull过来 git pull origin master
  • 修改文件
  • 添加修改的文件 git add .
  • 提交已添加的文件 git commit -m "注释信息"
  • 修改push到远程 git push origin master
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git push <远程主机名> <本地分支名>:<远程主机分支名>

比如 把本地的master分支推送到远程my_master

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git push origin master:my_master

修改提交的备注

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git commit --amend

Git分支

  • 添加本地分支 git branch <新分支名字>
  • 切换本地分支 git checkout <分支名> 该语句和上一个语句可以和起来用一个语句表示:git checkout -b <分支名>
  • 添加/推送远程分支 git push origin <本地分支>:<远程分支>
  • 查看本地分支 git branch
  • 查看远程分支 git branch -a
  • 删除本地分支 git branch -d <本地分支>
  • 删除远程分支 git push origin :<远程端分支>
  • 分支合并 比如,如果要将开发中的分支(develop),合并到稳定分支(master), 首先切换的master分支:git checkout master。 然后执行合并操作:git merge develop。 如果有冲突,会提示你,调用git status查看冲突文件。 解决冲突,然后调用git addgit rm将解决后的文件暂存。 所有冲突解决后,git commit 提交更改。
  • 分支衍合 分支衍合和分支合并的差别在于,分支衍合不会保留合并的日志,不留痕迹,而 分支合并则会保留合并的日志。 要将开发中的分支(develop),衍合到稳定分支(master)。 首先切换的master分支:git checkout master。 然后执行衍和操作:git rebase develop。 如果有冲突,会提示你,调用git status查看冲突文件。 解决冲突,然后调用git addgit rm将解决后的文件暂存。 所有冲突解决后,git rebase --continue 提交更改。

Tag操作

git跟其它版本控制系统一样,可以打标签(tag), 作用是标记一个点为一个版本号,打标签的操作发生在我们commit修改到本地仓库之后

添加标签

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git add .
git commit -m "fixed some bugs"
git tag -a 1.0 -m "Release version 1.0"

上传标签

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git push origin master
git push origin --tags

--tags参数表示提交所有tag至服务器 普通的git push origin master操作不会推送标签到服务器端

删除本地标签

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git tag -d 1.0

删除远程标签

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git push origin :refs/tags/1.0

冲突解决(MyEclipse)

  • 提交至本地库 commit
  • 进行同步 Synchronize Workspace
  • 从远程pull下来pull
  • 利用 Merge Tool
  • 选择第二项 Use HEAD(the last local version) of conflicting files
  • 手动解决冲突
  • 添加到git index中 Add to Git index
  • 提交并推送 commit and push

冲突解决(命令)

  • 备份当前分支 git branch master_backup
  • 还原 git reset --hard dca9073

本地覆盖远程

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git push origin master:master --force

Git 放弃本地修改 强制更新

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git fetch --all
git reset --hard origin/master

设置用户名与邮箱

设置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git config --global user.name "psvmc"
git config --global user.email "183518918@qq.com"

查看

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git config --get user.name
git config --get user.email

禁止提交文件

加入我们在配置.gitignore文件之前就提交了123.txt 那么即使我们以后.gitignore中添加上123.txt 该文件依旧会被提交,该怎样解决呢

正确的做法

先移除追踪

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git rm --cached 123.txt

在提交

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git commit -m "移除追踪"

错误的做法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git update-index --assume-unchanged <PATH>

这样做虽然能达到(暂时的)目的,但并非最正确的做法,这样做是误解了 git update-index 的含义,而且这样做带来的最直接(不良)后果是这样的:

  • 所有的团队成员都必须对目标文件执行:git update-index --assume-unchanged <PATH>。这是因为即使你让 Git 假装看不见目标文件的改变,但文件本身还是在 Git 的历史记录里的,所以团队的每个人在 fetch 的时候都会拉到目标文件的变更。(但实际上目标文件是根本不想被 Git 记录的,而不是假装看不见它发生了改变)
  • 一旦有人改变目标文件之后没有 git update-index --assume-unchanged <PATH> 就直接 push 了,那么接下来所有拉取了最新代码的成员必须重新执行 update-index,否则 Git 又会开始记录目标文件的变化。这一点实际上很常见的,比如说某成员换了机器或者硬盘,重新 clone 了一份代码库,由于目标文件还在 Git 的历史记录里,所以他/她很可能会忘记 update-index.

如果你修改的一个文件很大,那么你的每一次修改git都保存历史的话,是很慢的所以 git update-index --assume-unchanged 的真正用法是这样的:

  • 你正在修改一个巨大的文件,你先对其 git update-index --assume-unchanged,这样 Git 暂时不会理睬你对文件做的修改;
  • 当你的工作告一段落决定可以提交的时候,重置改标识:git update-index --no-assume-unchanged,于是 Git 只需要做一次更新,这是完全可以接受的了;
  • 提交+推送。

改写历史

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/psvmc/psvmc.github.io.git
git filter-branch --tree-filter 'rm -f jekyll-themes/ztheme/images/*.jpg' --tag-name-filter cat -- --all
git push origin --tags --force
git push origin --all --force

注意 这也会对当前的分支进行操作 也就是说 上述的例子也会删除当前分支的图片 如果只想删除历史文件 就要当前的文件先备份一下

取消跟踪已版本控制的文件

不再追踪文件改动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git update-index --assume-unchanged filePath

恢复追踪文件改动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git update-index —no-assume-unchanged filePath

删除被管理的文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git rm —cached filePath

删除被管理的文件夹

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git rm -r -f —cached filePath

无法Clone

当项目过大时会报一下的错误

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RPC failed; curl 18 transfer closed with outstanding read data remaining

解决方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git  config --global http.postBuffer 24288000
git config --list

如果还不行呢

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone http://github.com/myproject --depth 1
cd myproject
git fetch --unshallow

如果上面的还不行 就可能是Nginx做代理缓存设置过小的缘故

把代理中的缓存关闭就行了(折腾了好久,才试出来的)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location / {
	proxy_buffering off;
}

版本回退

查看之前的版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git reflog

复制完要会退的版本号后 按q键退出

回退到指定版本

  • git reset –soft xxxx
  • git reset –hard xxxx

回退到上个版本

  • git reset –soft HEAD~1
  • git reset –hard HEAD~1

HEAD就代表当前,所以上一个版本其实就是当前-1

前者表示只是改变了HEAD的指向,本地代码不会变化,我们使用git status依然可以看到,同时也可以git commit提交。 后者直接回改变本地源码,不仅仅指向变化了,代码也回到了那个版本时的代码,所以使用是一定要小心,想清楚。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Git常见场景解决方法总结
1. 新建临时分支, git checkout-b new_branch,这样改动会被带到新分支。
winty
2019/12/20
6210
git常用操作
git add .(后面有一个点,意思是将你本地所有修改了的文件添加到暂存区) 2、git commit -m "" (引号里面是你的介绍,就是你的这次的提交是什么内容,便于你以后查看,这个是将索引的当前内容与描述更改的用户和日志消息一起存储在新的提交中) 3、git pull origin 远程分支名 这是下拉代码,将远程最新的代码先跟你本地的代码合并一下,如果确定远程没有更新,可以不用这个,最好是每次都执行以下,完成之后打开代码查看有没有冲突,并解决,如果有冲突解决完成以后再次执行1跟2的操作 4、gi
陈不成i
2021/05/28
2610
Git 的奇技淫巧
Git是一个 “分布式版本管理工具”,简单的理解版本管理工具:大家在写东西的时候都用过 “回撤” 这个功能,但是回撤只能回撤几步,假如想要找回我三天之前的修改,光用 “回撤” 是找不回来的。而 “版本管理工具” 能记录每次的修改,只要提交到版本仓库,你就可以找到之前任何时刻的状态(文本状态)。
iMike
2019/07/29
1.2K0
Git常用操作总结
本文作者: AI码真香
AI码真香
2022/09/13
2580
工作中 99% 能用到的 Git 命令
分支操作 暂存操作 回退操作 标签操作 常规操作 git创建项目仓库 忽略已加入到版本库中的文件 取消忽略文件 拉取、上传免密码 分支操作 git branch 创建分支 git branch -b 创建并切换到新建的分支上 git checkout 切换分支 git branch 查看分支列表 git branch -v 查看所有分支的最后一次操作 git branch -vv 查看当前分支 git brabch -b 分支名 origin/分支名 创建远程分支到本地 git branch --merg
互扯程序
2019/11/19
4620
版本控制工具——Git常用操作(下)
摘要:上一集我们一起入门学习了git的基本概念和git常用的操作,包括提交和同步代码、使用分支、出现代码冲突的解决办法、紧急保存现场和恢复现场的操作。学会以后已经足够我们使用Git参加协作开发了,但是在开发的过程中难免会出错,本文主要介绍版本控制的过程中出错了的场景,以及Git开发的一些技巧,让我们用的更流畅。
机智的程序员小熊
2019/01/10
1K0
版本控制工具——Git常用操作(下)
工作中99%能用到的git命令
原文:http://h5ip.cn/96CR 作者:命中水 分支操作: git branch 创建分支 git branch -b 创建并切换到新建的分支上 git checkout 切换分支 git branch 查看分支列表 git branch -v 查看所有分支的最后一次操作 git branch -vv 查看当前分支 git brabch -b 分支名 origin/分支名 创建远程分支到本地 git branch --merged 查看别的分支和当前分支合并过的分支 git branch -
谭庆波
2019/04/25
4350
工作中 99% 能用到的 Git 命令
源码精品专栏 原创 | Java 2019 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction 源码解析 Eureka 和 Hystrix 源码解析 Java 并发源码 来源:http://rrd.me/etzSK 分支操作 暂存操作
芋道源码
2019/10/15
4970
Git 的使用
关联本地和远程仓库 1.安装git 先安装homebrew,然后通过homebrew安装git。 git中clone项目有两种方式:https和ssh https:不管是谁,拿到url随便clone,但是在push的时候需要验证用户名和密码。 ssh:clone项目你必须是拥有者或者管理员,而且需要在clone前添加SSH Key。SSH在push的时候,是不需要输入用户名的,如果配置SSH Key的时候设置了密码,则需要输入密码,否则是不需要输入密码的。 git中使用SSH Key的步骤: 1.检查电脑是
前端教程
2018/03/05
1.2K0
看我Git 72变,GitHub发布4已超过8000星
大家在用Git写东西的时候都用过 “回撤” 这个功能,但是回撤只能回撤几步,假如想要找回我三天之前的修改,光用 “回撤” 是找不回来的。
昱良
2019/05/13
6780
看我Git 72变,GitHub发布4已超过8000星
git 命令大全
阮一峰 git 学习 :https://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html
xyzzz
2020/12/12
6630
git 命令大全
git 常用操作总结
id_rsa 是私钥,id_rsa.pub 是公钥 id_rsa.pub 是你需要上传到 github 的 SSH KEY
leocoder
2024/02/01
2590
git 常用操作总结
Git常用操作指南
因为工作需求,最近又重新温习了一下Git操作,遂总结了一篇Git常用操作指南,方便日后学习查阅,本博客精简提炼了在开发过程中Git经常用到的核心命令,主要参考了《廖雪峰老师的Git教程》,希望对大家学习使用Git能带来帮助。
10JQKA
2019/07/22
8610
Git常用操作指南
别再说你不会Git了,这个教程直接拿走!
使用 Git 作为代码版本管理,早已是现在开发工程师必备的技能。可大多数工程师还是只会最基本的保存、拉取、推送,遇到一些commit管理的问题就束手无策,或者用一些不优雅的方式解决。
用户10002156
2023/08/07
2710
别再说你不会Git了,这个教程直接拿走!
【Git】Common Git Command Line Operation
Common Git Command Line Operation | Chanvin's Blog (chanvinxiao.com)
阿东
2024/03/05
1630
【Git】Common Git Command Line Operation
Git常用命令汇总篇(附使用详细介绍)
众所周知,Git是一个开源的分布式版本控制系统,用于跟踪和管理源代码的变更。而Git有着大量的常用命令。
Masutaa大师
2023/08/09
6650
Git常用命令汇总篇(附使用详细介绍)
Git从入门到进阶,你想要的全在这里
Git 是一个「分布式版本管理工具」,其具备太多的优点:更方便的 Merge、更方便的管理、更健壮的系统、对网络的依赖性更低、更少的“仓库污染” 等等,这使得Git成为协作开发代码的最优方法。
Python编程与实战
2020/03/04
9210
Git从入门到进阶,你想要的全在这里
Git实用技巧31招
任何因包含合并冲突而有待解决的文件,**都会以未合并状态标识出来**。 Git 会在有冲突的文件中加入标准的冲突解决标记,这样你可以打开这些包含冲突的文件然后手动解决冲突。
CherishTheYouth
2021/04/26
7950
Git实用技巧31招
git 常用操作总结
id_rsa 是私钥,id_rsa.pub 是公钥 id_rsa.pub 是你需要上传到 github 的 SSH KEY
leocoder
2018/10/31
5580
Git简单实用操作步骤及命令介绍
Windows下的Git安装完成后,通过开始菜单——>Git——>Git Bash 打开终端或者鼠标右键直接打开Git Bash终端窗口
IT技术小咖
2019/11/24
8110
相关推荐
Git常见场景解决方法总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档