Git总结(对日常绝对够用)

20 篇文章 0 订阅
8 篇文章 0 订阅

真是够够的了,一直因为懒也懒得总结一下自己在项目中用的几个Git语句,尤其发布版本那几个操作语句,毕竟自己不是项目经理啊,所以公司项目几乎不用我来打tag,所以今天弄自己项目的时候想打个tag却发现自己不会了已经。哈哈哈
引用我同学的一句话,都特么用git了,不再用个命令行直接严重拉低了逼格,所以今天就把自己项目中用到的git命令总结一下。

本地没有git仓库,以及日常一些命令

如果你还没有一份远程代码库的本地版本(例如,如果你在另一台机器上开始工作,这台机器上还没有用过这个项目),
你首先需要拷贝(clone)它。去到你的代码库想要拷贝到的文件夹下,并发送:
git clone + 你项目地址
如果本地没有git,那么,切换到工程目录下,输入 git init 这样的话你就有了一个本地的git代码库
git status 查看当前分支与工程所作的修改
git add 文件名或者文件夹名 将你所做的修改提交到本地的代码库 ,其实我个人用的最多的就是git add * 或者git add .
可能是有问题的,但是简单粗暴我个人非常喜欢
git commit -m '' 单引号内为你这次所做的提交写注释
git push origin develop 把本地的git库提交到远程服务器的develop分支上
git fetch && git checkout 分支名 切换分支 这个命令就是第一次拉取分支的时候用,前面的意思就是把远程分支拉取到本地
另一方面,如果你已经在本地的项目上工作了,只是想从远程代码库上取得它最新的版本,移动到项目的根目录下,并发送:
git pull origin maste
git branch -a 查看本地和远程分支的情况
git branch -r 查看远程分支
git pull origin master:develop 将orgin仓库的 master分支拉取到本地的develop分支上
git fetch:相当于是从远程获取最新版本到本地,不会自动merge
git fetch origin master
git log -p master..origin/master
git merge origin/master
以上命令的含义:
首先从远程的origin的master主分支下载最新的版本到origin/master分支上,然后比较本地的master分支和origin/master分支的差别,最后进行合并。
上述过程其实可以用以下更清晰的方式来进行:

git fetch origin master:tmp
git diff tmp
git merge tmp
从远程获取最新的版本到本地的test分支上之后再进行比较合并
git pull:相当于是从远程获取最新版本并merge到本地
git pull origin master
上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并
GIT STASH
git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。
同时,将当前的工作区内容保存到Git栈中。
git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。
由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。

Git 清理无效的远程追踪分支

在使用git进行版本控制时,经常会创建一些特性分支方便产品功能的开发和迭代,

在远程版本库创建了一个分支后,在本地可以使用

$ git remote update
可以在本地创建远程追踪分支,
但是,如果在远程版本库上删除了某一分支,该命令并不会删除本地的远程追踪分支,
这时候,有另一个命令
$ git remote prune
该命令可以删除本地版本库上那些失效的远程追踪分支,具体用法是,假如你的远程版本库名是 origin,则使用如下命令先查看哪些分支需要清理:
$ git remote prune origin --dry-run
可以看到, origin/a 和 origin/patch-1 两个远程分支已经失效,将会被清理,执行
$ git remote prune origin

git beta版本发布过程

beta版本发布过程
//1. Check out master branch in code repository 
cd lib_example_server
2. git checkout master
3. git pull origin
//4. Merge Code from develop branch to master branch 
VER=rx.y.z.beta0n
5. git merge --no-ff -m "merge branch develp for $VER" develop
6.Change version_info in init.py , add changes to CHANGES file. commit and push changes to remote
7.Create tag rx.y.z.beta0n in code repository and push changes to remote 

8. 
git tag -a -m "$VER" $VER
9. git push --tags 或者 git push origin [tagname] 或者 git push origin --tags
10. git checkout develop
//11. 
delete tag:
12. git tag -d v1.0.6本地分支
13. git push origin :<tag name>远程分支

git 回滚

git代码库回滚: 指的是将代码库某分支退回到以前的某个commit id

【本地代码库回滚】:

git reset --hard commit-id :回滚到commit-id,讲commit-id之后提交的commit都去除

