GIT常用命令

GIT常用命令(小结)

  • 谈及源码管理工具,首选SVNGIT,在工作中也都有所接触,但个人更喜欢使用GIT,下面就是我记录的在工作中用到的操作命令。

操作流程图

Git操作流程图.png

一、全局配置


  1. 告诉git你是谁(设置 | 修改 用户名)

    git config --global user.name "username"

  2. 告诉git怎么联系你(如果注册了 github 账号,邮箱最好和 github 账号统一)(设置 | 修改 邮箱)

    git config --global user.email "xxx@126.com"

  3. 查看用户名和邮箱

    git config user.name

    git config user.email

二、初始化本地代码仓库


  1. 初始化代码仓库

    git init

    进入新的公司,一般都需要从公司的远程代码托管仓库中clone出一份代码

  2. 从服务器分支中创建本地分支

    a. 加入我在本地新建了一个分支

    git checkout origin/originBranchName -b localBranchName

    b. 我在这个分支上新建了一些文件,要把这个分支推送到自己的远程分支服务器上

    git push origin localBranchName

  3. 从服务器克隆代码(有子模块,需要递归recursive)

    git clone --recursive git@git.jimubox.com:xxx/xxxxxx.git

三、修改&提交


  1. 添加修改的文件

    git add MainView.h (添加某个文件)

    git add . (添加所有已经修改的文件)

  2. 提交修改

    git commit -m "注释"

    git commit -a -m "注释"

    git commit -am "注释"

  3. 从远程分支中拉最新代码

    git pull origin originBranchName

  4. 将本地分支代码提交到自己的远程分支中

    git push origin localBranchName

  5. 切换到服务器远程分支上

    git checkout originBranchName

  6. 合并分支(远程分支&本地分支做个合并)

    git merge localBranchName

  7. 把最新修改同步到服务器的远程分支上

    git push origin localBranchName

  8. 切换到自己的本地分支,完成一次修改提交操作

    git checkout localBranchName

备注: 修改&提交时,Untracked files(未监视的文件)的处理

有时候会出现Untracked files,我们又不想add到仓库,但是使用git checkout .git reset 都没法删除这些未监视的文件,如下图:

git-untracked files.png
  • 解决办法:
    • 删除文件:git clean -f
    • 删除目录: git clean -fd
  • Tips
    • 删除前,建议加上-n参数,先看看会对哪些文件产生影响,避免误操作!比如:git clean -nfgit clean -nfd

四、版本回撤


  1. 回撤到上一个版本

    git reset --hard HEAD^

  2. 回撤到上上一个版本

    git reset --hard HEAD^^

  3. 切换到任意版本

    git reset --hard 版本号(前6位)

  4. 撤销某一个文件当前的修改

    git checkout 文件名

  5. 撤销当前所有修改

    git checkout .

  6. 查看分支引用记录,能够查阅所有的版本号

    git reflog

  7. 从分支的某个提交记录签出新的分支

    • git checkout 版本号(前6位)
    • git branch 新的分支名【产生新的分支】

五、查看文件修改记录


  1. 查看当前分支

    git branch

  2. 查询某人的提交记录

    git log --author="姓名"

  3. 查看文件修改记录(历史) 文件追踪,再也不怕未知的修改了,呵呵

    git blame VideoSquare/HotViewController.mm

  4. 查看文件修改内容

    git difftool VideoSquare/HotViewController.mm 新窗口弹出

    git diff VideoSquare/HotViewController.mm 原始窗口显示

六、分支操作


  1. 查看当前分支

    git branch

  2. 查看远程分支

    git branch -r

  3. 创建本地分支(注意不会自动切换分支

    git branch [name]

  4. 切换分支

    git checkout [name]

  5. 创建新分支并立即切换到新分支

    git checkout -b [name]

  6. 删除分支

    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
  1. 合并分支

    git merge [name]

  2. 创建远程分支(本质上是将本地的分支 push 到远程

    git push origin [name]

七、远程操作


  1. 查看当前分支

    git clone url

  2. 将本地修改内容推送到远程代码仓库

    git push

  3. 将远程代码库的变化更新到本地

    git pull

八、标签

  1. 创建标签

    git tag 标签名称

    git tag -a 标签名称 -m 附注

  2. 在指定commit上打标签

    git tag -a 标签名称 commitCode -m 附注

  3. 查看标签列表

    git tag

  4. 查看标签信息

    git show 标签名称

  5. 删除标签

    git tag -d 标签名称

  6. 推送标签到远程

    git push origin 标签名称

    git push origin --tags

    推送到远程的标签,如果想要删除远程标签,就得先删除本地(git tag -d 分支名称),再删除远程标签(git push origin :refs/tags/标签名称)
    

九、其它


  1. 删除文件

    git rm -r 文件名称

  2. .gitignore规则不生效的解决办法

     # 手动修改gitignore文件,添加新的忽略规则失效的原因是,.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
     git rm -r --cached .
     git add .
     git commit -m 'update .gitignore'
    

十、高级用法


Git - 子模块

十一、附件


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335