git命令

一、Git与SVN的对比

1)Git是分布式的SCM,SVN是集中式的。
2)Git每个历史版本存储完整的文件,SVN存储文件差异。
3)Git可离线完成大部分操作,SVN则依赖于网络。
4)Git有着更优雅的分支和合并实现。
5)Git有更强的撤销修改和修改历史版本的能力。
6)Git速度更快,效率更高。

二、Git安装与简单配置

三、Git命令

查看版本  git  --version

查看计算机里有哪些git版本 并选择您想使用的版本

查看计算机里有哪些git版本which -a git

配置.bash_profile文件,选择自己需要的版本 vim .bash_profile

加入需要制定环境相对路径   export PATH '/user/local/git/bin:$PATH'

 编辑过后 重新载入 base_profile 

配置自己的git 信息

配置自己的用户名 git config --global user.name xud

配置自己的用户邮箱 git config --global user.email xud@123.com

git配置的三个级别

system 针对于一个系统   <  global 针对于一个用户  <  local 针对于一个仓库

查看git文档  

git config --help

git help config

重命名git 命令

git config --global alias.co checkout

git config --global alias.br branch

git config --global alias.st status

git config --global alias.ci commit

初始化一个git仓库

git init git_test    创建了一个叫git_test 的仓库,并在你制定的目录下边建立了一个git_test文件夹。同时在文件夹中生成了.git

git init --bare git_bare_test  生成一个裸的仓库,它不带.git文件,也就是不带工作区。

git clone

gi clone http://github.com/ypsc.git

Git仓库的三个区域

working directory:工作区

staging area:暂存区

history repository:历史仓库

Git工作区直接跟暂存区打交道暂存区跟版本库打交道

从工作区中添加内容到暂存区

将暂存区的内容提交到版本库

从版本库中检出内容到工作区

git add 主要用于把我们要提交的文件信息添加到暂存区中

git add -u  把所有tracked文件中被修改过或已删除文件的信息添加到暂存区。它不会处理untracted的文件

git add -A 表示把所有tracked文件中被修改过或已删除文件和所有untracted的文件信息添加到暂存区

git add -i 查看所有修改过或已删除文件但没有提交的文件

git add . 添加所有文件

git commmit:把暂存区内容添加到版本仓库中

git commit -m '提交的问题描述'

git status 查看工作区、暂存区和版本库的差异情况

git  rm  在git中我们可以通过git rm命令把一个文件删除,并把它从git的仓库管理系统中移除。但是最后要之心git commit 才真正提交到git仓库中

git rm  -a

git commit -m '删除了一个文件'

删除暂存区中的a文件,要用–cached参数

git rm --cached a

git mv:git文件重命名或移动路径时使用命令

git mv a c 将 a文件命名为c文件

gitignore:把不需要跟踪的文件添加到这个文件中就可以避免跟踪了。在这个文件中可以使用通配符。

有些时候文件夹里没有这个文件,你可以自己手动建一个.gitignore文件。

四、Git分支

当我们想给已经上线的一个项目添加一个新功能,可以增加一个新分支,在分支上编写代码,等这个新功能开发完毕之后,再把这个新功能合并到主分支上。

git本地创建分支  git branch test   //创建一个test分支

创建了分支,我们并没有直接到这个分支上,而还是在个主分支上。我们需要用切换分支命令切换到新创建的test分支上

 git branch 不带参数,列出本地已经存在的分支,并且在当前分支前面会加“*”号标记

git branch -r  列出远程分支

git branch -a 列出远程分支和本地分支

重命名分支,如果newbranch名字分支已经存在,则需要使用 -M强制重命名,否则,使用-m进行重命名

git branch -m oldbranch newbranch  

git branch -M old branch newbranch

删除branchname分支

git branch -d /-D branchname

删除远程 branchname分支

git branch -d -r branchname

Git给分支起别名(也叫打标签)

git标签分为两种类型:轻量标签和附注标签。轻量标签是指向提交对象的引用,附注标签则是仓库中的一个独立对象。建议使用附注标签。

创建轻量标签  git tag v0.1.2 -light

创建附注标签 git tag -a v0.1.2 -m '0.1.2'版本

创建轻量标签不需要传递参数,直接制定标签名称即可。
创建附注标签时,参数a即annotated的缩写,制定标签类型,后附标签名。参数m指定标签说明,说明信息会保存在标签对象中。

在学习这个给分支起别名的操作前,我们要会使用一个查看Log日志的命令,用这个命令查出我们现在的Git情况,然后再给它起名。

