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这个分支的任务已经圆满完成。

提交日志撰写可能遇到的问题:

  1. 按多次Esc,禁止窗口输入
  2. 输入a (窗口进入编辑模式,编写你的提交Title,回车,空格点击4下,输入提交Content)
  3. 再次按多次Esc,禁止窗口输入
  4. 点击键盘里面的冒号,输入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

results matching ""

    No results matching ""