git常用命令

下面的命令是我在学习git的时候总结的

#安装初始化
sudo apt-get install git				#git安装
git config --global user.name "Your Name"		#
git config --global user.email "[email protected]"	#

ssh-keygen -t rsa -C "[email protected]"        #生产ssh key,连按三个回车

#基本操作
mkdir learngit				#创建目录
git status				#查看当前目录状态
git init				#初始化目录
touch readme.txt
git add readme.txt			#添加到缓冲区
git conmmit -m "add readme"		#提交到git仓库

git diff readme.txt			#查看修改内容
git diff HEAD -- readme.txt 		#查看工作区和版本库里面最新版本的区别

git log					#查看版本日志,可以加参数--pretty=oneline输入更少内容
git reset --hard HEAD^			#当前版本HEAD回退到上一个版本HEAD^,当前版本为HEAD,上一个版本为HEAD^,上一个版本为HEAD^^,上20版本为HEAD~20
git reset --hard 3628164		#回退到id为3628164的版本
git reflog				#用来记录你的每一次命令,可以查看到每次操作的版本id

工作区:刚创建的文件
暂存区:使用add添加到暂存区
分支(master):使用commit提交到分支

git checkout -- readme.txt		#可以丢弃工作区的修改
git reset HEAD readme.txt		#撤销暂存区的修改

#删除操作
git rm test.txt				#删除文件
git commit -m "remove test.txt"		#删除后提交
git checkout -- test.txt		#误删的文件恢复到最新版本,当粗鲁地使用系统rm命令可以使用这个命令
注:git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。 

#远程仓库
ssh-keygen -t rsa -C "[email protected]"
#创建本地密钥,一路回车便可,之后在~/.ssh/下生成两个文件id_rsa和id_rsa.pub两个文件,
#这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人
#将id_rsa.pub中的内容添加到github中便可

git remote -v				#查看远程库信息
git remote rm origin			#删除远程关联
git remote add origin [email protected]:nobsu/demo1.git  #关联本地仓库到远程仓库
git push -u origin master			      #推送到远程仓库,第一次加上-u参数

#分支
git branch				#查看所有分支
git checkout -b dev			#创建并切换到dev分支,相当于下面两条命令
git branch dev				#创建dev分支
git checkout dev			#切换当前分支到dev分支

git push origin dev			#推送dev分支
git merge dev				#将dev分支合并到当前分支(master)
git merge --no-ff -m "merged bug fix 101" issue-101    #当前分支为master,合并在线分支,加上--no-ff可以保存时间戳,
git branch -d dev 			#删除dev分支

git fetch                                                    #将远程分支信息获取到本地
git checkout -b local-branchname origin/remote_branchname    #将远程分支映射到本地命名为local-branchname的分支,即基于远程分支创建分支√


git branch -a                            #查看远程分支

#下面两步删除一个远程分支
git branch -r -d origin/branch-name    #删除本地对远程track
git push origin :branch-name           #把一个空分支push到server上,相当于删除该分支

#最后删除本地分支
git branch -d dev


#解决冲突
$ git merge feature1
	Auto-merging readme.txt
	CONFLICT (content): Merge conflict in readme.txt
	Automatic merge failed; fix conflicts and then commit the result.
合并readme.txt文件时出现了冲突,Git告诉我们,readme.txt文件存在冲突,必须手动解决冲突后再提交。git status也可以告诉我们冲突的文件

#手动解决后提交
$ git log --graph --pretty=oneline --abbrev-commit	#图形化查看分支合并情况
$ git branch -d feature1				#解决冲突后删除分支

git checkout -b dev origin/dev		#创建远程origin的dev分支到本地
git pull				#从远程拉取更新本地分支
git branch --set-upstream dev origin/dev#指定本地dev分支与远程origin/dev分支的链接,当pull提示“no tracking information”时使用

#保存现场
git stash	                        #保存现场,可以把没有commit的暂存区保存起来
git checkout otherbr	                #修复其他问题
git checkout stashbr	                #切回之前的分支,来恢复现场
git stash list			        #查看工作现场

git stash apply			        #回复工作现场
git stash drop			        #删除工作现场

git stash pop			        #恢复并删除工作现场,相当于上面两条命令
git stash apply stash@{0}	        #多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash

#标签
git tag					#查看标签
git tag v1.0				#打标签,请在master分支上操作,或添加信息
git tag -a <tagname> -m "blablabla..."
git tag v0.9 6224937			#给指定id提交打标签
git show v0.9				#查看指定标签提交信息
git tag -d v0.1				#删除标签
git push origin v1.0			#推送标签到远程
git push origin --tags			#一次性推送所有标签到远程
git push origin :refs/tags/v0.9		#删除一个远程标签,首先删除本地标签

#一个有用的别名配置git lg
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

[参考文献]

廖雪峰git教程  http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 

你可能感兴趣的:(git常用命令)