GIT常用命令(小结)
- 谈及源码管理工具,首选
SVN
和GIT
,在工作中也都有所接触,但个人更喜欢使用GIT,下面就是我记录的在工作中用到的操作命令。
一、全局配置
-
告诉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
三、修改&提交
-
添加修改的文件
git add MainView.h
(添加某个文件)git add .
(添加所有已经修改的文件) -
提交修改
git commit -m "注释"
-
从远程分支中拉最新代码
git pull origin originBranchName
-
将本地分支代码提交到自己的远程分支中
git push origin localBranchName
-
切换到服务器远程分支上
git checkout originBranchName
-
合并分支(远程分支&本地分支做个合并)
git merge localBranchName
-
把最新修改同步到服务器的远程分支上
git push origin localBranchName
-
切换到自己的本地分支,完成一次修改提交操作
git checkout localBranchName
四、版本回撤
-
回撤到上一个版本
$ git reset --hard HEAD^
-
回撤到上上一个版本
$ git reset --hard HEAD^^
-
切换到任意版本
$ git reset --hard 版本号(前6位)
-
撤销某一个文件当前的修改
$ git checkout 文件名
-
查看分支引用记录,能够查阅所有的版本号
$ git reflog
五、查看文件修改记录
-
查看当前分支
git branch
-
查询某人的提交记录
git log --author="姓名"
-
查看文件修改记录(历史) 文件追踪,再也不怕未知的修改了,呵呵
git blame VideoSquare/HotViewController.mm
-
查看文件修改内容
git difftool VideoSquare/HotViewController.mm
新窗口弹出git diff VideoSquare/HotViewController.mm
原始窗口显示
六、 解决merge后的冲突
Git1.6.1以后
-
参照自己的
git checkout --ours 文件名
-
参照别人的
git checkout --theirs 文件名
Git1.6.1以前
-
参照自己的
git reset -- 文件名
git checkout ORIG_HEAD -- 文件名
-
参照别人的
git reset -- 文件名
git checkout MERGE_HEAD -- 文件名
七、分支操作
-
查看当前分支
git branch
-
查看远程分支
git branch -r
-
创建本地分支(注意不会自动切换分支)
$ git branch [name]
-
切换分支
$ git checkout [name]
-
创建新分支并立即切换到新分支
$ git checkout -b [name]
-
删除分支
a. 只能删除已经合并过的分支 b. 没有合并的分支不能删除 c. 如果要强行删除分支,可以使用 -D 选项
$ git branch -d [name]
6.1. 删除本地的无效远程分支
git remote prune origin
// 输出日志如下: Pruning origin URL: git@git.xxx.com:app-labs/xxx.git * [pruned] origin/develop_new
-
合并分支
$ git merge [name]
-
创建远程分支(本质上是将本地的分支 push 到远程)
$ git push origin [name]
-
把另一个本地分支的commit修改应用到当前分支
$ git cherry-pick 版本号(前6位)
-
撤销某次操作
* git revert HEAD 撤销前一次 commit * git revert HEAD^ 撤销前前一次 commit * git revert commit (比如:fa042c……)撤销指定的版本,撤销也会作为一次提交进行保存。
git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容
git revert 和 git reset的区别
1. git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
2. 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。
3. git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。
```
八、远程操作
-
查看当前分支
$ git clone url
-
将本地修改内容推送到远程代码仓库
$ git push
-
将远程代码库的变化更新到本地
$ git pull
九、缓存修改
应用场景:你正在自己的分支上写代码,阶段性功能未完成时(比如刚创建好文件),测试人员请你给他打一个安装包,这是我们可以缓存当前修改的代码,切换到主分支上打包,打包完毕之后,切回自己的分支,恢复已缓存的代码,以及coding。
-
缓存本地修改
git stash
-
取消缓存(恢复)
a.
git stash apply
【恢复后,stash内容并不删除,需要用git stash drop来删除】b.
git stash pop
【恢复的同时把stash内容也删了】 -
查看缓存列表
git stash list
-
恢复指定缓存
git stash apply stash@{0}
【恢复后,stash内容并不删除,需要用git stash drop来删除】【下标越界之后,会报错(如:fatal: Log for 'stash' only has 1 entries.
)】
十、其它
-
删除文件
git rm -r 文件名称
十一、附件
- 好用的终端+常用命令,会达到事半功倍的效果,点击快速配置Mac的终端