美文网首页
得git者得天下

得git者得天下

作者: langkee | 来源:发表于2017-05-03 16:32 被阅读34次
  • 将自己的本地分支推送到自己的远程分支
git push origin 本地分支名:远程分支名

例如:git push origin local_branch:remote_branch

如果本地分支和远程分支名是一样的,则可以:git push origin local_branch 就好了, 否则不能使用这种方法,不然就相当于新创建了另一个远程分支

  • 临时创建一个远程分支,并把本地分支推送到新创建的远程分支
git push origin 本地分支名:新的远程分支名

例如:git push origin langke:create_a_new_remote_branch
  • 查看git的当前版本号
git  --version 

或者

git version
  • 在当前分支,再创建一个本地分支
git branch new_local_branch

比如现在我所在的本地分支名是:local_branch,  这样的话,本地就多出来一个新的分支,名字叫做new_local_branch, 新的本地分支提交的内容和当前所在的本地分支一模一样,就是说:new_local_branch的内容和local_branch的一模一样!
  • 删除某个本地分支
git branch -d 本地分支名

或者

git branch --d 本地分支名

或者

git branch --delete 本地分支名

或者

git branch -D 本地分支名
  • 删除某个远程分支
方法1:
git push origin --delete 远程分支名
例如:git push origin --delete remote_branch

方法2:
git push --delete origin 远程分支名
例如:git push --delete origin remote_branch

方法3:
git push origin :远程分支名
例如:git push origin :remote_branch

执行如上操作后,远程分支remote_branch就已经被删除了
  • 查看本地所有分支
git branch  

或者 

git branch --list
  • 查看本地和远程所有分支
git branch -a 

或者

git branch --all
  • 查看远程所有分支
git branch -r
  • 查看所有提交commit的日志
git log

假如提交的次数太多,为了方便查找,我们只想要将每次commit的日志显示成一行打印出来,可以使用:

git log --pretty=oneline

更简化版:
git log --oneline

  • 查看本地提交的状态(未提交,提交成功,提交失败)
git status
  • 提交本地改变
git add .        // 添加当前所有改变和未改变的文件到暂缓区

git commit -m “这是提交注释”  // 将提交到暂缓区中的所有文件提交到本地的HEAD指针指向的master分支
  • 重命名本地的某个分支
git branch -m 原有本地分支名 新的本地分支名

例如:git branch -m local_branch1 local_branch2

执行如上操作,则原来的本地分支local_branch1就变成local_branch2了
  • 放弃当前项目中的所有修改,恢复修改前的样子
在没有使用 git add . 和 git commit -m “提交注释” 操作的时候,你想放弃当前项目中的所有修改,恢复修改前的样子

git checkout .

例如:你在ViewController.swift中新添加了 view.backgroundColor = UIColor.red

现在你想放弃这个修改, 就可以在terminal上使用该操作,  执行过后新添加的 view.backgroundColor = UIColor.red就没有了
  • 拉取当前的远程分支
git pull origin

直接执行上面就好了

当然,如果当前是在develop分支,远程分支名也是develop,才可以使用上面的方法,否则应该:

git pull origin 相应的远程分支名
  • track一个远程分支到本地(比如develop)
git branch --track 新track的develop本地分支名 origin/develop

假如新track的本地分支名也和远程分支名一样为develop,可以

git branch --track develop origin/develop
  • 当前分支切换到另外一个分支
git checkout 需要切换到的另一个分支名

例如我们要切换到develop

git checkout develop   这样就切换到develop了
  • 当前分支合并另一个分支
git merge 另一个分支名

比如,现在我在develop分支, 想合并我自己的本地分支 langke_branch

git merge langke_branch
  • 查看在 “git add .” 之前所做的修改(添加的或者删除的)
git diff
  • 给最近一次“git commit”添加/修改提交的备注信息
git commit --amend

或者

git commit --amend --reset-author (从—reset之后只要从前往后递增,这个命令都可以起作用)

比如:git commit --amend --reset 或者  git commit --amend --reset-a 或者 git commit --amend --reset-au 或者........
  • 几个 git add 的差异?
git add -A          // 添加所有的改动

