- 下面是一些常用的简单命令,后面都有备注
ssh-keygen -t rsa -C "xxx@xx.com" //创建秘钥ssh-key
git clone http://192.168.1.1/xx/xx.git //克隆远程仓库代码
git clone -b dev xxx.git //从远程仓库克隆dev分支的代码到本地分支
git add xx.txt //添加到暂存区
git commit -m '文本新内容' //提交到仓库
git status //查看文件状态
git diff //查看修改了什么
git log //查看历史版本 (如果发现用完 git log后无法退回输入界面 可以用Shift+q回到输入界面)
git reset --hard 882e1e0 //版本回退 "882e1e0"为之前的版本号的前7位
git reflog //查看命令历史 版本回退到哪里了
git checkout -- xx.txt //丢弃工作区的修改(未提交到暂存区) 并可以“一键还原”无论是修改的还是删除的
git reset HEAD xx.txt //丢弃暂存区的修改 然后在用git checkout -- xx.txt 恢复原样
git reset --soft HEAD^ //丢弃暂存区的修改 不删除工作空间代码,撤销commit,不撤销git add 操作
git reset HEAD^ //丢弃暂存区的修改 不删除工作空间改动代码,撤销commit,并且撤销git add操作
git reset HEAD~2 //丢弃暂存区的修改 如果进行了2次commit 都可以撤回
git rm xx.txt //删除文件
git log | grep "^Author: " | awk '{print $2}' | sort | uniq -c | sort -k1,1nr 查看所有提交者及其提交次数,按次数由高到低排序
git clone git@github.com:qxyz/WEBERP.git //从远程仓库克隆到本地分支 (最好本地为空时使用此命令)
git branch //查看分支
git branch 分支名 //创建分支
git checkout 分支名 //切换分支
git checkout -b 分支名 //创建+切换分支
git merge 分支名 //合并某分支到当前分支
git remote -v //查看远程仓库地址
git branch -d 分支名 //删除分支
1、git remote rm origin //删除本地指定的远程地址
2、git remote add //重新添加
- 只更新内容
//只更新内容
1、先输入$ git fetch origin master //把远程仓库的新改动下载到本地分支
2、在输入$ git merge origin/master //和新改动和本地分支合并 (本地不为空时使用此命令)
-
推送到远程仓库
1、先输入$ git remote add origin git@github.com:qxyz/WEBERP.git
2、在输入$ git push -u origin master //-u 是设置默认推送地址 下次推送直接 git push origin
-
总体流程
$ makdir ~/hello-world //创建一个项目hello-world
$ cd ~/hello-world //打开这个项目
$ git init //初始化
$ git add README //更新README文件
$ git commit -m 'first commit' //提交更新,并注释信息“first commit”
$ git remote add origin git@github.com:qxyz/hello-world.git //连接远程github项目
$ git push -u origin master //将本地项目更新到github项目上去
有些基础的朋友已经发现其实这都是常用的命令,但是依然有很多人在使用的时候一如提笔忘字。
在不忙的时候还能查一查,但是工作可没有多少空闲的时间,特别是当你写好代码兴致冲冲开始push时,嗯?发现与另一个同事的代码冲突了,本来就不太熟悉这些命令现在又面临解决冲突,天呐!这真是雪上加霜 心情要糟糕透了!那么面对这种冲突 我们该怎么解决呢?
这才是本文的重点,先看下图:
图中圈红的地方标识dev分支与远程仓库存在冲突,这时无论你如何提交都是不会成功的,解决的唯一方式就是去面对并解决这个冲突
Git已经帮我们想好了该如何解决冲突,这真是太棒了!自从学会了解决冲突我感觉我在使用GIt时浑身充满力量!
步骤一、将我们本地的代码存储到git栈将本地代码恢复到最近的一次提交
$ git stash
步骤二、由于本地代码已经恢复到上一次提交,这时我们可以使用git pull拉取远程代码了
$ git pull
步骤三、将我们刚刚存储在git栈中的代码和本地刚刚拉取的代码进行合并
$ git stash pop
-----------------------------------------------------------------------------------------
到这里已经进入正常的提交流程了,
注意:如果代码存在冲突,需要手动检查冲突的文件,解决之后再提交。
使用 git diff 可以查看冲突的内容
-----------------------------------------------------------------------------------------
步骤四、将代码提交到暂存区
$ git add xx.xx //也可以使用 git add . 代替将所有修改全部暂存
步骤五、
$ git commit -m '本次更新内容'
步骤六、提交到远程仓库
$ git push origin master
-----------------------------------------------------------------------------------------
下面这两个命令是查看git栈存储列表 和 清空git栈,当我们在执行第三步之前切记不要情况了git栈!
-----------------------------------------------------------------------------------------
$ git stash list
$ git stash clean
下面是我成功的截图
追加
//Git在2.23版本之后更新了一个命令:
$ git switch
//该命令取代了之前版本的 git checkout 命令,这是一个切换分支的命令,使用方式如下:
//创建并切换到新的dev分支,可以使用:
$ git switch -c dev
//直接切换到已有的master分支:
$ git switch master
最后说一下git的合并分支操作:
在工作中我们经常会遇到冲突,上面提到使用git stash 来解决
git stash是使用git栈来保存已更新的代码 然后使用 git pull来获取远程仓库的最新代码
之后使用 stash stash pop 恢复工作区的内容达到解决冲突的效果
还有一种方式,那就是使用合并解决冲突,这种方式需要自己先建立一个分支。
例如,我们现在处于dev分支要合并已修改的代码,那么应该这么合并:
//1、建立并切换到tempBranch临时分支 (-b是创建 checkout是切换)
$ git checkout -b tempBranch
//2、使用 add 把所有的更新全部添加到暂存区
$ git add .
//3、提交到本地仓库
$ git commit -m 'xx更新'
//4、切回dev分支
$ git checkout dev
//5、拉取远程仓库最新的代码
$ git pull
//6、合并分支
$ git merge tempBranch
//7、提交到远程仓库dev分支
$ git push origin dev
//完成