git 日常命令

 
#git stash命令
git stash pop #取回暂存的内容,自动检测合并
git stash list #查看"暂存区"的所有记录
git stash clear #清空"暂存区"
git stash pop #取回暂存区第一个记录
git stash apply 0 #取回"暂存区"指定的记录 编号0
git stash drop 0 #删除"暂存区"指定记录
git reflog #查看包括回滚的历史记录

#回滚到指定版本. 指定版本标识
git reset --hard 9bbb0ef17234d40c941fec0f0408d994b52a5060 

#git branch 命令
git branch #查看分支
git branch dev1 #创建新分支dev1 即拷贝当前所有代码到新分支
git checkout dev1 #进入dev1分支
git checkout master #回到主分支 
git branch bug #创建新分支bug, 然后修复bug完毕.
git checkout master #切回master
git merge bug #把bug分支合并过来. 
git branch -d bug #再删除分支
git checkout dev1 #回到dev1分支,继续开发新功能.

#本地仓库拉取远程仓库(已有本地仓库)
git init
git config --local user.name  "X  "XXX"
git config --local user.email "XX "l "XXX@yhglobal.com"
git remote add origin http://user:passwd@xxx
git pull origin master
git fetch
git checkout -b 11.11 origin/11.11 #拉取远程分支到本地(本地没有此分支)

#本地仓库拉取远程仓库(无本地仓库)
git clone http:user:pwd@xxx 

#拉取远程分支(本地没有此分支)
git checkout -b 本地分支名 origin/远程分支名

#推送本地分支到远程库(远程仓库没有此分支)
git push --set-upstream origin 本地分支名

#修改本地关联的远程仓库
方法一:
git remote rm origin
git remote add origin git@github.com:xxx/xxx.git

方法二:
git remote origin set-url --push <name><newurl>

方法三:
直接修改.git/config文件

#相关远程命令
查看远程仓库
git remote -v

删除远程仓库
git remote rm <name>

#git fetch命令
$ git fetch origin master //从远程的origin仓库的master分支下载代码到本地的origin master
$ git log -p master origin/master //比较本地的仓库和远程的对比
$ git merge master //合并拉取下来的分支和本地分支

$ git fetch origin master:tmp //拉取远程分支到本地分支(新建)
$ git diff tmp //比较本地分支和拉取下来的分支不同
$ git merge tmp //合并分支
$ git branch -d tmp //删除临时拉取下来的tmp分支

# revert和reset区别

 git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit看似达到的效果是一样的,其实完全不同.

 第一:上面我们说的如果你已经push到线上代码库, reset 删除指定commit以后,你git push可能导致一大堆冲突(或git push -f强制推送).但是revert 并不会.

 第二:如果在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里.但是revert 方向提交的commit 并不会出现在历史分支里.

 第三:reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的.





原文地址:https://www.cnblogs.com/shiyuheng/p/9962593.html