git就是一个工具而已,没必要花大把时间学习,把常用的记牢就行了。例如我到现在都用不明白rebase命令,也没必要强求。
Git的各个区域:
1、安装完git后首先要配置身份,命令如下:
git config --global user.name Tony
git config --global user.email Tony@gmail.com
配置完后,输入git config --global user.name
进行验证就行。
这里踩了一次坑,在配置公司gitlab的时候,用户名和密码在webConsole中反复验证都没有错误,但是每次ssh中clone的时候都会提示密码错误,最后,不使用引号直接输入name和email就行了。
多个用户配置:
如果说一台电脑既需要连接公司的gitlab,又需要连接自己的github该怎么办呢?首先,前面那个全局的user.name和user.email是默认生效的,也就是在本地建任何git仓库,默认使用的都是那个账户。假如已经设置了global的账户为gitlab账户,现在新建一个文件夹,git init
建立一个仓库后,想要clone一个github上的项目,那就需要在这个仓库下配置github的账户,git config user.name tonygithub@gmail.com
,注意这里没有使用–global属性,所以这个user.name的作用域是在该仓库下。之后将连接gitlab时生成的sshKey(ssh-keygen -C "xxx@email.com"
),添加到github上就可以了。
2、创建代码仓库(Repository):
进入相应项目的目录下,输入
git init
即可完成创建代码库的操作,这时项目目录内会生成一个.git隐藏文件记录所有的git操作。
3、提交本地代码:
git add指令是将想提交的代码添加进去,而commit指令是真正去执行提交操作,例如:
git add AndroidManifest.xml//添加AndroidManifest文件
git add .//添加所有文件
git commit -m "First commit."//提交已添加的文件
4、忽略不想提交的代码:
在执行git init
指令后,项目文件下会生成一个.gitignore文件,可以在其中添加想要忽略的文件
5、创建分支:
git branch version1.0
创建分支1.0版本
git branch -a
查看所有分支
git checkout version1.0
切换到分支version1.0
git checkout master;git merge version1.0
切换到master后与version1.0合并(可能会有代码冲突,需要手动解决)
git checkout <commit id>
切换到指定的某次提交,使用这种方式的时候,HEAD会处于detached状态,这会开启一个匿名分支,解决方式参考:Git HEAD detached from XXX (git HEAD 游离) 解决办法
git branch -d version1.0
删除分支version1.0
6、与远程版本库协作:
git clone https://github.com/example/test.git
将远程代码克隆到本地
git push origin master
将本地代码同步到版本库
git pull origin
更新本地代码,并尝试进行merge
git fetch origin
更新本地代码
7、所有撤销操作:
git revert <commit id>
撤销已经提交上远程仓库改变,它是再提交一次与指定commit相反的commit
git reset HEAD < file>
就可以使file取消add状态
git reset <last good commit id>
或 git reset --hard <last good commit id>
在reset指令加上commit版本号,就f可以重置到指定版本,但是reset如果不加–hard,那么本地文件还是修改过的版本,加上hard后,会撤销本地的修改;如果后面又后悔了,这时使用git log
时,不会显示被回退的那个commit版本号,这时调用git reflog
就可以查看了
8、更改git bash初始目录
创建gitbash的快捷方式,然后右键,属性,有一个起始目录的选项:
参考资料:
- git cheatsheet(以图的形式展示每个指令的操作)
- 如何在 Git 里撤销(几乎)任何操作
- Git版本控制软件结合GitHub从入门到精通常用命令学习手册