Git作为一种流行的版本管理系统已经广泛应用于我们的日常开发中,但作为git使用的初学者对git的使用还不是很清楚,于是在这里记录下日常遇到的关于git的用法。
1.Git常用命令
1)克隆远程分支 - git clone
//将Test.git仓库的分支dev克隆到本地yourfolder文件夹
$ git clone url -b branch-name /yourfolder
例: $ git clone https://github.com/fengyueran/Test.git -b dev
2)查看提交历史 - git log/reflog
//可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
$ git reflog
//查看当前分支的提交历史
$ git log
3)推送到远程分支 - git push
$ git push <remote repository -name> <branch-name>
// 将当前分支dev推送到远程仓库origin的remote/dev分支
例: $ git push origin dev:remote/dev
-> * [new branch] dev -> reomte/dev
//省略远程仓库分支名则在远程创建当前同名分支dev
例: $ git push origin dev
-> * [new branch] dev -> dev
4)查看分支 - git branch
$ git branch
dev
* master
//查看远程分支
$ git branch -r
5)新建分支 - git branch branchname
$ git branch <branchname>
例: $ git branch dev/app
6)切换分支 - git checkout branchname
$ git checkout <branchname>
例: $ git checkout dev/app
7)新建并切换分支 - git checkout -b branchname
$ git checkout -b <branchname>
//当前分支的记录都会到新分支dev/app上
例: $ git checkout -b dev/app
8)删除分支 - git branch -D branchname
$ git branch -D <branchname>
//删除分支dev/app
例: $ git branch -D dev/app(D强制删除)
//删除远程仓库origin的分支dev/app
例: $ git push origin --delete dev/app
9)查看配置信息 - git config –-list
$ git config --list
10)删除全局配置文件的用户名和邮箱 - git config --unset
$ git config --unset --global user.name "fengyueran"
$ git config --unset --global user.email 316032603@qq.com
11)git 如何让单个文件回退到指定的版本 - git reset
1).进入到文件所在文件目录,或者能找到文件的路径
$ git reflog MainActivity.js
2) 回退到指定的版本
$ git reset ecb2cae MainActivity.js
//或用sourceTree
3) 可用sourceTree右键回退。
12)合并分支 - git rebase/merge
//产生更简洁的提交历史
$ git rebase master(将master分支合并到当前分支)
//会产生合并的提交历史
$ git merge hotfix(将hotfix分支合并到当前分支)
13)合并提交历史 - git mergetool
$ git mergetool -t kdiff3
14)合并提交历史 - git merge --squash
当我们由master分支切换到新的分支dev工作,工作结束后想merge回master,如果直接在master应用git merge dev,dev的提交历史就会出现在master中,有时这些记录很琐碎没有必要添加到master上,用squash就能解决这一问题。
//1.squash后dev上的提交就变成了新的文件
$ git merge --squash dev
//2.重新commit代替之前所有提交
$ git commit -m"dev"
15)追加到上一次提交 - git commit --amend
$ git commit --amend
16)查看某个命令的帮助 - git commit –help
$ git commit –help
17)添加远程仓库 - git remote add
$ git remote add pb git://github.com/paulboone/ticgit.git
18)从远端仓库下载新分支与数据 - git fetch
//会使你与另一仓库同步,提取你本地所没有的数据,不merge
$ git fetch
//将你的仓库与远端仓库origin同步,提取所有它独有的数据到本地分支以合并或者怎样。
$ git fetch origin
//首先执行下面的fetch操作使用远程dev分支在本地创建local/dev分支(但不会切换到该分支),
如果本地不存在local/dev分支, 则会自动创建一个新的local/dev分支, 如果本地存在local/dev分支,
并且是`fast forward', 则自动合并两个分支, 否则, 会阻止以上操作。
$ git fetch origin dev:local/dev
-> * [new branch] dev -> local/dev
19)从远端仓库提取数据并尝试合并到当前分支 - git pull
//基本上,该命令就是在 git fetch 之后紧接着 git merge 远端分支到当前分支
$ git pull
//衍合能产生一个更为整洁的提交历史
$ git pull --rebase
git pull与git pull --rebase的区别如下图,可以看到相比git pull(merge) git rebase不会产生合并记录因而历史记录更加清爽简洁,因此在进行pull时可以用git pull --rebase。
20)储存临时文件 - git stash
//当工作区有未提交的文件,又想切换到另一个branch时就可以用git stash暂时存储
$ git stash
//可以通过git stash list查看存储了哪些文件
$ git stash list
//当回到之前的dirty工作区时可以通过git stash apply来恢复之前未提交的文件,也可以新的branch应用这些存储的临时文件
$ git stash apply
21)查看当前配置有哪些远程仓库 - git remote
$ git remote
例: $ git remote –v 显示对应的远程仓库地址
origin git@github.com:fengyueran/iOSNote.git (fetch)
origin git@github.com:fengyueran/iOSNote.git (push)
PS: I am xinghun who is on the road.