- Git 配置
1.1. git config
git config 语法:git config [–环境参数] key value
有三个环境参数:
–global 全局配置,写到~/.gitconfig中,即用户路径C:\Users\li.liu下的.gitconfig文件。
–local 工作目录配置,即所在仓库的配置,写到当前仓库下的.git/config文件中。
–system 写到$(prefix)/etc/gitconfig文件中,即git安装路径下的etc/gitconfig中。
eg:
git config --global user.name "用户名"
git config --global user.email "邮箱"
1.2 查看所有配置
git config --list
1.3 查看某个环境变量的配置
$ git config user.name
- 创建仓库
新建本地仓库
git init [project-name]
克隆远端仓库
git clone [url]
3.查看状态与提交
查看状态
git status
查看没有暂存的变化
git diff
查看暂存文件与上一版本的区别
git diff --staged
添加变化文件到stage,准备提交
git add [file]
git add的相反操作
git reset [file]
提交
git commit -m [“描述”]
4.分支
查看本地分支
git branch
查看远程分支
git branch -r
切换分支
git checkout [分支名称]
4.1合并分支
git merge [要合并进来的分支名如b1] ,git merge b1 表示,将分支b1合并到当前分支。
5.git stash 搁置和恢复未完成的修改
临时保存所有本地变化
git stash
恢复临时保存的本地变化
git stash pop
查看
git stash list
丢弃
git stash drop
6.git log 查看提交历史
git log
git log --follow [file]
git diff [first-branch]...[second-branch]
git show [commit]
-p 选项用来显示每次提交的内容差异。
git log -p
--stat 选项显示每次提交的简略统计信息
git log --stat
7.git push
$ git push <远程主机名> <本地分支名>:<远程分支名>
只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。当你和其他人在同一时间
克隆,他们先推送到上游然后你再推送到上游,你的推送就会毫无疑问地被拒绝。你必须先将他们的工作拉取下
来并将其合并进你的工作后才能推送。
git push <远程主机名> <本地分支名>:<远程分支名>
分支推送顺序的写法是<来源地>:<目的地>,
所以,git pull是<远程分支>:<本地分支>,
而git push是<本地分支>:<远程分支>。
git push -u origin newBranch:newBranch // 新建远程分支
8.删除分支
删除远程分支。
git push命令如果省略本地分支名,将删除远程分支。如git push origin :remoteb1将删除远程remoteb1这个分支。
$ git push origin :remote1
或者
$ git branch -r -d origin/remote1
删除本地分支
git branch -d 本地分支名
git fetch 更新本地的远程分支。
git rebase 如果远程分支确实有更新,且本地有未提交到服务器的提交,再执行git rebase, 这样本地的提交就会更新到新的base上,再提交到服务器不会因base不同而报错。
repo sync 实际是执行了两个操作,先git fetch,再基于最新base checkout出代码,也就更新了本地分支。
git fetch + git merge = git pull
9.git checkout -b [要新建的本地分支名] [远程主机名如origin]/[远程分支名如remoteb]
git checkout -b [要新建的本地分支名] [远程主机名如origin]/[远程分支名如remoteb]这个命令是新建一个本地分支,并切换过去。这个分支同远程分支remoteb一样。是origin/remoteb的一个跟踪分支。
10.远程仓库版本回退
git push origin old_master:old_master //push到远程
git push origin :master //删除远程分支
$ git push origin master:master //重新创建远程分支
在删除远程master分支时,可能会有问题,处理方式为:
$ git receive.denyDeleteCurrent warn
慎用删除远程仓库方法😀 这2种方式,都挺危险的,需要谨慎操作……
11.git rebase
很好的一种避免合并(git merge)代码时出现冲突的方法,即合并(git merge)之前,执行git rebase命令。
如:要把b1 合并到b2上:
首先切换到b1,执行 git rebase b2 //把b1发生过的commit衍合过来,
然后切换到b2,执行 git merge b1 //把b1合并到b2。
12.git cherry-pick
git cherry-pick用于把另一个本地分支的commit修改应用到当前分支。
如 git cherry-pick commit-ID1 commit-ID2 commit-ID3
1 命令读的是本地commit。
2 pick过来后,生成新的commit-ID
3 如果拿过来的commit本身是一个merge commit,则可能会用到-m参数,参数值为数字1或2,如
git cherry-pick commit-ID -m 2
13.添加远程仓库
先在github.com上新建一个仓库superalloy(远程库)。
将本地仓库与远程库关联:
$ git remote add origin git@github.com:leonliu06/superalloy.git (SSH)
or
$ git remote add origin https://github.com/leonliu06/MyServlet.git (HTTP)
关联后,使用命令:
git push -u origin master 第一次推送master分支的所有内容。
14.修改最后一次commit的注释
一:最新的一次提交
当你不小心,写错了提交的注视/信息,该如何处理呢。理论上,SCM是不应该修改历史的信息的,提交的注释也是。
不过在Git中,其commit提供了一个–amend参数,可以修改最后一次提交的信息.但是如果你已经push过了,那么其历史最后一次,永远也不能修改了。
我使用git commit –amend已经push过的
$ git commit --amend
然后在出来的编辑界面,直接编辑注释的信息,保存退出。
二:历史提交
git使用amend选项提供了最后一次commit的反悔。但是对于历史提交呢,就必须使用rebase了。
git rebase -i HEAD~3
表示要修改当前版本的倒数第三次状态。
这个命令出来之后,会出来三行东东:
pick:*******
pick:*******
pick:*******
如果你要修改哪个,就把那行的pick改成edit,然后保存退出。
这时通过git log你可以发现,git的最后一次提交已经变成你选的那个了,这时再使用:
git commit --amend
来对commit进行修改。
修改完了之后,要回来对不对?
使用git rebase –continue
OK,一切都搞定了。
网友评论