git add *               // 添加所有的改动

git add .               // 添加所有的改动

git add -u          // 添加修改和删除的文件,但是不包括新建的文件或者文件夹(一般不建议用)
  • 使用git add 后想要撤销该操作
git reset HEAD 

或者

git reset 

解释:比如你刚刚使用 git add * 添加了当前的所有改变到暂存区,然后你又突然后悔添加了,想撤回,就可以使用上面的操作,你在项目中做的所有改变依然保留, 只是撤销这次操作,并非内容。
  • 一次性提交到当前分支
git commit -a -m "commit information" (但是不推荐,还是建议先 git add . 再 git commit -m “committed changes informations”)
  • git 版本回退
1、回退到上一个版本,比如当前在第3个版本,我想要回到第2个版本,可以使用:

git reset --hard HEAD^

2、回到未来或者指定的某个版本,先找到版本号(版本号只需要前几位就可以了),然后可以:

git reset --hard 版本号

例如现在我想回到第3个版本:git reset —hard 第3个版本的版本号

3、如果我们回退到过去的版本,那么怎么查看回退之前的所有版本呢?包括未来版本?

比如现在总共有5个版本,我当前已经回退到第3个版本,突然我又想回到最新版本也就是第5个版本!

那么我就需要找到第5个版本的版本号, 就可以使用:

git reflog              // 查看历史所有提交日志,也可以看到对应的版本号

根据commit信息找到对应的版本号,比如是:1234567, 然后可以:

git reset --hard 1234567  

这样就回到最新版本了
  • 放弃对该文件(或者当前所有)的修改
git checkout -- 文件名
或者
git checkout -- .

注:该使用只是撤销当前的修改,或者当前所有文件的修改,比如说在你没有使用git add .前,你修改了项目很多地方,但是你使用了 git checkout .之后,你所有的修改将不复存在; 另外,如果你已经使用了git add .将所做的修改从工作区(working directory)添加到暂存区,与此同时,你又修改了代码的其他地方,然后你再使用 git checkout .后,这只是放弃了当前的修改,并不能将你之前添加到暂存区的修改撤销掉哦,也就是说不能让你从暂存区撤销到工作区

  • 撤销从工作区到暂存区的提交
git reset HEAD .      // 撤销 git add 的所有提交
或者
git reset HEAD 文件名          // 撤销某个文件 git add 的提交

说明:使用 git reset HEAD . 其实就是从 暂存区 的状态回到 工作区 的状态!

  • track(跟踪)一个远程分支到本地
git checkout --track origin/远程分支名
  • 查看推送到远程前后的内容修改差异
git  log -p              // 查看所有修改内容差异

git log -p -1          // 查看最近一次提交的修改内容差异

git log -p -2          // 查看最近两次提交的内容差异

----------------
  • 存储当前的修改 ( git stash)

有时候,我们开发到一半,或者临时做了一些修改,但是马上又要去做另外的一个操作,比如,临时紧急修复一个bug,要创建一个临时分支,但是当前修改的东西又怕丢失,怎么办?用git暂存起来,之后恢复:

git stash              // 暂存当前的修改, 使用该命令后,用git status查看就会发现工作区干干净净

git stash list         // 查看刚才的暂存

git stash pop       // 恢复暂存的内容,同时删除stash的内容

git stash apply     // 恢复暂存的内容,同时保留stash的内容 

git stash apply stash@{0}     // 恢复某一次stash的内容

git stash drop      // 删除stash的内容

注:前几天我自己就有一次使用了git stash发生了一次事故,具体是怎么回事呢? 我正在开发中,突然队长修改了一个我临时需要用的东西,然后我需要合并他的分支,那现在的开发又进行了一部分,改怎么办呢?于是我 git stash, 将他的分支合并到我的当前开发分支后,然后我一不小心 git stash drop了,糟了,本应该 git stash pop的,却弄成git stash drop丢掉之前的修改了,然后 git status,完了,工作区干干净净,那可以是我两个多小时的工作量,怎么办,慌忙和悲伤之中翻看之前的记录,然后我发现,我用命令查看过stash记录,也就是git stash list, 记录是 Dropped refs/stash@{0} (d0d26002b33a938d97184aa776ba8caad1f2948f) 更幸运的是我没有退出terminal,是的,你没听错,然后我使用git stash apply d0d26002b33a938d97184aa, YEAR, 然后竟然恢复了!!!挽救了我一命,顿时心花怒放,真想请假去旅游一个星期以庆祝自己这么牛X(那是不可能的)。不管怎样,学会git真的会在某些时候给你最信赖的帮助。

  • git stage (将文件从工作区添加到暂存区,与git add功能一样)

