得git者得天下

2017-05-03  本文已影响34人  langkee
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  --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
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 相应的远程分支名
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 diff
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 -A          // 添加所有的改动

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

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

git add -u          // 添加修改和删除的文件,但是不包括新建的文件或者文件夹(一般不建议用)
git reset HEAD 

或者

git reset 

解释:比如你刚刚使用 git add * 添加了当前的所有改变到暂存区,然后你又突然后悔添加了,想撤回,就可以使用上面的操作,你在项目中做的所有改变依然保留, 只是撤销这次操作,并非内容。
git commit -a -m "commit information" (但是不推荐,还是建议先 git add . 再 git commit -m “committed changes informations”)
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 . 其实就是从 暂存区 的状态回到 工作区 的状态!

git checkout --track origin/远程分支名
git  log -p              // 查看所有修改内容差异

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

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

----------------

有时候,我们开发到一半,或者临时做了一些修改,但是马上又要去做另外的一个操作,比如,临时紧急修复一个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真的会在某些时候给你最信赖的帮助。

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

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

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

这个命令是用来修改本次的提交信息, 相当于命令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仓库的存在,那么你可以执行如下命令

rm -rf .git

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

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

上一篇 下一篇

猜你喜欢

热点阅读