git 管理文件和代码的应用
作者:hackett
微信公众号:加班猿
Git 是一个收费的开源 分布式版本控制系统,旨在疾速高效地解决从小型到大型项目的所有内容。Git 易于学习,占地面积小,具备闪电般的疾速性能。它具备 Subversion,CVS,Perforce 和 ClearCase 之类的 SCM 工具,具备便宜的本地分支,不便的暂存区域和 多个工作流等性能。–《Git 官网》
依稀还记得当初写论文的时候,保留的论文文档是这样子的,代码文件夹是这样的。依据需要删除或批改一些货色后另存为另一个文件,过一段时间后,想找回被删除的文字 / 代码,然而不晓得保留在哪个文件里去了,想保留最新的一个把其余都删除掉,又怕哪天会用上不敢删除,真的烦人,这个时候就轮到咱们弱小的 Git 出场了,顺便记录一下本人从廖雪峰的官方网站 Git 教程的学习。
我工作中罕用的指令
1、如果你没有我的项目的代码,组长个别都会给你一个链接,这时候你就能够用 git 命令 git clone
下来
git clone https://github.com/CodingEmbedded/mygit.git
2、接到主管的需要(此刻的我是想拿我的 ZFB 收款码进去的),一般来说都是新建一个分支的去开发的
git check -b 分支名
3、此时就能够欢快地写 bug 了, 有时候共事 / 主管问你改了什么问题,你改了挺多不记得能够先 status
再diff
一下能够看到咱们批改了那些文件增删了那些内容
git status
git diff
4、写好之后就能够先 git add
再git commit
进行本地代码的提交
git add
git commit -m "message"
5、提交到近程仓库须要用push
git push
6、如果在你写的时候有人提交了代码,这时候你须要 pull
最新的代码下来
git pull
如果没有抵触就能够提交代码(有抵触的话就依照 Git 提醒做批改再提交)
7、你的代码有一个致命 bug,并且曾经提交到了近程仓库,版本回退的办法:先用上面命令找到要回退的版本的 commit_id:
git reflog
而后回退版本:
git reset --hard commit_id
最初强制推送到近程分支:
git push -f
能够看到 图 1 是提交了一个记录为“add or del”,图 2 图 3 为回退版本操作,图 4 图 5 比照能够看出 git 曾经回退了
图 1
图 2
图 3
图 4
图 5
一、创立版本库
1、新建一个空目录 (如下我是E
盘 –> code
目录下新建一个 test
版本库)
2、通过 git init
命令把这个目录变成 Git 能够治理的仓库
3、ls -ah
查看 .git
> 目录和./
>../
>,那是因为.git
这个目录默认是暗藏的。
二、增加文件到仓库
1、编写一个文件 text.txt
2、应用命令git add <file>
,可重复屡次应用,增加多个文件,增加全副文件应用git add -A
3、应用命令 git commit -m <message>
,实现,message
为提交的文本信息
三、查看工作状态和批改的文件
1、要随时把握工作区的状态,应用 git status
命令。
2、如果 git status
通知你有文件被批改过,用 git diff
能够查看批改内容。
四、git 的版本回退
1、版本回退前,用 git log
能够查看提交历史,以便确定要回退到哪个版本。
2、HEAD 指向的版本就是以后版本,因而,Git 容许咱们在版本的历史之间回退,应用命令
git reset --hard commit_id
。
3、Git 必须晓得以后版本是哪个版本,在 Git 中,用 HEAD 示意以后版本上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上 100 个版本写 100 个 ^ 比拟容易数不过去,所以写成HEAD~100
。
4、要重返将来,用 git reflog
查看命令历史,以便确定要回到未来的哪个版本。应用命令git reset --hard commit_id
。
五、暂存区
提交一个 readme.txt 的过程
六、治理批改
Git 是如何跟踪批改的,每次批改,如果不必 git add
到暂存区,那就不会退出到 commit
中。
七、撤销批改
场景 1:当你改乱了工作区某个文件的内容,想间接抛弃工作区的批改时,用命令git checkout -- file
。
场景 2:当你岂但改乱了工作区某个文件的内容,还增加到了暂存区时,想抛弃批改,分两步,第一步用命令git reset HEAD <file>
,就回到了场景 1,第二步按场景 1 操作。
场景 3:曾经提交了不适合的批改到版本库时,想要撤销本次提交,参考四、git 的版本回退一节(用 git log 查看命令历史,以便确定要回到未来的哪个版本。应用命令git reset --hard commit_id
),不过前提是没有推送到近程库。
八、删除文件
命令 git rm
用于删除一个文件。如果一个文件曾经被提交到版本库,那么你永远不必放心误删,然而要小心,你只能复原文件到最新版本,你会失落* 最近一次提交后你批改的内容 *
。
git checkout -- <file>
其实是用版本库里的版本替换工作区的版本,无论工作区是批改还是删除,都能够“一键还原”。
九、增加近程库
第一步:在 git 下创立 SSH Key
。在用户主目录下,看看有没有.ssh 目录,如果有,再看看这个目录下有没有id_rsa
和id_rsa.pub
这两个文件,如果曾经有了,可间接跳到下一步。如果没有,关上 Shell(Windows 下关上 Git Bash),创立 SSH Key:
$ssh-keygen -t rsa -C "youremail@example.com"
你须要把邮件地址换成你本人的邮件地址,而后一路回车,应用默认值即可,因为这个 Key 也不是用于军事目标,所以也无需设置明码。
如果一切顺利的话,能够在用户主目录里找到.ssh 目录,外面有 id_rsa
和id_rsa.pub
两个文件,这两个就是 SSH Key 的秘钥对,id_rsa
是私钥,不能泄露进来,id_rsa.pub
是公钥,能够释怀地通知任何人。
第二步:登陆 GitHub,关上“Settings”,点“SSH and GPG keys”
,填上任意 Title,在 Key 文本框里粘贴 id_rsa.pub 文件的内容, 点“Add Key”
,你就应该看到曾经增加的 Key:
第二步:创立一个 GitHub 账号,增加一个空的仓库。首先,登陆 GitHub,而后,在右上角找到“new repository”按钮,创立一个新的仓库:在 Repository name 填入仓库名,其余放弃默认设置,点击“Create repository”按钮,就胜利地创立了一个新的 Git 仓库:
目前,在 GitHub 上的这个仓库还是空的,GitHub 通知咱们,能够从这个仓库克隆出新的仓库,也能够把一个已有的本地仓库与之关联,而后,把本地仓库的内容推送到 GitHub 仓库。
当初,咱们依据 GitHub 的提醒,在本地的仓库下运行命令:git remote add origin + ssh 链接
应用命令 git push -u origin master
将内容推送下来。
留神:查看 git 的配置文件的邮箱还有用户名还有 URL 是否正确。能力进行下一步操作。
要关联一个近程库,应用命令 git remote add origin git@server-name:path/repo-name.git
;关联后,应用命令git push -u origin master
第一次推送 master 分支的所有内容;尔后,每次本地提交后,只有有必要,就能够应用命令 git push origin master
推送最新批改
十、从近程库克隆
要克隆一个仓库,首先必须晓得仓库的地址,而后应用 git clone+ ssh 链接
命令克隆。
Git 反对多种协定,包含 https,但通过 ssh 反对的原生 git 协定速度最快。
十一、创立与分支(Git 激励大量应用分支)
查看分支:git branch
创立分支:git branch <name>
切换分支:git checkout <name>
创立 + 切换分支:git checkout -b <name>
合并某分支到以后分支:git merge <name>
删除分支:git branch -d <name>
十二、解决抵触
当 Git 无奈主动合并分支时,就必须首先解决抵触。解决抵触后,再提交,合并实现。解决抵触就是把 Git 合并失败的文件手动编辑为咱们心愿的内容,再提交。用 git log --graph
命令能够看到分支合并图。
十三、分支管理策略
筹备合并 dev 分支,请留神 --no-ff
参数,示意 禁用 Fast forward
,git merge --no-ff -m "merge with no-ff" dev
因为本次合并要创立一个新的 commit,所以加上 - m 参数,把 commit 形容写进去。
十四、bug 分支
修复 bug 时,咱们会通过创立新的 bug 分支进行修复,而后合并,最初删除;当手头工作没有实现时,先把工作现场 git stash
一下,而后去修复 bug,修复后,再git stash pop
,回到工作现场。
十五、feature 分支
开发一个 新 feature
,最好新建一个分支;如果要抛弃一 个没有被合并过的分支,能够通过 git branch -D <name>
强行删除。
十六、多人合作
查看近程库信息,应用git remote -v
;
本地新建的分支如果不推送到近程,对其他人就是不可见的;
从本地推送分支,应用 git push origin branch-name
,如果推送失败,先用git pull
抓取近程的新提交;
在本地创立和近程分支对应的分支,应用git checkout -b branch-name origin/branch-name
,本地和近程分支的名称最好统一;
建设本地分支和近程分支的关联,应用git branch --set-upstream branch-name origin/branch-name
;
从近程抓取分支,应用git pull
,如果有抵触,要先解决抵触。
十七、创立标签
命令 git tag <tagname>
用于新建一个标签,默认为 HEAD,也能够指定一个commit id
;
命令 git tag -a <tagname> -m "blablabla..."
能够指定标签信息;
命令 git tag
能够查看所有标签
用命令 git show <tagname>
能够看到阐明文字
留神:标签总是和某个 commit
挂钩。如果这个 commit
既呈现在 master
分支,又呈现在 dev
分支,那么在这两个分支上都能够看到这个标签。
十八、操作标签
命令 git push origin <tagname>
能够推送一个本地标签;
命令 git push origin --tags
能够推送全副未推送过的本地标签;
命令 git tag -d <tagname>
能够删除一个本地标签;
命令 git push origin :refs/tags/<tagname>
能够删除一个近程标签。最初总结一下 Git 的常用命令:
mkdir
XX (创立一个空目录 XX 指目录名)pwd
显示当前目录的门路。git init
把以后的目录变成能够治理的 git 仓库,生成暗藏.git 文件。git add XX
把 xx 文件增加到暂存区去。git commit –m“XX”
提交文件 XX 是提交的正文。git status
查看仓库状态git diff XX
查看 XX 文件批改了那些内容git log
查看历史记录git reset --hard HEAD^
或者git reset --hard HEAD~
回退到上一个版本 (应用
git reset –hard commit_id
回退到 commit_id 的指定版本 )cat XX
查看 XX 文件内容git reflog
查看历史记录的版本号 idgit checkout -- XX
把 XX 文件在工作区的批改全副撤销。git rm XX
删除 XX 文件git remote add origin + SSH 链接
关联一个近程库git push –u
(第一次要用 -u 当前不须要)origin maste
r 把以后 master 分支推送到近程库git clone + SSH 链接
从近程库中克隆git checkout –b dev
创立 dev 分支 并切换到 dev 分支上git branch
查看以后所有的分支git checkout master
切换回 master 分支git merge dev
在以后的分支上合并 dev 分支git branch –d dev
删除 dev 分支git branch name
创立分支git fecth
手动拉取近程仓库更新的信息git stash
把以后的工作暗藏起来 等当前复原现场后持续工作git stash list
查看所有被暗藏的文件列表git stash apply
复原被暗藏的文件,然而内容不删除git stash drop
删除文件git stash pop
复原文件的同时 也删除文件git remote
查看近程库的信息git remote –v
查看近程库的详细信息git push -u origin/master
Git 将会强制提交到master
分支上git --amend
简略地来说,能够了解成对最初一次提交做修改。< 前提是以后最初一次提交没有merge
>
参考文献
- Git 教程 – 廖雪峰的官方网站 https://www.liaoxuefeng.com/wiki/896043488029600
如果你感觉文章还不错,记得 ”点赞关注“
关注我的微信公众号【加班猿】能够获取更多内容