按照日常开发的顺序,整理经常用到的git命令
clone项目代码
git clone <git地址>
代码clone完成后,cd到项目目录下
创建开发分支
基于master创建开发分支,并把新建的分支提交到远程仓库
git checkout -b <branch_name> master
git push origin <branch_name>
分支名一般以feature_
为前缀,如果是修复bug,以bugfix_
为前缀
如果其他开发同学已经建了开发分支,我们只需检出该分支
git checkout <branch_name>
关于分支的其他一些常用命令
git branch (查看本地分支,带*的分支为当前工作的分支)
git branch -r (查看所有远程分支
coding...
这一步就是开发代码了,略过
检验代码修改
首先查一下添加,修改了哪些代码
git status
git diff <file_name> (查看具体文件内容的修改)
如果有想恢复的文件,放弃本地修改的
git checkout -- <file_name>
但是,需要注意的是,如果该文件已经 add 到暂存队列中,上面的命令就不灵喽,先让文件回到上次提交时的状态(last committed state):
git reset HEAD -- <file_name>
git checkout -- <file_name>
提交更改到本地仓库
确定修改没问题后,提交更改到本地仓库-- 要经常做,避免丢失更改!!
git commit -a -m "your comments here ..." (保存所有更改)
或者按单个文件提交代码
git add <file_name> (添加文件至缓存区,多个文件用 git add .)
git commit -m "your comments here ..."
推送更改到远程仓库
git pull origin master (拉master最新的跟本地合并,有冲突解决了再提交)
git push origin <branch_name>
如果不知道远程库地址,可以使用下面的命令查看
git remote -v
下面是处理一些常见问题的方法
忽略某个文件的版本控制
有些文件是IDE工具生成的,或者是编译生成的中间文件,对于代码功能是无任何意义的,所以要在版本控制中去除这些文件
- 对于untrack的文件,我们可以创建.gitignore文件
- 对于已经track的文件,我们可以这样做:
git update-index --assume-unchanged <files>
这样,即使已经更改了文件,用 git status
也不会看见文件已经更改。
取消这种设定可以使用:
git update-index --no-assume-unchanged <files>
查看当前被忽略的、已经纳入版本库管理的文件:
git ls-files -v | grep -e "^[hsmrck]"
如何删除文件或者文件夹
拉取远程的Repo到本地,如果已经在本地,可以略过
git clone <git地址>
在本地仓库删除文件
git rm <file_name>
在本地仓库删除文件夹,此处-r表示递归所有子目录,如果你要删除的,是空的文件夹,此处可以不用带上-r
git rm -r <folder_name>
提交代码并推送到远程仓库
git commit -m "your comments here ..."
git push origin <branch_name>
强制回退版本
使用 git log
命令查看所有的历史版本,获取某个历史版本的commit id,并强制回退到这个版本
git log
git reset --hard 139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96
git push -f -u origin master
代码修改完发现分支错误
前提是尚未提交到错误的分支:先将代码暂存到stash,然后切换正确的分支,从stash取出暂存的代码修改,把修改移动到正确的分支
git stash save "some comments..."
git checkout -b <branch_name> master
git stash pop
git add .
git commit -m "your comments here ..."
或者用暂存的修改创建新的分支,这个更方便:
git stash branch <branch_name>
网友评论