git命令

Git和SVN的对比:
1)Git是分布式的,SVN是集中式;
2)Git每个历史版本存储完整的文件,SVN存储文件的差异;
3)Git可离线完成大部分操作,SVN则必须与中央服务器进行网络交互;
4)Git有着优雅的分支和合并功能;
5)Git有着更强的撤销修改和修改版本历史的能力;
6)Git速度更快,效率更好;

Git安装:
CentOS6.5环境:yum install git
下载源码进行编译再安装:自己查阅网络资料

which -a git 查看git的安装位置
git version 查看git的版本

建议大家先在GitHub上面注册一个账号

如何学习Git的命令:git help

添加user.name和user.email
git config --global user.name fyuan925
git config --global user.email fyuan925@gmail.com

得到user.name/user.email
git config user.name
git config user.email

添加一个新的user.name
git config --global --add user.name kgc

得到属性的值
git config user.name
git config --get user.name

得到全局所有属性的值
git config --list --global

删除一个属性,并且是指定属性名进行删除
git config --global --unset user.name kgc

git config --list --global

当只有一个属性值的时候,我们可以在删除时不指定值
git config --global --unset user.name

git config --list --global

git config --global user.name fyuan925
git config --list --global

Git命令的基本使用:
git init 创建仓库
添加一个readme.txt
git status 查看当前版本库的状态
git add filename 使用git add命令告诉git,把该文件添加到仓库
git commit -m ‘comment’ 使用git commit命令告诉git,把文件提交到仓库

将文件提交到仓库,需要两步:
1) add
2) commit

git add 可以反复添加多个
git diff 查看修改的内容
git log 可以查看所有的提交历史记录
git log filename 仅查看指定文件名的提交历史记录
git log --pretty=oneline filename
d085ee8434392d2cf88b48592f29fbeefb0818f7 commit id(版本号) SHA-1 Hash计算出来一个16进制的值

版本回退:
前提:知道当前版本是哪个, HEAD表示当前版本
回退到上一个版本: HEAD^ 一个^就表是前一个版本, 如果N个前版本可以用HEAD~N

回退:git reset --hard HEAD^
回退之后你后悔了又想回到后退之前的那个版本: git reset --hard xxxxxxxxx
xxxxxxxxx  前面可以通过 git log filename

3commit   <== HEAD
2commit
1commit

执行了git reset --hard HEAD^之后
3commit   
2commit  <== HEAD
1commit

git reset:版本穿梭, 可以使用git log查看提交历史,以便确定回退/穿梭到哪个版本 	

git reflog:查看命令历史,以便确定要回到未来/过去的哪个版本

什么是修改:新增一行、修改几个字符、删除一行、新增文件、删除文件
Git管理的是修改,而不是文件

撤销修改:
没有提交到暂存区时,其实就在工作区: git checkout – file
已经提交到暂存区了: 分两步:1)git reset HEAD file 2)git checkout – file

删除文件
手误删除,如何恢复: git checkout – file
真删除版本库的文件:
1) git rm file
2) git commit -m ‘xxx’

Git远程操作之添加远程库
生成ssh:ssh-keygen -t rsa -C ‘XXXX’
在GitHub上设置ssh的公钥

与远程库建立连接
git remote add origin XXX
git push -u origin master
git push 就是把当前分支(master)推送到远程
-u:第一次推送到master分支时,要设置了,后续就不需要再使用-u了

git push origin master

执行get push时出现错误及解决办法:
当执行命令git push -u origin master时报如下错误

解决办法:git remote set-url origin
XXXX,即在网址中添加GitHub的用户名即可。
再执行命令git push -u origin master时,就不会报错

远程库的两种方式
1)先有本地仓库,后有远程仓库
git remote add origin XXX
git push -u origin master
第一次使用-u,后面不再使用

2)先有远程仓库,再clone到本地(最常见的,一般都是先在GitHub上创建仓库,然后开发人员再clone到本地)
git clone xxxxxx
git push -u origin master
第一次使用-u,后面不再使用

Git远程操作之添加远程库具体操作步骤
一、生成ssh,在GitHub上设置公钥
生成ssh:ssh-keygen -t rsa -C ‘XXX’
进入ssh目录:cd ssh
将ssh目录下文件id_rsa.pub里的内容拷贝出来

在GitHub上设置ssh的公钥
1).进入GitHub主页,点击右上角settings

2).选择SSH and GPG keys进行公钥设置

3).点击右上角New SSH key新建一个ssh key,Title自定义,将CentOS中生成的公钥拷贝出来,粘贴到Key中,点击Add SSH key添加ssh key

4).输入GitHub的密码进行验证,点击Confirm password

二、在GitHub上创建仓库
1).点击右上角+,选择New repository新建仓库

2).填写仓库名称,点击Create repository创建仓库

三、与远程库建立连接
git remote add origin XXX
git push -u origin master
git push 就是把当前分支(master)推送到远程
-u:第一次推送到master分支时,要设置了,后续就不需要再使用-u了
git push origin master

执行get push时出现错误及解决办法:
当执行命令git push -u origin master时报如下错误

解决办法:git remote set-url origin
XXX,即在网址中添加GitHub的用户名即可。
再执行命令git push -u origin master时,就不会报错

Git会串成一条时间线,这条时间线就是分支, 默认就是master
HEAD并不是指向提交,而是指向master

v1 ==> v2 ==> v3
|
master
|
HEAD

v1 ==> v2 ==> v3 ==> v4
|
master
|
HEAD

			  			  		  master
			  						|