查看版本历史示意图:

git log --oneline --decorate --graph  --all

git tag 'v0'  51bcb0d

我们可以起个别名 git config --global alias.log "git log --oneline --decorate --graph  --all"

就可以用 git log 来查看日志了

分支之间的切换

git chekout daily //切换到daily分支上

切换分支前保存本地的修改和暂存区的修改

当我们在一个分支上作了修改,提交到了暂存区,但是没有提交到版本库中。这时我们要切换分支(比如切换到master分支 git checkout master),系统会报错,提示我们暂存区有文件没有提交。如果我们还不想提交文件,这时我们就可以使用下边的命令把暂存区的文件保存起来

git stash save -a  'stash1'  //把当前分支的内容藏起来

git stash list  //可以查看那我们藏匿的内容

git stash pop --index stash@{0}

我们这时候用git status命令查看一下git状态,会发现我们藏匿的东西已经还原回去了。这条命令不仅恢复了藏匿的内容,并删除了藏匿区的内容,由多个动作组成。如果我们只想还原暂存区的藏匿内容,但并不删除藏匿区内容的话,可以使用下边这条命令。

本地合并分支

git merge branchName

merge分两种

1)fast-farword merge

master分支衍生出来的

2)non-fast-farword merge

三方合并分支

git checkout:还原工作区

git checkout --master.txt  //用它来还原我们的工作区 用暂存区的内容覆盖工作区的内容

git reset:还原暂存区

当我们把工作区的内容用 git add .提交到暂存区后,我们可以使用git Reset fileName 命令来还原暂存区的内容,实例命令如下

git reset master.txt  //输入此命令后,可以用git status 查看Git状态,发现已经没有差别了

git checkout  INITIAL_COMMIT --master.txt    //还原其他历史版本信    //INITIAL_COMMIT是一个版本的引用

git clean:清除没有跟踪的文件

git clean -n 查看我们没有跟踪和可移除的工作区内容,也就是将要被删除的内容

git clean -f 查看后我们可以下边的命令删除内容

git clean -n -x  //用git clean 命令查看将要被移除.gitignore指定的不提交文件

git clean -X -f  //用git clean -X -f 密令删除.gitignore,注意这里的X是大写的X

git revert :产生新的提交,覆盖以前的提交

git revert HEAD

git远程写作的主要命令

我们在学习远程仓库命令之前要先学会基本的Github操作,然后在Github上新建一个仓库。

我们先下载一个Github的桌面应用,下载地址为:http://desktop.github.com

下载后我们填写好用户名和密码,之后就可以用github的Git Shell来执行这些命令了

git clone:克隆远端仓库到本地

gi clone http://github.com/ypsc.git

git fetch:获取远端仓库的所有内容,包括所有分支内容

先进入本地仓库目录,然后用git fetch命令来获取远端仓库的所有内容。相当于是从远程获取最新版本到本地,不会自动merge

git fetch origin master

git log -p master .origin/master

git merge origin/master

首先从远程的origin的master主分支下载最新的版本到origin/master分支上,然后比较本地的master分支和origin/master分支的差别,最后进行合并。

git fetch origin master:tmp

git diff tmp

git merge tmp

从远端获取最新的版本到本地的tmp分支上,之后进行比较合并

 git pull,是git fetch 和 git merge的操作合并

git pull origin master

上述命令其实相当于git fetch 和git merge,在实际使用中,git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并

git push:命令御用将本地分支的更新,推送到远程仓库主机上。

git push <远程主机名><本地分之名>:<远程分支名>

分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,而git push 是<本地分支>:<远程分支>.
如果省略本地分支名,则表示将本地分支推送与之存在“追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。

git push origin daily

上面命令表示,将本地分daily分支推送到origin筑基的master分支。如果后者不存在,则会被新建。
如果省略本地分支名,则表示删除指定远程分支,因为这等同于推送一个空的本地分支到远程分支。

git push origin :daily  ==  git push origin  --delete daily

上面命令表示删除origin主机的master分支。
如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略

git push origin 

上面命令表示,将当前分支推送到origin主机的对应分支。
如果当前分支只是一个追踪分支,那么主机名都可以省略

git push 

如果我们想要推送一个tag的话,可以使用下边的命令:

git push --tags

用push删除远程分支

git push --delete origin feacher

本文摘自网上git命令大全。 

 

posted @ 2018-08-08 09:34  徐念念  阅读(188)  评论(0编辑  收藏  举报