git reset –hard HEAD~3:将最近3次的提交回滚`

【远程代码库回滚】:

这个是重点要说的内容,过程比本地回滚要复杂

应用场景:自动部署系统发布后发现问题,需要回滚到某一个commit,再重新发布

原理:先将本地分支退回到某个commit,删除远程分支,再重新push本地分支

操作步骤:

1、git checkout the_branch

2、git pull

3、git branch the_branch_backup //备份一下这个分支当前的情况

4、git reset --hard the_commit_id //把the_branch本地回滚到the_commit_id

5、git push origin :the_branch //删除远程 the_branch

6、git push origin the_branch //用回滚后的本地分支重新建立远程分支

7、git push origin :the_branch_backup //如果前面都成功了,删除这个备份分支

如果使用了gerrit做远程代码中心库和code review平台,需要确保操作git的用户具备分支的push权限,
并且选择了 Force Push选项(在push权限设置里有这个选项)

另外,gerrit中心库是个bare库,将HEAD默认指向了master,因此master分支是不能进行删除操作的,最好不要选择删除master分支的策略,换用其他分支。
如果一定要这样做,可以考虑到gerrit服务器上修改HEAD指针。。。不建议这样搞

如果输入$ git remote add origin https://github.com/CocoaDreamer/smallMovie.git

提示出错信息:fatal: remote origin already exists.

解决办法如下:
1、先输入$ git remote rm origin
2、再输入$ git remote add origin https://github.com/CocoaDreamer/smallMovie.git 就不会报错了!
3、如果输入$ git remote rm origin 还是报错的话,error: Could not remove config section 'remote.origin'. 我们需要修改gitconfig文件的内容
4、找到你的github的安装路径,我的是C:\Users\ASUS\AppData\Local\GitHub\PortableGit_ca477551eeb4aea0e4ae9fcd3358bd96720bb5c8\etc
5、找到一个名为gitconfig的文件,打开它把里面的[remote "origin"]那一行删掉就好了!
如果输入$ ssh -T git@github.com
出现错误提示:Permission denied (publickey).因为新生成的key不能加入ssh就会导致连接不上github。
解决办法如下:
1、先输入$ ssh-agent,再输入$ ssh-add ~/.ssh/id_key,这样就可以了。
2、如果还是不行的话,输入ssh-add ~/.ssh/id_key 命令后出现报错Could not open a connection to your authentication agent.解决方法是key用Git Gui的ssh工具生成,这样生成的时候key就直接保存在ssh中了,不需要再ssh-add命令加入了,其它的user,token等配置都用命令行来做。
3、最好检查一下在你复制id_rsa.pub文件的内容时有没有产生多余的空格或空行,有些编辑器会帮你添加这些的。
如果输入$ git push origin master
提示出错信息:error:failed to push som refs to .......
解决办法如下:
1、先输入$ git pull origin master //先把远程服务器github上面的文件拉下来
2、再输入$ git push origin master
3、如果出现报错 fatal: Couldn't find remote ref master或者fatal: 'origin' does not appear to be a git repository以及fatal: Could not read from remote repository.
4、则需要重新输入$ git remote add origin https://github.com/CocoaDreamer/smallMovie.git
使用git在本地创建一个项目的过程
$ makdir ~/hello-world //创建一个项目hello-world
$ cd ~/hello-world //打开这个项目
$ git init //初始化
$ touch README
$ git add README //更新README文件
$ git commit -m 'first commit' //提交更新,并注释信息“first commit”
$ git remote add origin git@github.com:defnngj/hello-world.git //连接远程github项目
$ git push -u origin master //将本地项目更新到github项目上去
gitconfig配置文件
Git有一个工具被称为git config,它允许你获得和设置配置变量;这些变量可以控制Git的外观和操作的各个方面。这些变量可以被存储在三个不同的位置:
1./etc/gitconfig 文件:包含了适用于系统所有用户和所有库的值。如果你传递参数选项’--system’ 给 git config,它将明确的读和写这个文件。
2.~/.gitconfig 文件 :具体到你的用户。你可以通过传递--global 选项使Git 读或写这个特定的文件。
3.位于git目录的config文件 (也就是 .git/config) :无论你当前在用的库是什么,特定指向该单一的库。每个级别重写前一个级别的值。因此,在.git/config中的值覆盖了在/etc/gitconfig中的同一个值。
在Windows系统中,Git在$HOME目录中查找.gitconfig文件(对大多数人来说,位于C:\Documents and Settings\$USER下)。它也会查找/etc/gitconfig,尽管它是相对于Msys 根目录的。这可能是你在Windows中运行安装程序时决定安装Git的任何地方。
配置相关信息:
2.1 当你安装Git后首先要做的事情是设置你的用户名称和e-mail地址。这是非常重要的,因为每次Git提交都会使用该信息。它被永远的嵌入到了你的提交中:
  $ git config --global user.name "John Doe"
  $ git config --global user.email johndoe@example.com
2.2 你的编辑器(Your Editor)
  现在,你的标识已经设置,你可以配置你的缺省文本编辑器,Git在需要你输入一些消息时会使用该文本编辑器。缺省情况下,Git使用你的系统的缺省编辑器,这通常可能是vi 或者 vim。如果你想使用一个不同的文本编辑器,例如Emacs,你可以做如下操作:
  $ git config --global core.editor emacs
2.3 检查你的设置(Checking Your Settings)
  如果你想检查你的设置,你可以使用 git config --list 命令来列出Git可以在该处找到的所有的设置:
  $ git config --list
你也可以查看Git认为的一个特定的关键字目前的值,使用如下命令 git config {key}:
  $ git config user.name
2.4 获取帮助(Getting help)
  如果当你在使用Git时需要帮助,有三种方法可以获得任何git命令的手册页(manpage)帮助信息:
  $ git help <verb>
  $ git <verb> --help
  $ man git-<verb>
  例如,你可以运行如下命令获取对config命令的手册页帮助:
  $ git help config

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值