初始化一个版本库
git init
Git Branch
查看所有分支以及当前所处的分支
git branch
查看所有分支,包括本地分支和远程分支
git branch -a
查看所有分支,包括本地分支和远程分支,以及各个分支最后一次的提交信息和提交id显示出来
git branch -av
创建分支
git branch new_branch
切换分支
git checkout new_branch
也可以使用如下命令切换回上一个分支
git checkout -
删除分支,但是不能删除当前所处分支
git branch -d new_branch
删除没有合并过的分支
git branch -D new_branch
创建分支并切换分支
git checkout -b new_branch
从某一个commit创建分支
git checkout commit_id -b new_branch
通过git checkout -b develop origin/develop,将新建一个本地分支develop与,将通过git pull拉取到本地的远程分支develop,也就是origin/develop做一个关联
git checkout -b develop origin/develop
#当前命令会在本地穿件一个develop分支和远程 origin/develop分支做关联
也可以通过如下命令:
git checkout --track origin/develop
#当前这个命令会在本地起一个和远程分支名相同的分支名称。
.gitignore 文件
.gitignore里面忽略了git要提交的文件或者文件夹,可以使用通配符,此文件位置和.git文件同级
合并分支
将new_branch分支合并到当前分支上
git merge new_branch
显示当前所处分支的最新的一次提交
git branch -v
git stash 暂存命令
git stash 将工作区已经修改的内容临时暂存到stash
或者使用带有说明信息的命令
git stash save '修改了了xxx'
git stash list
展示所有stash 列表
git stash apply stash@{0}
恢复stash,但是stash内容不删除,需要通过git stash drop stash@{0} 手动删除
git stash pop
恢复的同时也将stash内容删除
分支的进阶与版本回退
- 合并时加上 --no-ff 参数回禁用Fast-Forward模式,这样子会多出一个commit id
如
git merge --no-ff dev
以图形方式查看log
git log --graph
查看远程上某个分支的log,以下三种写法都能达到同样的效果,前两种写法最终都会转换成第三种写法
git log origin/master
git log remote/orign/master
git log refs/remote/origin/master
添加当前目录下所有文件到暂存区并提交
git commit -am 'commit msg'
git版本回退
git reset --hard HEAD^
git reset --hard HEAD~1
git reset --hard commit_id
查看操作日志,即使回退到之前版本,当前命令也可以看到回退之前的版本
git reflog
checkout进阶
# 放弃file文件的更改,使之与暂存区的最近一次的更改保持一致
git chekcout --file
将之前添加到暂存区的更改从暂存区移出到工作区
git reset HEAD test.txt
修改分支名称
git branch -m master master2
git tag与diff
创建轻量级标签
git tag v1.0.1
创建一个带有附注的标签
git tag -a v1.0.2 -m 'release version'
删除标签
git tag -d tag_name
查找tag,
# 查找以v开头的标签
git tag -l 'v*'
将本地标签推送到远程上
git push origin tag_name
如:将本地的v1.0和v2.0两个标签都推送到远程上
git push origin v1.0 v2.0
将本地所有未推送的标签一次性全部推送到远程上
git push origin --tags
删除远程上的标签
# 删除远程上的标签,可以将一个空的标签推送到远程服务器上的v6.0标签上
git push origin :/refs/tags/v6.0
或者
git push origin --delete tag v6.0
推送标签的完整写法,冒号前表示的是源标签,也就是本地标签,冒号之后的表示的目标标签,也就是服务器的标签
git push origin refs/tags/v7.0:refs/tags/v7.0
如果只想拉取标签的话,可以不适用git pull
命令,不想把所有的信息都拉取到本地,可以使用如下命令:
只把v7.0标签拉取到本地,
git fetch origin tag v7.0
别的开发者使用git pull
可以将分支和标签一并拉取到本地
查看文件的修改历史记录,可以知晓谁对文件做了更改
git blame test.txt
////////////////////////////////////
git diff
git diff 比较的是暂存区与工作区文件之间的差异
git diff HEAD/commit_id 比较的是最新的提交与工作区之间的差异
git diff --cachced 比较的是暂存区与最新的本地提交之间的差异
github
将本地仓库推送到远程仓库,这里的origin是https://github.com/xxx/xxx.git的一个别名或者理解为变量,
以后推送到origin,就相当于推送到https://github.com/xxx/xxx.git。
git remote add origin https://github.com/xxx/xxx.git
git push -u origin master
clone远程仓库到本地的mygit2,如果不指定或默认以远程仓库名称作为本地的文件名城名
git clone https://github.com/xxx/xxx.git mygit2
显示所有远程仓库的别名
git remote show
显示远程仓库origin的详细信息
git remote show origin
git别名
br代替branch命令
git config --global alias.br branch
git checkout -b test origin/test
git checkout --track origin/test
git push 的完整写法:git push origin src:dest 意思是推送本地的src分支到origin(远程)的dest分支上,
简写成git push是因为拉取项目的时候把远程的分支和本地的分支做了一个追踪关联(git push -u origin master)
删除远程分支
#第一种写法,将本地的空分支推送到远程,就相当于删除了远程的分支
git push origin :develop
# 将本地的分支develop推送到远程origin上,并在origin上也新建一个develop分支,并将本地所处的分支和远程的develop分支做一个关联
git push --set-upstream命令的简写方式git push -u
# 这里最后一个参数值develop指的是本地的分支,当前命令意思:将本地分支develop推送到远程上,并在远程上也新建一个分支test,与本地的test分支关联。
git push --set-upstream origin develop
# 将本地的分支develop1推送到远程origin上,并在origin上也新建一个develop2分支,并将本地分支develop1和远程的develop2分支做一个关联
git push --set-upstream origin develop1:develop2
----------------------------------------------
#第二种删除远程分支方法
git push origin --delete develop
git push origin --delete develop
git pull的完整命令如下:
将远程分支srcBranch拉取到本地destBranch分支
git pull origin srcBranch:destBranch
git fetch origin master:refs/remotes/origin/mymaster
git checkout --track origin/mymaster
网友评论