这个命令是什么意思呢?我们在 terminal 求助一下看看

屏幕快照 2017-12-08 上午9.11.49.png

从上可以看出:This is a synonym for git - add, 意思就是 该命令是 git add 命令的同义词,换句话说,它的作用和 git add是一样的,都是将文件从工作区添加到暂存区。所以我们平时除了可以使用 git add .命令外,也可以使用git stage .来代替。

  • git ca

这个命令是用来修改本次的提交信息, 相当于命令git commit --amend, 比如刚才我commit的时候,提交信息是udpate view backgroundColor, 然后我突然后悔了,我觉得提交信息有误,于是我想修改刚才的提交信息,改成update subview backgroundColor, 怎么办呢?使用如下命令就可以

git ca

或者

git commit --amend
  • 强制推送并覆盖远程

现在,你有一个远程version为:feature_origin_version10, 但是你的本地version为:local_version9, 相当于你落后了一个远程版本,同时,你不想要远程的这个提前版本了,想要远程version和本地version统一,那么我们就可以强制推送到远程,覆盖远程:

git push -f origin local_version9 : feature_origin_version10                     // 强制推送到远程,远程被覆盖(远程提前的所有版本没有了)
  • 移除git仓库(并非删除这个仓库的任何文件)

如果你已经有了一个git仓库,但是现在你突然不想要让它作为一个git仓库的存在,那么你可以执行如下命令

rm -rf .git

这样就变成一个普通的文件夹或者文件了。

欢迎加入iOS(swift)开发互助群: QQ群号: 558179558, 相互学习和交流。

相关文章

  • 得git者得天下

    将自己的本地分支推送到自己的远程分支 如果本地分支和远程分支名是一样的,则可以:git push origin l...

  • 得语文者得天下,怎么得天下

    最新高考改革后,三门统考课语文、数学、英语,其中英语可以多次参考,取最高分计入高考总分;数学在今后的命题中要大幅度...

  • 得我者;得天下~

    人,委曲求全的过程其实就是不断妥协的过程,真正蜕变的人生一定是来源于大的变故,例如我,若是不做企业了,可能是某个领...

  • 得语文者得天下

    学经计划:137 读经内容:《易经》9—11《老子》41一50《诗词启蒙》41—50 学经时间:第六周第四天 参加...

  • 得节奏者得天下

    做任何事情都需要节奏,是我近期感悟到的一个要点。打球需要节奏,弹琴需要节奏,学东西也需要节奏,说话需要节奏,做任何...

  • 得群众者得天下

    笑面铁人 最近"我不是药神"这部电影火爆了,不每一部火的电影背后,都有其群众基础,这个群众基础,并不是明星的粉丝数...

  • 得民者得天下

    下雨了,拿起雨伞的那一刻,明白了一个道理,跟雨伞学做人。 雨伞说,你不为别人挡风遮雨,谁会把你举在头上?

  • 得“穷人”者得天下

    “穷人经济学”和“金字塔底层淘金”是本人多次讲到的创业话题。日本的首富是优衣库的老板,西班牙的首富(一度还是世界首...

  • 得圣人者得天下

    古人云,勤能补拙是良训。 统治朝政者得民心得天下,而庶民是否甘愿平庸,不,庶民者得圣人者得天下。 圣人高高在上,我...

  • 得语文者得天下

    作为一名历史教师,竟然去大放厥词的谈论语文学科的事,颇有点咸吃萝卜淡操心的意味。好在“文史哲不分家”的论调,还能挡...

网友评论

      本文标题:得git者得天下

      本文链接:https://www.haomeiwen.com/subject/mqsnzttx.html