Md2All完整教程请参考: https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
玩转Git的准备工作
1,安装git client ,自行百度 2,安装完成后,执行命令
- git config --global user.name "Your Name"
- git config --global user.email "email@example.com"
3,由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:
- 创建SSH Key
ssh-keygen -t rsa -C "13539403267@139.com" cat ~/.ssh/id_rsa.pub (查看你的 public key,并添加SSH key)
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。 如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
- Add SSH Key,在Key文本框里粘贴id_rsa.pub文件的内容
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
最后友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。
如果你不想让别人看到Git库,有两个办法,一个是交点保护费,让GitHub把公开的仓库变成私有的,这样别人就看不见了(不可读更不可写)。另一个办法是自己动手,搭一个Git服务器,因为是你自己的Git服务器,所以别人也是看不见的。这个方法我们后面会讲到的,相当简单,公司内部开发必备。
工作区和暂存区
工作区:就是你在电脑里能看到的目录
版本库(Repository):工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库.
Git的版本库三个重要元素: 1,称为stage(或者叫index)的暂存区 2,Git为我们自动创建的第一个分支master 3,指向master的一个指针叫HEAD
我们把文件往Git版本库里添加的时候,是分两步执行的:
git add把文件添加进去,实际上就是把文件修改添加到暂存区
git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支 当前分支:Git为我们自动创建的第一个分支master
我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。
你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
How To Download Remote Project to local?
在本地新建一个目录,目录名称和远程的Project名称保持一致
进入到你新建的这个目录里面
执行命令 git init
执行完这个命令,本地git版本库初始化成功,那么到底成功与否呢?执行 ls -ah命令,如果目录下生成了.git目录,说明你的初始化是成功的
执行命令 git clone your-git-adress
做完以上操作,那么在本地就会Download下目标工程。
这里面会遇到的问题有哪些?
1,如果我想作废这个目录,怎么办?
rm -rf .git 删除.git文件夹,那么初始化作废,这个文件夹现在和git一毛钱关系没有,净身出户,遇到生疏的git错误提示,我们不知道下一步怎么做的时候,这招好使。
How to Upload Local Project To Remote ?
1,在码云或者github上新建一个项目,项目名称和你想上传的项目名称保持一致 (GradleStudy -> 远程的GradleStudy)
2,下面用命令去演示一遍,加入我D盘有一个项目叫GradleStudy,我想上传到码云的GradleStudy项目里面,命令行如下:
cd D:/GradleStudy
git init
git remote add origin git@gitee.com:zhangbiaoBT/JS.git
git@gitee.com:zhangbiaoBT/JS.git这个地址是在github或则码云上具体的Project里面克隆过来的地址,你懂的
git add .
add . 意思是将工作区里所有的改变提交到暂存区
git commit -m "initial commit"
这个命令的意思是将暂存区里的东西提交到本地的master分支里面,"initial commit"是你本次提交的log
git push origin master
将本地master分支里的内容提交到远程的master分支,这都是一个一一对应的关系(master -> 远程master)
执行完上面的命令,就可以顺利的将本地的项目上传到远程仓库里面,亲测有效,谁试谁知道。
Upload Project可能遇到的问题
有时候当你执行上面的git push origin master不奏效的话,请依次执行下面的命令,反之请您忽略下面的命令,当个屁一样,忽略它!!!
git pull --rebase
git push -u origin master (把本地库的所有内容推送到远程库上,实际上是把当前分支master推送到远程,由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令)
如果这个命令报错,就用 git branch --set-upstream-to=origin/master master 如果可以,再次执行 git pull --rebase
从现在起,只要本地作了提交,就可以通过命令: $ git push origin master 把本地master分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!
一套完整的Git骚操作,睁大眼睛看好
切记:下面命令的前提是本地的master分支已经和远程的master分支对上号了,怎么让它们对上号,请把上面的内容多读几遍,下面的命令是教科书的步骤,不要问为什么,照着做就行,先知而后觉。
git checkout -b dev 本地新建一个分支dev,专门用来做提交,不要直接master网上怼
git status 查看我本地和远程仓库的差异,我有哪些要提交
git add xxxx/xxxxx/sb.java 提交一个文件,提交多个,后面空格依次排队,贴上你要提交的文件路径,例如: git add xxxx/xxxxx/sb.java yyyy/yyyyyy/2b.java,依次类推,全部提交就是git add .
git commit -m "xxxxx" 点击键盘里面的冒号,输入wq,完成提交内容保存推出
git checkout master 切回到master分支
git pull --rebase 拉一下远程的代码
git merge dev --no-ff 合并dev分支到master分支里面,如果跳到另一窗口,按多次Esc,输入冒号,然后输入wq,保存并退出。
如果这个时候,合并的时候发生冲突了,怎么办?如果没有冲突,下面的操作请忽略。发生冲突的话,命令窗口会报错,这个时候你必须手动的在Androidstudio里面去解决这些冲突,然后回到命令的窗口执行命令:
1,git add . 2.git merge --continue
这些完成之后,冲突的问题自然迎刃而解。
git log --no-merges 查看提交日志不包含合并的日志
git push 往远程提交我本地的内容
git branch -d dev 提交完就删掉这个分支吧,因为dev这个分支的任务已经圆满完成。
提交日志撰写可能遇到的问题:
- 按多次Esc,禁止窗口输入
- 输入a (窗口进入编辑模式,编写你的提交Title,回车,空格点击4下,输入提交Content)
- 再次按多次Esc,禁止窗口输入
- 点击键盘里面的冒号,输入wq,完成提交内容保存推出
Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,建两个分支,一个分支stash这些待续的任务,一个分支去改bug,Bug改完了就切换到stash的分支里面去。
git checkout dev
git status 工作区是干净的,刚才的工作现场存到哪去了?用git stash list命令看看:
git stash list Git把stash内容存在某个地方了,但是需要恢复一下,用git stash pop,恢复的同时把stash内容也删了:
git stash pop 再用git stash list查看,就看不到任何stash内容了
小结: 修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除; 当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
常用命令一览表:
ls-al 查看目录下的详情
git ls-remote 查看远程仓库所有的分支
本地从master分支切到远程的develop分支,并建立映射关系
- git fetch git checkout origin/develop -b develop git pull --rebase
建立追踪关系,在现有分支与指定的远程分支之间
git branch --set-upstream-to origin/dev_sync dev_sync
核心的基本就这些了,不过基本够用了,在有些比如版本撤销,回退,删除等操作可以翻阅下面这个链接,东西是死的,活学活用,剩下的一些没讲到的操作自己去查阅吧,给出查阅地址:
http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html
本地ignore文件命名配置了它,但是status里面却还是有记录,你可以这么做
- git checkout -- .idea/misc.xml
git add . =>把工作区的内容提交到暂存区
git commit => 把暂存区的内容提交到本地的master分支
git checkout --
命令别名
git config --global alias.co checkout
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
如何放弃本地修改
未进行add操作
git co --
恢复具体的文件, git co -- . 全部 已经被add进暂存区
git reset HEAD
命令来放弃指定的文件的缓存,如果要放弃所有修改的缓存,可以使用 git reset HEAD . add完之后,还commit了
还好没有push到远程仓库,只是push到本地的master仓库,还可以抢救,可以使用 git reset -- hard HEAD^ 来回退到上一次commit的状态。
另外使用此命令可以回退到任意版本: git reset -- hard commitid这里的commitId就是使用 git log 显示的提交历史中的SHA码,只需要前面7位即可。
删除本地分支
- git branch -d dev
删除远程分支
- git push origin --delete
git push origin develop:develop_sync

