查看远程分支
git branch -r
查看本地分支
git branch
删除branchname分支
git branch -d branchname
删除远程branchname分支
git branch -d -r branchname
创建分支
git branch test
切换分支
git checkout test
把分支推到远程分支test
git push origin test
重命名分支
git branch -m oldbranch newbranch
查看commmit历史记录
git log
回退版本
1.只执行了 add commit 但没有 push
git reset [--soft | --mixed | --hard] HEAD~1
--mixed:保留源码,只是将git commit和index 信息回退到了某个版本,相当于把git add 和 git commit -m '' 同时给撤销了(git reset --mixed 等价于 git reset)
--soft: 保留源码,只回退到commit 信息到某个版本.不涉及index的回退,相当于把 git commit -m '' 给撤销了,如果还需要提交,直接commit即可
--hard: 源码也会回退到某个版本,commit和index 都回回退到某个版本.(注意,这种方式是改变本地代码仓库源码)
* git reset --hard HEAD~3 将最新的3次提交全部重置,就像没有提交过一样
*****当然有人在push代码以后,也使用 reset --hard 回退代码到某个版本之前,但是这样会有一个问题,你线上的代码没有变,线上commit,index都没有变,当你把本地代码修改完提交的时候你会发现权是冲突,所以,这种情况你要使用下面的方式*****
2.针对做了 push 操作
eg: git revert [commit-id]
* git revert HEAD 撤销前一次 commit
* git revert HEAD^ 撤销前前一次 commit
* git revert commit (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存。
更新时强制覆盖本地分支( 以下二个命令按顺序执行完)
git fetch --all //只是下载代码到本地,不进行合并操作
git reset --hard origin/分支名如master //把HEAD指向最新下载的版本
本地分支(maste)强制覆盖远程分支(master)
git push --force [远程名] [本地分支名]:[远程分支名]
分支合并(快速合并)
切换的master分支:git checkout master
执行合并操作:git merge develop(合并指定分支到当前分支)
分支合并(普通合并)
切换的master分支:git checkout master
执行合并操作:git merge develop --no-ff(--no-ff表标禁用快速合并)
************分支合并分为快速合并与普通合并两种模式,普通合并,合并后的历史有分支记录,能看出来曾经做过合并,而快速合并就看不出来曾经做过合并************
#主分支 master
#开发分支 develop
#功能分支 feature
#预发布分支 release
#bug 分支 fixbug
#其它分支 other
检查已有的配置信息
git config --list
将文件状态还原为未暂存状态
git rm --cached fileName
文件的三种状态
1.Untracked files (未加入待提交)
2.Changes to be committed (已加入待提交)
3.Changes not staged for commit (文件已修改,还没有入入暂存区)
自动记住密码
git config --global credential.helper store
初始化本地仓库
git remote add origin https://git.oschina.net/kk/me.git
git pull origin master
git push origin master
URL保存用户名密码
http://dear_jiang:[email protected]/username/weixin.git
配置简写命令
在.gitconfig 文件中加入以下代码:
[alias]
co = checkout
ci = commit
st = status
pl = pull
ps = push
dt = difftool
l = log --stat
cp = cherry-pick
ca = commit -a
b = branch
ll = log --pretty=oneline
在目录下右键,选择Git Bash,进入命令行。
键入touch .gitignore便可以在目录下生成一个空的.gitignore文件。
使用vim命令编辑.gitignore文件,添加忽略规则。
git stash暂存的操作
#查看当前状态
git status
#如果有修改,添加修改文件
git add .
#暂存操作
git stash save '本次暂存的标识名字'
查看当前暂存的记录
#查看记录
git stash list
恢复暂存的工作
1.pop命令恢复,恢复后,暂存区域会删除当前的记录’
#恢复指定的暂存工作, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash pop stash@{index}
2.apply命令恢复,恢复后,暂存区域会保留当前的记录’
#恢复指定的暂存工作, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash apply stash@{index}
删除暂存
#删除某个暂存, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash drop stash@{index}
#删除全部暂存
git stash clear
提交常用命令
git status
git stash
git pull --rebase
git stash pop
git commit -a ""
查看项目的分支们(包括本地和远程)
$ git branch -a 例如,$ git branch -a
删除本地分支
$ git branch -d
pull操作
1、将远程指定分支 拉取到 本地指定分支上:
git pull origin <远程分支名>:<本地分支名>
2、将远程指定分支 拉取到 本地当前分支上:
git pull origin <远程分支名>
3、将与本地当前分支同名的远程分支 拉取到 本地当前分支上(需先关联远程分支)
git pull origin
在克隆远程项目的时候,本地分支会自动与远程仓库建立追踪关系,可以使用默认的origin来替代远程仓库名,
所以,我常用的命令就是 git pull origin <远程仓库名>,操作简单,安全可控。
push操作
1、将本地当前分支 推送到 远程指定分支上(注意:pull是远程在前本地在后,push相反):
git push origin <本地分支名>:<远程分支名>
2、将本地当前分支 推送到 与本地当前分支同名的远程分支上(注意:pull是远程在前本地在后,push相反):
git push origin <本地分支名>
3、将本地当前分支 推送到 与本地当前分支同名的远程分支上(需先关联远程分支)
git push origin
同样的,推荐使用第2种方式,git push origin <远程同名分支名>
附:
// 将本地分支与远程同名分支相关联
git push --set-upstream origin <本地分支名>
拉取远程指定分支到本地
$ git clone -b dev https://git.coding.net/jiangxuecheng/test.git
撤销本地修改
$ git reset --hard
查看远程仓库,以及与本地仓库的关系
$ git remote show origin
GIT忽略无效解决办法
有时候发现git提交了一些我们不需要提交的内容,这时候第一反应是加个忽略:
https://github.com/github/gitignore
宇宙神器VS:
https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
结果忽略列表加好了,操作却没有达到预期的效果,原因是:.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的;所以加好后,要对本地缓存进行处理,并且重新提交移除远方的git内容。git操作命令如下:
1 git rm -r --cached .
2 git add .
3 git commit -a -m"update .gitignore"
强制覆盖远分支
git push origin develop -f