git操作

git命令

1、配置

1. Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。
	/etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。
	~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。
	配置用户名称和电子邮件
	$ git config --global user.name "runoob"
	$ git config --global user.email test@runoob.com
	 如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。
	 如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。 

2. 差异分析工具

	还有一个比较常用的是,在解决合并冲突时使用哪种差异分析工具。比如要改用 vimdiff 的话: git config --global merge.tool vimdiff
3. 查看配置信息
	git config --list

2、创建仓库

1. git init Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令.
2. git clone 我们使用 git clone 从现有 Git 仓库中拷贝项目(类似 svn checkout)。 
	git clone <repo>
	git clone <repo> <directory>
3. 
	几种效果等价的git clone写法:
	git clone http://github.com/CosmosHua/locate new
	git clone http://github.com/CosmosHua/locate.git new

3、

1. git add 命令可将该文件添加到缓存;
2. git status <-s>命令用于查看项目的当前状态,查看在你上次提交之后是否有修改;-s 获得简短输出
3. git diff
	执行 git diff 来查看执行 git status 的结果的详细信息。
	git diff 命令显示已写入缓存与已修改但尚未写入缓存的改动的区别。git diff 有两个主要的应用场景。		
	尚未缓存的改动:git diff
	查看已缓存的改动: git diff --cached
	查看已缓存的与未缓存的所有改动:git diff HEAD
	显示摘要而非整个 diff:git diff --stat
4. git commit 将缓存区内容添加到仓库中;
	如果你觉得 git add 提交缓存的流程太过繁琐,Git 也允许你用 -a 选项跳过这一步
		git commit -a	提交不添加注释
		git commit -am	提交并添加注释
5. git reset HEAD	用于取消已缓存的内容
6. git rm <file>	 Git 中移除某个文件,就必须要从已跟踪文件清单中移除
	git rm -f <file>	如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
	git rm --cached <file>	如果把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可
	git rm –r *		递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件
	最后使用 git commit -m "注释", git push  即可删除;
7. 回滚远程仓库
	1. git revert HEAD
	2. git push origin master

4、Git 分支管理

1. git branch (branchname)	创建分支命令
2. git merge	合并分支命令
3. git checkout (branch) 	切换到我们要修改的分支。
4. git checkout -b (branchname) 命令来创建新分支并立即切换到该分支下
5. git branch -d (branchname)	删除分支

5、Git 查看提交历史

1. git log	
2. git log -oneline		可以用 --oneline 选项来查看历史记录的简洁的版本, --graph 选项,查看历史中什么时候出现了分支、合并

6、撤销、回滚

场景一:糟了,我刚把不想要的代码,commit到本地仓库中了,但是还没有做push操作!

场景二:彻底完了,刚线上更新的代码出现问题了,需要还原这次提交的代码!

场景三:刚才我发现之前的某次提交太愚蠢了,现在想要干掉它!

撤销上述场景一,在未进行git push前的所有操作,都是在“本地仓库”中执行的。我们暂且将“本地仓库”的代码还原操作叫做“撤销”!

情况一:文件被修改了,但未执行git add操作(working tree内撤销)

git checkout fileName
git checkout .

情况二:同时对多个文件执行了git add操作,但本次只想提交其中一部分文件

$ git add *
$ git status
# 取消暂存
$ git reset HEAD <filename>

情况三:文件执行了git add操作,但想撤销对其的修改(index内回滚)

# 取消暂存
git reset HEAD fileName
# 撤销修改
git checkout fileName

情况四:修改的文件已被git commit,但想再次修改不再产生新的Commit

# 修改最后一次提交 
$ git add sample.txt
$ git commit --amend -m "说明"

情况五:已在本地进行了多次git commit操作,现在想撤销到其中某次Commit

git reset [--hard|soft|mixed|merge|keep] [commit|HEAD]

具体参数和使用说明,请查看:Git Pro深入浅出(二)中的重置揭秘部分
回滚

上述场景二,已进行git push,即已推送到“远程仓库”中。我们将已被提交到“远程仓库”的代码还原操作叫做“回滚”!注意:对远程仓库做回滚操作是有风险的,需提前做好备份和通知其他团队成员!

如果你每次更新线上,都会打tag,那恭喜你,你可以很快的处理上述场景二的情况

git checkout <tag>

如果你回到当前HEAD指向

git checkout <branch_name>

情况一:撤销指定文件到指定版本

# 查看指定文件的历史版本
git log <filename>
# 回滚到指定commitID
git checkout <commitID> <filename>

情况二:删除最后一次远程提交

方式一:使用revert

git revert HEAD
git push origin master

方式二:使用reset

git reset --hard HEAD^
git push origin master -f

二者区别:

	revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在;
	reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。

情况三:回滚某次提交

# 找到要回滚的commitID
git log
git revert commitID

删除某次提交

git log --oneline -n5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值