赞
踩
配置:
- $ git config --global user.name "xxxxxx"
-
- $ git config --global user.email "xxxxx@exmple.com"
别名:
- $ git config --global alias.st status
- $ git config --global alias.co checkout
- $ git config --global alias.ci commit
- $ git config --global alias.br branch
以后提交就可以简写成:
$ git st
$ git ci -m "xxxxxx"
生成SSH pubkey:
$ ssh-keygen -t rsa -C "abc@qq.com"
1、第一类,工作区修改(增加/删除)了受控的文件,想要退回到之前的操作,工作区回到修改之前的状态,暂存区和库区不受影响。(此操作比较危险,会清除工作区未添加到暂存区的改动)
$git checkout -- filename 回退某个指定的文件
$git checkout -- . 回退当前目录所有修改
$git checkout -f 回退当前本地分支下所有修改
2、第二类,工作区修改(增加/删除)了受控文件,并执行了git add操作,想要取消add动作,暂存区回到add之前的状态,工作区和库区不受影响。
$git reset HEAD filename 回退某个指定的文件
$git reset HEAD . 回退所有修改
#第二类补充,工作区修改(增加/删除)了受控文件,并执行了git add操作,想要取消add动作,暂存区回到add之前的状态,并抛弃工作区的修改。(此操作及其危险,会清除工作区和暂存区未提交的改动)
$git checkout HEAD filename 回退并删除某个文件的修改
$git checkout HEAD . 回退所有修改
3、第三类,工作区修改(增加/删除)了受控文件,并执行了git add和git commit操作,想要取消commit操作重新commit一次,库区回到commit之前的状态,工作区和暂存区不受影响。
$git reset --soft HEAD^
4、第四类,工作区修改(增加/删除)了受控文件,并执行了git add和git commit操作,想要取消add和commit操作,保留工作区的修改,暂存区和库区回到之前的状态。
$git reset --mixed HEAD^
5、第五类,工作区修改(增加/删除)了受控文件,并执行了git add和git commit操作,想要取消add和commit操作,抛弃工作区的修改。
$git reset --hard HEAD^
#如果发现第五类操作有误,想要回到之前状态
$git reflog
c2ee736 HEAD@{0}: reset: moving to HEAD^
$git reset --hard HEAD@{0}
6、第六类,工作区修改(增加/删除)了受控文件,并执行了git add和git commit和git push操作,想要回退远程库的此次合入。
$git log 找到此次提交的commit-ID,40位哈希值
commit c2ee73610026a64545bf06d77ecd355970f09016
Author: e <xxxxxx@xxxxxxx.com>
Date: Fri Jul 27 14:02:23 2018 +0800
XXXXXXXXXXXXXXXX
$git revert -n commit-ID
$git commit -m "update"
$git push origin master
$git stash 使当前分支下所有改动备份到git库,从而可以切换到其他分支
$git stash list 查看git库备份的列表
$git stash pop 取出备份列表顶部数据恢复当前分支
1、结合Gerrit进行代码review时,冲突解决
#当两个人同时修改并提交了某个文件A到gerrit上,优先review并merge其中一个人的提交,势必造成另个人的gerrit提交显示merge conflict。为了避免abandon然后重新提交的麻烦操作,可进行如下操作快速修改合并:
$:git fetch origin
$git rebase origin/master
#然后查看冲突文件,并手动修改
$git add file.txt
$git rebase --continue
$git push origin/master:refs/for/master
2、rebase的使用场景
场景一:如果代码commit到本地库了,但是commit之前忘记pull了,远程代码也已更新,此时不能使用pull直接拉取远程代码(分支会产生merge的记录):
解决方法:commit之后,使用git fetch,拉取远程代码到暂存区,然后使用git rebase origin/master,此时会产生冲突,解决冲突后即可提交,这样分支不会产生merge的记录
场景二:commit提交之前先使用pull总是没问题的,但如果pull不下来,是因为代码和远程代码冲突了,此时有两种解决办法:
1.使用git stash 保存本地修改的代码到缓存区,此时代码会还原为没修改之前的,此时在使用git pull拉取代码,然后使用git stash pop恢复缓存区的代码,此时解决冲突即可提交
2.先commit提交本地代码到本地库,这时候不要直接pull(分支会产生merge的记录),先使用git fetch,拉取远程代码到缓存区,然后使用git rebase origin/master,此时会产生冲突,解决冲突后即可提交,这样分支不会产生merge的记录
git pull = git fetch + git merge
git pull –rebase = git fetch + git rebase
git pull –rebase 理解
这个命令做了以下内容:
a.把你 commit 到本地仓库的内容,取出来放到暂存区(stash)(这时你的工作区是干净的)
b.然后从远端拉取代码到本地,由于工作区是干净的,所以不会有冲突
c.从暂存区把你之前提交的内容取出来,跟拉下来的代码合并
所以 rebase 在拉代码前要确保你本地工作区是干净的,如果你本地修改的内容没完全 commit 或者 stash,就会 rebase 失败。
git add 的几种参数区别:
git add -A 保存所有的修改
git add . 保存新的添加和修改,但是不包括删除
git add -u 保存修改和删除,但是不包括新建文件。
如果只想提交某个文件,可以使用git add 路径/文件名 或者 git add 路径/
1)在github上创建仓库new repository
省略创建过程
2)在github上找到个人头像--Settings--SSH and GPG keys,选择new SSH key ,添加一个title,在电脑找到C:\Users\用户\.ssh文件夹,复制id_rsa.pub中的内容粘贴到key栏下。
3)在本地项目根目录下初始化本地仓库,执行:
$git init
4)将本地仓库与远程仓库建立关联
$git remote add origin git@github.com:xxxx/xxxxxxxx.git
其中 origin代表远程库,如果关联了多个远程库,需要分别取名,git@github.com:xxxx/xxxxxxxx.git为远程库地址
5)一次使用如下命令,提交本地文件
$git add -A
$git commit -m "add file to github"
6)远程仓库与本地库同步
$git pull origin master
7)把本地库内容推送到远程库
$git push origin master
push
把本地分支推送到远程主机的分支??
git push origin local:remote
可以省略远程分支名
git push origin local 将本地分支推送到与之存在追踪关系的分支(通常就是同名分支)
在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,
当前分支与远程分支存在追踪关系
git push origin
当前分支只有一个追踪分支
git push
PULL命令
把远程分支取回本地并合并指定分支??
git pull origin 远程分支:本地分支
把远程分支取回本地并合并到当前分支??
git pull origin 远程分支
把远程和当前分支存在追踪关系的分支和当前分支进行合并
git pull
PUSH命令
把本地分支推送到远程主机的分支??
git push origin local:remote
可以省略远程分支名
git push origin local 将本地分支推送到与之存在追踪关系的分支(通常就是同名分支)
在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,
当前分支与远程分支存在追踪关系
git push origin
当前分支只有一个追踪分支
git push
origin是什么意思??
git会自动把远程仓库的名字命为origin,使用git remote -v 可以看到origin指的地址是什么。
HEAD是什么??
可以看做是一个指针,始终指向当前分支,当前分支对应着最新一次提交的commit hash。
push如何添加topic??
topic是一个把一组changes归集到某个分类里的方法。比如有一个很大的feature需要由若干个人一起来完成。每个人都在自己的change里面工作。那么就可以把这一组changes全部都通过一个topic归集到一起。通过git push的方式添加带有某个topic的change的方法是在push的reference后面加上%topic=topicname参数
git push HEAD:/refs/for/master%topic=topicname
1. git add XX 将修改进行添加 添加到缓冲区
2. git commit -m "XX" 将存在缓存区中的修改进行提交 提交到git版本仓库
3. git status 查看状态
4. git log 查看操作历史记录信息
5. git diff 查看不同的地方
6. git checkout -- XX 撤销XX文件在工作区的修改
7. git reset HEAD XX 把暂存区的修改撤销掉(unstage),重新放回工作区
8. git reset --hard HEAD^ 把已经提交的版本进行回退到上一个版本
9. git rm XX 从版本库中删除一个文件
10 git checkout -- XX 同上面的第六条一样,可以对工作区中的删除进行恢复
11. git remote add origin git@server-name:path/repo-name.git(server-name:path是服务器的名字和远程账号,可以是GitHub)
12. git push -u YY 把本地仓库push到远程仓库(YY 表示远程仓库的名字)
13. git checkout -b dev 创建一个dev的分支 -b参数表示创建这个分支
14. git branch dev 查看dev分支
15. git checkout ZZ 切换到ZZ分支上
16. git merge dev merge指令把指定分支的合并到当前分支
17. git branch -d dev -d 参数将一个分支删除掉
18. git merge --no-ff -m "merge with no-ff" dev 加上--no-ff可以保留合并的信息,看出曾经合并过
19. git stash 可以存储当前的状态
20. git stash list 查看保存的信息
21. git stash pop 恢复之前保存的分支 ,先checkout 回之前保存得分支。
22. git remote 查看远程库
23. git remote -v 查看更详细的信息
23. git push origin dev 推送到远程,把当前得分支推送上去。可以选择要推送的分支名字
24. git checkout -b dev origin/dev 将远程分支创建到本地
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。