//查看某文件的commit 历史记录 git log --follow [file]
//查看当前commit记录下,指定文件的全部内容 git show [commit]:[file]
ls -al
git ls-remote
git config --global user.name "David Zhang"
git config --global user.email "zhangbiao001@chinasofti.com"
创建SSH Key: ssh-keygen -t rsa -C "zhangbiao001@chinasofti.com"
Error : SSL certificate problem: unable to get local issuer certificate
Resolve: git config --global http.sslVerify false
VPN登陆: WingerYPHE YbQaA5CcetAi
Rackspace VPN User Name: david_zhang Password: NL2ApqlFjN5k
const val IDV_USERNAME = "hacnm2g" const val IDV_PASSWORD = "123456"
恢复某个commit的指定文件到暂存区和工作区
$ git checkout [commit] [file]
git checkout 12b54be89e901802d .idea/misc.xml git reset HEAD .idea/misc.xml
git push origin develop:master_sync git push origin develop:develop_sync
git clone https://andyxiao@172.16.48.167/hgit/HACN_Mobile_App_Android
git fetch
git checkout origin/develop -b develop
git pull --rebase
git branch --set-upstream-to origin/develop develop
44122196 9FFB-623f BY662006zb
显示某次提交时,某个文件的内容 $ git show [commit]:[filename]
git log --follow hello.py
git show fc88be917:hello.py
给当前分支命名,保存以备后查: git checkout -b tmp
git checkout develop_pudong
git pull --rebase
git merge tmp
https://www.cnblogs.com/0201zcr/p/5752771.html
git cherry-pick