- 将自己的本地分支推送到自己的远程分支
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 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 求助一下看看
从上可以看出: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
这样就变成一个普通的文件夹或者文件了。
- 移除新创建并且已经添加到暂存区的文件
git rm -f new_file