乐趣区

关于git:什么作为程序员你都工作了还不会用Git

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 了, 有时候共事 / 主管问你改了什么问题,你改了挺多不记得能够先 statusdiff一下能够看到咱们批改了那些文件增删了那些内容

 git status
 git diff


4、写好之后就能够先 git addgit 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_rsaid_rsa.pub这两个文件,如果曾经有了,可间接跳到下一步。如果没有,关上 Shell(Windows 下关上 Git Bash),创立 SSH Key:

$ssh-keygen -t rsa -C "youremail@example.com"

你须要把邮件地址换成你本人的邮件地址,而后一路回车,应用默认值即可,因为这个 Key 也不是用于军事目标,所以也无需设置明码。

如果一切顺利的话,能够在用户主目录里找到.ssh 目录,外面有 id_rsaid_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 forwardgit 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 查看历史记录的版本号 id
  • git checkout -- XX 把 XX 文件在工作区的批改全副撤销。
  • git rm XX 删除 XX 文件
  • git remote add origin + SSH 链接 关联一个近程库
  • git push –u(第一次要用 -u 当前不须要) origin master 把以后 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>

参考文献

  1. Git 教程 – 廖雪峰的官方网站 https://www.liaoxuefeng.com/wiki/896043488029600

如果你感觉文章还不错,记得 ”点赞关注

关注我的微信公众号【加班猿】能够获取更多内容

退出移动版