在windows上安装git
前言:在介绍git前,先说下git的原理
git是分为三部分,一部分是你自己的文件(工作区),另外一个是缓存区,最后一个是本地库。当你修改了自己的文件后,你会git add xx将修改保存到缓存区,然后再用commit推送修改到本地库中,git push 将本地仓库修改推送到服务器上的仓库中
-
在Windows上使用Git,可以从Git官网直接下载安装程序
-
安装完成后,还需要最后一步设置,在命令行输入:
git config --global user.name"Your Name"
git config --global user.email"email@example.com"
-
通过
git init
命令把这个目录变成Git可以管理的仓库
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
如果你没有看到.git目录,那是因为这个目录默认是隐藏的
-
拉取代码
通过git pull
命令拉取代码
git pull
令用于从另一个存储库或本地分支获取并集成(整合)。git pull命令的作用是:取回远程主机某个分支的更新,再与本地的指定分支合并,它的完整格式稍稍有点复杂
git pull <远程主机名> <远程分支名>:<本地分支名>
相当于是从远程获取最新版本并merge到本地
-
新增文件
通过git add
命令新增文件
git add
命令分为三种,分别为git add .
,git add -u
,git add -A
git add .
:他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。
git add -u
:他仅监控已经被add的文件(即tracked file),他会将被修改的文件(包括被删除的文件)提交到暂存区。add -u 不会提交新文件(untracked file)。(git add --update的缩写)
git add -A
:是上面两个功能的合集(git add --all的缩写),包括新增,修改,删除的所有文件
-
提交文件
git commit -m '提交的问题描述'
将缓存区中的文件推送到本地git仓库中
-
推送到远程主机
git push <远程主机名> <本地分支名>:<远程分支名>
-
文件从暂存区回退到工作区,版本库回退
git reset HEAD filename
:回退文件,将文件从暂存区回退到工作区,也可以使用 git reset filename
git reset HEAD^
:回退版本,一个^表示一个版本,可以多个,另外也可以使用 git reset HEAD~n这种形式。
-
查看git状态,看有哪些文件被修改了,但是还没有提交
通过命令git status
可以看到当前版本的状态,但是看不到具体修改了哪些内容,如果想看到具体修改了哪些内容,需要通过命令git diff
来查看
-
查看提交日志
通过命令git log
查看提交日志,加上参数--pretty=oneline
后,每个提交记录会显示在一行之中
git log --pretty=oneline
-
查看历史提交命令
通过命令git reflog
查看历史提交命令
-
git checkout -- file
丢弃工作区的修改
命令git checkout -- file
的作用就是,把文件file再工作区的修改全部撤销,这里有两种情况,
一种是文件file自修改后还没有放到缓存区,撤销修改后就回到和版本库一模一样的状态;
一种是文件file已经添加到缓存区,又作了修改,现在,撤销修改就回到添加到缓存区后的状态;
总之,就是让这个文件回到最近一次git commit
或git add
时的状态。
-
git rm
版本库中删除文件
git rm file
,并且git commit
,这样,文件就从版本库中被删除了
-
关于分支的命令
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
-
git stash
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场git stash
一下,然后去修复bug,修复后,再git stash pop
,回到工作现场
-
git tag
命令git tag <name>
用于新建一个标签,默认为HEAD
,也可以指定一个commit id
git tag -a <tagname> -m "message"
可以指定标签信息
git tag -s <tagname> -m "message"
可以用PGP签名标签
命令git tag
可以查看所有标签
命令git push origin <tagname>
可以推送一个本地标签
命令git push origin --tags
可以推送全部未推送过的本地标签
命令git tag -d <tagname>
可以删除一个本地标签
命令git push origin :refs/tags/<tagname>
可以删除一个远程标签