Git常用操作(所有的命令都可以通过git help来获取帮助,如git help add等,按q退出)
- 操作之前,你应该了解下我们团队是如何应用项目管理建立代码开发标准化流程 和 理解Git工作流
- 日常使用频率最高的命令 : git add . #在建立新文件或者移动重命名了文件使用; git commit -a -m'提交信息' #提交到本地版本库; git push #提交到服务器; git pull #从服务器更新本地代码; git log -3 #查看最近3条提交记录
- 版本库使用git:name表示Git服务器里面的name版本库,例如:git clone git:testing表示从git服务器将testing版本库复制下来(大家可以使用这个版本库来练习)
- 开发团队使用 gitflow 来对线上产品进行双分支操作
- 如果在操作中出现key出错,Offending RSA key in /home/telking/.ssh/known_hosts:87,就是服务器Key已更换,gedit /home/telking/.ssh/known_hosts将提示第几行删除,重新操作提示时输入yes
- 中英专有名词对照
Repository:版本库,存放所有历史文件变更的数据库 Clone:克隆,指从远程版本库制作复本到客户端 Commit:提交,将变更储存到版本库
Pull:拉,指从远程版本库同步变更到客户端版本库 Push:推,指从客户端版本库同步变更到远程版本库 Merge:合并
Conflict:冲突,两个不同版本无法合并的时候则产生冲突 master:主开发线 Branch:分支 Staging Area:准备区
- 代码库的建立:
- 只是自己一个人用的,就可在需要保存代码的文件夹使用命令git init就可以创建一个GIT版本库,在这个文件夹存放代码工作
- 团队开发,git clone http://repos.com/test test2#从服务器上克隆建立test2文件夹,省略test2就是和服务器同名的test,只clone最新版本:git clone --depth 0
- 版本号:git的版本号是用40位字串,可写头五六位数字就能自动匹配,可以用git log命令,每条commit后面带的就是
也可以用HEAD标注最新的版本,然后HEAD^就是上一级的版本,然后HEAD^^......也可以HEAD~n,就可以往前追溯n个版本
- 文件操作 Git工作流程
- 添加文件到缓存区git add .#添加所有未添加的文件,git add a.py #添加a.py进缓存区,只有add添加了的文件才是进入版本管理,而且执行commit才是提交到版本库
- 提交到版本库git commit -a -m'说明信息' #将所有修改都提交,但是有新文件、新文件夹、重命名或者移动了文件也相当于添加新文件,要运行git add .才会将这些添加进去
- 如果觉得刚提交的“修改说明”写得不够好,可输入以下命令调整git commit --amend
- 移动和重命名文件,直接操作Git也能识别,最好采用Git命令:移动或者重命名git mv oldfile newfile,删除文件gir rm file
- 已经提交过的修改,可以反悔~还原最近一次提交的修改:git reset --soft HEAD^,然后add并commit,HEAD^是最新提交,当然你也可以回退几个,比如HEAD^^
- 自己不知道为什么将代码搞出很错误来,我不想要了,打算恢复上次提交的git reset --hard HEAD^,这个很危险,不仅将版本库回滚,而且还会将本地的代码也一起回滚
- 我将文件删除了,要从版本库里面恢复出来git checkout filename,得到一个文件5个版本以前的状态: git checkout HEAD~5 foo.c
- 版本标签(一般项目master操作) 更多内容
- 产品开发搞一段落,标记下产品版本,git tag -a v1.1 commit-id -m'版本说明信息' #一般都是当前版本使用,commit-id不用;git tag 中文 commit-id #可用中文;
- git tag -d 中文 #把tag=中文刪掉;git tag #显示所有标记;git show v1.1 #显示标签信息;git tag -l v1.4.2.* #显示部分标签
- 默认情况下,'git push'命令不会将标签上传到远程服务器上。为了共享这些标签,你必须在'git push'命令后明确添加-tags选项
- 信息查看 更多git log内容 个性化你的Git Log的输出格式 更多git diff内容
- git status 查看目前工作目录的代码状态,自上次提交以来的添加、修改和删除等
- git diff 查看自上次提交以来,本地代码改动的具体情况,git diff master #與Master有哪些資料不同,git diff tag1 tag2 # tag1與tag2的diff
- git diff HEAD #和最后一次本地提交之间的差异 git diff origin #和本地仓库原始版本比较
- git log 查看log等 -p列出详细信息 -2列出最后2条更新信息,--all所有的log含分支 git log filename # 这个文件的所有log,git log directory # 这个目录的所有 log
- git show 显示最后一次 commit 修改的内容,git show commit-id #显示指定 commit 修改的内容,git show v1 # 查 tag:v1 的修改內容,git show HEAD^ # 前一版修改的資料
- 同事提交代码,你想知道他做了什么操作?git review commit_id #查看指定版本的改动 git review commit-id1 commit-id2 #查看两个版本之间的改动
- 查看版本里面有没有相关的内容:git grep "te" v1 # 查 v1 是否有 "te" 的字串,git grep "te" # 查現在版本是否有 "te" 的字串 更多用法
- 团队协作,需要提交代码到服务器或者从服务器取出代码来
- 将服务器上的整个版本库拉回来git clone http://site.com/projetc localdir #clone的这个本地版本甚至包括全部历史,这个远程版本对应的默认称呼是origin
- 我只需要服务器上的一个分支呢?git checkout -b branch origin/develop #这样就让远程分支对应本地的一个分支了
- 同事更新了代码,我需要从服务器上拉回来git pull #要记住每次提交自己代码之前也要pull,不然很可能出错的,如果pull出现冲突了,不要慌,看看meld两边对比,和同事商量
- 需要提交到服务器上去git push #如果你只是负责develop分支的,第一次要用git push origin develop 是将本地当前的分支推送到服务器上的develop;git push origin b3:b1 把本地的b3分支提交到远程的b1分支上
- git fetch <仓库路径> <分支信息>,用于从远程仓库获取代码。其中<分支信息>的格式是这样的“<src>:<dst>”,<src>表示源的分支,而<dst>表示本地分支。如果<dst>被省略,那么就默认为本地当前分支。
- 分支管理:Git最为强劲好用的就是分支,在开发中要充分利用分支功能 更多内容 团队已经使用 gitflow 来简化分支操作,合并分支尽量使用rebase而不是merge,原因
- git branch # 列出目前有多少 branch ,git branch r # 列出所有 服务器端Repository branch, git branch -a # 列出所有 branch
- git branch abc #从当前分支产生新的abc分支, git branch abc master #由master产生新的abc分支,git branch abc v1 #由tag(v1)产生新的abc分支
- git branch -d abc # 刪除分支, git branch -D abc # 強制刪除abc分支
- git checkout 切换分支,git checkout master #切换到master分支,git checkout -b abc master #从master建立新的abc分支, 並切换到abc分支
- git merge abc #将abc分支合并到当前分支,git cherry-pick f79b0b1ffe445cab6e531260743fa4e08fb4048b #部分合并,用git log查看到edf分支的一个commit_id,然后返回git check abc,运行就可以部分合并,使用命令git mergetool解决分支冲突
- git rebase 分布式合并:git rebase b #合并b分支 -> git rebase --continue # 处理完冲突继续合并 -> git rebase --skip # 跳过 -> git rebase --abort # 取消合并
- git whatchanged 查看本分支,可以列出比 git log 更详细的修改列表。git whatchanged -p branch1..branch2。查看两个分支的比较,注意,-p表示以易理解的字符方式表示两者区别。
- 远程仓库的使用:远程仓库管理是属于版本库管理员操作部分,开发人员只能对本地的设置进行管理,其它需由管理员来操作处理 更多内容
- git remote -v 查看本机仓库对应的远程版本库,显示信息一般是:origin git:cms表示默认版本库对应的是是远程git服务器上的cms版本库
- 添加远程仓库git remote add origin git:cms,表示本仓库对应的远程仓库是git:cms,如果是使用git clone建立的本机仓库是不需要的,只有是本机用init建立的仓库才需要告知对应的远程仓库
- 版本推送到远端仓库:日常使用git push即可,如果是远程仓库是空的,第一次要用”git push origin master” 或者"git push 远程仓库地址 mstar"推送,以后才能直接用git push
- 彻底删除版本库里面的文件 git filter-branch --tree-filter 'rm -f testme.txt' HEAD
python,go,redis,mongodb,.net,C#,F#,服务器架构
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 【.NET】调用本地 Deepseek 模型