GIT常用命令(小结)
- 谈及源码管理工具,首选
SVN
和GIT
,在工作中也都有所接触,但个人更喜欢使用GIT,下面就是我记录的在工作中用到的操作命令。
操作流程图
Git操作流程图.png一、全局配置
-
告诉git你是谁(设置 | 修改 用户名)
git config --global user.name "username"
-
告诉git怎么联系你(如果注册了 github 账号,邮箱最好和 github 账号统一)(设置 | 修改 邮箱)
git config --global user.email "xxx@126.com"
-
查看用户名和邮箱
git config user.name
git config user.email
二、初始化本地代码仓库
-
初始化代码仓库
git init
进入新的公司,一般都需要从公司的远程代码托管仓库中
clone
出一份代码 -
从服务器分支中创建本地分支
a. 加入我在本地新建了一个分支
git checkout origin/originBranchName -b localBranchName
b. 我在这个分支上新建了一些文件,要把这个分支推送到自己的远程分支服务器上
git push origin localBranchName
-
从服务器克隆代码(有子模块,需要递归recursive)
git clone --recursive git@git.jimubox.com:xxx/xxxxxx.git
三、修改&提交
-
添加修改的文件
git add MainView.h
(添加某个文件)git add .
(添加所有已经修改的文件) -
提交修改
git commit -m "注释"
git commit -a -m "注释"
git commit -am "注释"
-
从远程分支中拉最新代码
git pull origin originBranchName
-
将本地分支代码提交到自己的远程分支中
git push origin localBranchName
-
切换到服务器远程分支上
git checkout originBranchName
-
合并分支(远程分支&本地分支做个合并)
git merge localBranchName
-
把最新修改同步到服务器的远程分支上
git push origin localBranchName
-
切换到自己的本地分支,完成一次修改提交操作
git checkout localBranchName
备注: 修改&提交时,Untracked files(未监视的文件)的处理
git-untracked files.png有时候会出现Untracked files,我们又不想add到仓库,但是使用
git checkout .
和git reset
都没法删除这些未监视的文件,如下图:
- 解决办法:
- 删除文件:
git clean -f
- 删除目录:
git clean -fd
- 删除文件:
- Tips
- 删除前,建议加上-n参数,先看看会对哪些文件产生影响,避免误操作!比如:
git clean -nf
、git clean -nfd
- 删除前,建议加上-n参数,先看看会对哪些文件产生影响,避免误操作!比如:
四、版本回撤
-
回撤到上一个版本
git reset --hard HEAD^
-
回撤到上上一个版本
git reset --hard HEAD^^
-
切换到任意版本
git reset --hard 版本号(前6位)
-
撤销某一个文件当前的修改
git checkout 文件名
-
撤销当前所有修改
git checkout .
-
查看分支引用记录,能够查阅所有的版本号
git reflog
-
从分支的某个提交记录签出新的分支
git checkout 版本号(前6位)
git branch 新的分支名【产生新的分支】
五、查看文件修改记录
-
查看当前分支
git branch
-
查询某人的提交记录
git log --author="姓名"
-
查看文件修改记录(历史) 文件追踪,再也不怕未知的修改了,呵呵
git blame VideoSquare/HotViewController.mm
-
查看文件修改内容
git difftool VideoSquare/HotViewController.mm
新窗口弹出git diff VideoSquare/HotViewController.mm
原始窗口显示
六、分支操作
-
查看当前分支
git branch
-
查看远程分支
git branch -r
-
创建本地分支(注意不会自动切换分支)
git branch [name]
-
切换分支
git checkout [name]
-
创建新分支并立即切换到新分支
git checkout -b [name]
-
删除分支
a. 只能删除已经合并过的分支 b. 没有合并的分支不能删除 c. 如果要强行删除分支,可以使用 -D 选项
git branch -d [name]
git push origin --delete <branchName>
删除远程分支
6.1 删除本地的无效远程分支
git remote prune origin
// 输出日志如下:
Pruning origin
URL: git@git.jimubox.com:app-labs/app-background-center.git
* [pruned] origin/develop_new
-
合并分支
git merge [name]
-
创建远程分支(本质上是将本地的分支 push 到远程)
git push origin [name]
七、远程操作
-
查看当前分支
git clone url
-
将本地修改内容推送到远程代码仓库
git push
-
将远程代码库的变化更新到本地
git pull
八、标签
-
创建标签
git tag 标签名称
git tag -a 标签名称 -m 附注
-
在指定commit上打标签
git tag -a 标签名称 commitCode -m 附注
-
查看标签列表
git tag
-
查看标签信息
git show 标签名称
-
删除标签
git tag -d 标签名称
-
推送标签到远程
git push origin 标签名称
git push origin --tags
推送到远程的标签,如果想要删除远程标签,就得先删除本地(git tag -d 分支名称),再删除远程标签(git push origin :refs/tags/标签名称)
九、其它
-
删除文件
git rm -r 文件名称
-
.gitignore规则不生效的解决办法
# 手动修改gitignore文件,添加新的忽略规则失效的原因是,.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交: git rm -r --cached . git add . git commit -m 'update .gitignore'
十、高级用法
十一、附件
- 好用的终端+常用命令,会达到事半功倍的效果,点击快速配置Mac的终端
网友评论