本文参考廖雪峰的git教程编写
Git,据说是世界上最好的分布式版本控制系统
下载安装:
https://git-scm.com/download/
从开始菜单或者任意目录右击打开Git Bash
用户设置:
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
找个合适的目录打开Git Bash,将目录变成Git可以管理的仓库:
git init
这个时候在当前目录下会出现一个.git目录,这个目录就是git用来跟踪管理版本库的,并且该目录是由git管理的,一般情况下不需要手动修改这个目录中的文件。
SSH设置:
ssh-keygen -t rsa -C "youremail@example.com"
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
访问http://120.26.206.23/profile/keys
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。
工作区:
在电脑中能看到的目录就是工作区
版本库:
工作区有一个隐藏目录.git,这个目录是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。(包括自己创建的其它分支和指向分支的指针)
举例:
运行git status,
$ git status
On branch master
Initial commit
nothing to commit (create/copy files and use "git add" to track)
这时会发现没有内容被改变。
在当前的git目录中创建一个test.txt,接着运行git status,
$ git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
test.txt
nothing added to commit but untracked files present (use "git add" to track)
Git非常清楚地告诉我们,readme.txt被修改了,而LICENSE还从来没有被添加过,所以它的状态是Untracked。
接着test.txt就存在于工作区,然后运行git add test.txt,add命令就是把所有的修改提交到暂存区(stage)。
然后执行git commit -m "add test.txt"。
commit命令会把暂存区所有的内容提交到当前的分支(master)。
一旦提交之后在运行git status,就会发现工作区又变得干净了,当前没有文件被修改,暂存区也是干净的。
在这里务必要搞清楚工作区,暂存区和版本库的概念。如果看一遍没有搞清楚,可以多看几遍,或者谷歌其它资料脑补。
每次修改文件后一定要记得先add到暂存区,然后再commit,才能正确的把对文件的修改提交到版本库。
查看工作区内容的改变:
git status
将工作区的改变提交到暂存区:
git add ...
git add -A 提交所有更新
将暂存区的改变提交到版本库:
git commit -m ""
查看文件之间的变化:
git diff ...
git diff 版本号 -- file
git diff HEAD -- file(查看工作区和版本库里面最新版本的区别)
将本地版本库内容导出到工作空间(.或者*代表全部文件):
git checkout -- file
git checkout -- *
撤销工作区的修改
git checkout -- file
命令git checkout -- file,就是把file文件在工作区的修改全部撤销,这里有两种情况:
一种是file自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是file已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
将提交到暂存区的修改退回到工作区
git reset HEAD file
删除文件
删除文件系统中的file
git rm file
git commit -m "delete file"
这会从版本库删除file
版本回退
git reset --hard 版本号
关联远程库:
git remote add origin git@120.26.206.23:micromall/web-java.git
克隆远程仓库
git clone git@120.26.206.23:micromall/web-java.git
查看远程库信息
git remote
git remote -v
拉取远程库的rongze分支到本地的master:
git pull origin rongze:master
推送本地master改变到远程rongze分支:
git push origin master:rongze
查看git命令历史:
git reflog
分支管理
分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。
现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。
创建分支
git branch rogze
git checkout -b rongze
-b表示创建并且切换到rongze分支
等价于git branch rongze,git checkout rongze
查看分支
git branch
该命令会列出所有分支,当前分支以*标记
切换分支
git checkout rongze
合并分支
git merge rongze
合并当前分支和指定分支
删除分支
git branch -d rongze
git branch -D rongze
查看分支合并情况
git log --graph --pretty=oneline --abbrev-commit
普通模式合并分支
git merge --no-ff -m "merge with no-ff" dev
通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
存储工作现场
git stash
可以存储当前工作现场
$ git stash
Saved working directory and index state WIP on dev: 6224937 add merge
HEAD is now at 6224937 add merge
查看stash
git stash list
$ git stash list
stash@{0}: WIP on dev: 6224937 add merge
stash@{1}: WIP on dev: 6224938 add merge
恢复工作现场
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了;
你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:git stash apply stash@{0}
创建标签
发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。
切换到需要打标签的分支,运行git tag tagnam,这样就标签就打好了。
用git tag就可以查看所有标签。
标签是默认打在最新提交的commit上的。
如果需要给之前的版本打标签,就运行git tag tagname 版本号
git tag -a tagname -m "..." ,可以指定标签信息。
查看标签
git show tagname
删除标签
git tag -d tagname
删除远程标签
git tag -d tagname,首先删除一个本地标签
git push origin :refs/tags/tagname,删除远程标签
推动标签到远程
git push origin tagname
git push origin --tags可以推送全部未推送过的本地标签
忽略特殊文件
有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们。
在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
忽略文件的原则是:
忽略操作系统自动生成的文件,比如缩略图等;
忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
一个实例的.gitignore文件,内容如下:
# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build
# My configurations:
db.ini
deploy_key_rsa
使用github
首先,登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容(该文件在用户文件夹下的.ssh文件夹内)。
然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库。
在Repository name填入test,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库。
然后在本地运行git remote add origin git@github.com:414011733/test.git,记住要把414011733替换成自己的github账户名
接着运行git push -u origin master,将本地的master推送到github,-u参数会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
分享到:
相关推荐
Git 入门教程 Git 是目前世界上最先进的分布式版本控制系统,由 Linus 在 2005 年创建。 Git 的诞生离不开 Linux 的发展,Linux 系统不断发展,已经成为最大的服务器系统软件了。 Linux 的代码是如何管理的呢?在 ...
【Git入门教程1】 Git是一种分布式版本控制系统,相较于CVS和SVN,它拥有许多显著的优势,这使得酷讯公司选择了Git作为其软件版本管理工具。Git的主要特点包括: 1. **简易初始化**:使用`git init`和`git commit ...
这篇文档是一个Git入门教程,旨在帮助初学者理解基本的Git概念和常用命令。 首先,Git的`branch`管理是其核心特性之一。分支允许开发人员在不同的开发路径上独立工作,而不会相互干扰。创建新分支(`git branch ...
本篇文章将为初学者提供一个简明的Git入门教程,涵盖了Git与SVN的区别、Git分支与流程、以及一些基础命令的使用。 ### Git与SVN的区别 首先,我们需要了解Git与另一款常用的集中式版本控制系统SVN的主要差异。SVN...
Git 入门教程(任务)
### 超级简单的Git入门教程 #### 一、Git 是什么? Git 是一款非常流行的分布式版本控制系统。它被广泛应用于软件开发项目中,用于跟踪文件的变更历史,并且能够支持多个开发人员协同工作。 **Git 的工作原理/...
根据提供的文件信息,标题与描述均为“附件4-git入门教程1”,这表明文档的主要内容将围绕Git的基础使用展开。Git是一种分布式版本控制系统,被广泛应用于软件开发过程中进行代码管理、版本控制以及协作开发等场景。...
Linux系统中git入门教程 Git起源:Git诞生于一个极富纷争大举创新的年代,Linux内核开源项目有着为数众广的参与者。绝大多数的Linux内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2021年间)。到2021...
Git入门教程[汇编].pdf
Git入门教程 Git是一个强大的开源分布式版本控制系统,由Linux之父Linus Torvalds于2005年创建,初衷是为了更好地管理Linux内核开发。Git的出现弥补了CVS和SVN等集中式版本控制系统的不足,如速度慢、必须联网使用...
本项目是一款以Java为基础的情绪化Git入门教程设计源码,总共有81个文件,其中包含67个XML配置文件、4个Java源文件、3个Markdown文件、2个Git忽略文件、2个属性文件、1个Idea项目文件和1个Maven构建文件。...
将网页版的猴子都能懂的GIT(https://backlog.com/git-tutorial/cn/)转换成PDF格式,并且已添加书签,感谢这个作者编写的教程
git教程