基本操作:
git add file //将file添加到暂存区
git add -A //将所有文件/操作都添加到暂存区
git commit file //表示指定只提交这个file 相关的操作.
git add/commit file1 file2 //表示同时添加/提交两个文件
git commit -a -m "备注" //全部提交所有处于暂存区的操作
git push //推送当前分支到remote
git pull // 更新 和合并远程remote 分支到当前分支。
文件的撤销和恢复:
git checkout -- file 可以撤消没有add 到缓存区的所有修改,不能撤消add 到缓存区的内容.还可以恢复删除的文件,只要还将删除这个操作add到缓存区都可以用checkout 恢复文件. 这里的 file 是实际文件,而不是参数
git reset --hard HEAD^ 可以撤消上一个add 操作或者commit 的操作 到上一个commit 状态.
git reset HEAD <file>..." 撤出暂存区,就是撤消了add 的操作回到修改区
# 删除 untracked files
git clean -f
# 连 untracked 的目录也一起删掉
git clean -fd
# 连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)
git clean -xfd
git clean -nxfd
git clean -nf
git clean -nfd
查看文件修改的内容:
git diff file 查看file 文件修改了那些内容,只有file处于被修改状态才可以看.处于add 和commit 之后就查看不到了.
分支:
git push -u origin dev 推送当前本地分支到远程分支并建立关联,如果远程分支不存在则新建
git branch -u origin/dev 当前分支和远程分支建立关联
分支查看
git branch -a //查看所有分支
git branch //查看所有本地分支,默认分支为master
//查看当前分支的日志,以图像的形式显示出来
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
分支创建:
git branch name //创建一个名为name的分支库.在分支库上做的修改不会影响其他分支的内容
git checkout -b dev master //以master 为基础创建dev 分支,并切换到dev分支,如果当前分支为master 则可忽略master
分支删除:
git branch -d name //删除本地分支
git branch -r -d origin/dev //删除远程分支在本地的关联
git push origin :dev //删除远程分支; 命令全名是 git push <远程主机名> <本地分支名>:<远程分支名>,所有这个删除相当于push 一个空到远程分支
分支切换和合并
git checkout name ,切换到名为 name 的 分支.
git merge dev 合并名为dev 的分支到当前分支,默认情况下,Git执行"快进式合并"(fast-farward merge),会直接将当前分支指向name分支
git merge --no-ff dev #推荐 //合并分支dev 到当前分支,使用参数--no-ff 后,会执行正常合并,在当前分支上生成一个新节点。为了保证版本演进的清晰,我们希望采用这种做法
注意事项:
所有操作在没有add 之前都不能git commit
没有git commit 之前不能git checkout到其他分支。 但是如果删掉文件之后没有git commit 也可以git checkout 到其他分支,结果是删除操作会被撤消.
推荐看 http://www.ruanyifeng.com/blog/2014/06/git_remote.html
http://www.ruanyifeng.com/blog/2015/08/git-use-process.html