v1 ==> v2 ==> v3 ==> v4 ==> v5 ==> v6
|
dev
|
HEAD

查看分支:
git branch

  • master
    *表示你当前所处的branch是哪个

git checkout -b dev
-b表示创建并且切换

切换分支: git checkout xxxx

git merge dev 把dev分支合并到当前分支,因为我们当前分支是master,所以就是将dev合并到master

删除分支: git branch -d dev

解决冲突:
feature1 : a.txt AND simple
master : a.txt & simple

			  			  		  master
			  						|

v1 ==> v2 ==> v3 ==> v4 ==> v5 ==> v6
|
feature1
|
HEAD
在master和分支上分别对a.txt做了不同修改之后,合并分支出现以下错误:
git merge feature1
Auto-merging a.txt
CONFLICT (content): Merge conflict in a.txt
Automatic merge failed; fix conflicts and then commit the result.

cat a.txt
a.txt

在master和分支上分别对a.txt做了不同修改之后,a.txt的内容如下:
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1

<<<<<<< ======= >>>>>>>标记出不同分支的内容

git log --graph --pretty=oneline --abbrev-commit

当Git无法自动合并分支时,就必须首先解决冲突,再提交,最后再merge
可以使用git log --graph命令可以看到分支合并图。

分支管理策略:
1)master分支: 代码是稳定的,平时不能在上面干活的,仅仅是用来发布新版本用
2)dev分支:是不稳定的,bug、feature可以创建新的分支进行开发,最后再合并到master即可
bug-id 10000 bug-10000

标签操作总结:
git tag 新建一个标签,默认是HEAD,也可以指定一个commit id
git tag -a -m 'xxxxxx’指定标签信息
git tag 查看所有标签

git tag -d v0.1 删除标签

提交标签到GitHub:git push origin v1.0

如果tag已经推送到远程,要删除远程标签就需要麻烦一点,分2步:
1)删除本地tag: git tag -d v0.9
2)git push origin :refs/tags/v0.9

Git控制台颜色设置
git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto

颜色设置关闭
git config --global color.status false

忽略某些特殊文件不提交
1)只需要在git项目的根目录下创建一个.gitignore
2) 把需要提交的文件或者目录写到.gitignore
3)如果你真正想提交的文件已经被包含在.gitignore里面了,那么就需要使用-f进行强制提交

Git配置别名:
git config --global alias.st status
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.co checkout

配置别名完成之后在什么地方能看到呢?
默认在当前用户的根目录下有一个.gitconfig
cat .gitconfig
[user]
email = fyuan925@gmail.com
name = fyuan925
[color]
diff = auto
status = false
branch = auto
[alias]
st = status
ci = commit
br = branch
co = checkout

知识点总结:
分支管理
场景描述:开发一个新功能,预计一周完成,你三天开发好了70%的代码,但是还没连调,如果此时立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。
分支的诞生:自己在自己的分支上开发,和别人互不影响,开发完成后再合并到master上去即可。

查看分支:git branch
创建分支:git branch
切换分支:git checkout
创建&切换分支:git checkout -b
合并某分支到当前分支:git merge
删除分支:git branch -d

解决冲突时查看分支合并图:git log --graph
Bug分支
Feature分支

标签管理
什么是标签(tag):是版本库的一个快照
发布一个新版本时,通常先在版本库中打一个标签,无论在将来的时候,取出某个标签的版本即可

创建标签:git tag
查看所有标签:git tag
创建带有说明的标签:git tag -a -m
查看标签的说明:git show
删除标签:git tag -d

推送一个本地标签:git push origin
推送全部未推送的本地标签:git push origin --tags
删除一个本地标签:git tag -d
删除一个远程标签:git push origin:refs/tags/

多人协作
开源项目肯定都是很多人参与到社区中,通过协作完成
多人协作常用操作
克隆远程仓库:git clone
查看远程信息:git remove (-v)
解决冲突问题
推送分支:git push origin
创建Pull Request

GitHub常用操作介绍
可以将个人的开源项目放在GitHub中,既可以让别人参与你的项目,你也可以参与到别人的开源项目中去
希望大家能真正参与带自己感兴趣的开源项目中去,做到从开源中来,然后回馈到开源中去
GitHub常用操作:clone、fork、watch、star

GitHub常用操作之博客
相信很多人都有写博客的习惯,免费和收费的都有
近些年,一些程序员开始在github网站上搭建blog。他们既拥有绝对管理权,又享受github带来的便利----不管何时何地,只要向主机提交commit,就能发布新文章
更妙的是,这一切还是免费的,github提供无限流量,世界各地都能访问
使用GitHub搭建博客

GitHub常用操作之组织
除了个人账户外,GitHub还提供被称为组织(Organizations)的账户
组织账户和个人账户一样都有一个用于存放所拥有项目的命名空间,但是许多其他的东西都是不同的
组织账户代表了一组共同拥有多个项目的人,同时也提供一些人具用于对成员进行分组管理
通常,这种账户被用于开源群组(例如:“perl”或者“rails”),或者公司(例如:“google”或者“twitter”)
通过GitHub创建组织

Git其他功能介绍
Git颜色设置
设置颜色:git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto
颜色设置关闭:git config --global color.status false
忽略特殊文件
1)只需要在git项目的根目录下创建一个.gitignore
2) 把需要提交的文件或者目录写到.gitignore
3)如果你真正想提交的文件已经被包含在.gitignore里面了,那么就需要使用-f进行强制提交
设置常用命名别名
git config --global alias.st status

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值