Bitbucket在PyCharm上提供Git服务(https方式)
Bitbucket创建Project、Repository参考让Bitbucket在PyCharm上提供Git服务(SSH Key方式)
笔者使用未在Bitbucket.org配置SSH Key的一台电脑来实操这个过程。
获取https clone地址
bitbucket.org中打开需同步的Repository,点击clone(克隆)获取https的地址。
类似:git clone https://<用户名>@bitbucket.org/<用户名>/<仓库名>.git
在工作区的上级目录,右键Git Bash Here
打开终端:
cary@carysLaptop MINGW64 /e/Python
$ git clone https://carysunqd@bitbucket.org/carysunqd/pyc_study.git
Cloning into 'pyc_study'...
remote: Counting objects: 20, done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 20 (delta 2), reused 0 (delta 0)
Unpacking objects: 100% (20/20), done.
cary@carysLaptop MINGW64 /e/Python
$ ll pyc_study/
total 5
-rw-r--r-- 1 cary 197121 540 4ÔÂ 17 17:46 main.py
-rw-r--r-- 1 cary 197121 853 4ÔÂ 17 17:46 README.md
cary@carysLaptop MINGW64 /e/Python
$ ll -a pyc_study/
total 17
drwxr-xr-x 1 cary 197121 0 4ÔÂ 17 17:46 ./
drwxr-xr-x 1 cary 197121 0 4ÔÂ 17 17:45 ../
drwxr-xr-x 1 cary 197121 0 4ÔÂ 17 17:46 .git/
drwxr-xr-x 1 cary 197121 0 4ÔÂ 17 17:46 .idea/
-rw-r--r-- 1 cary 197121 540 4ÔÂ 17 17:46 main.py
-rw-r--r-- 1 cary 197121 853 4ÔÂ 17 17:46 README.md
cary@carysLaptop MINGW64 /e/Python
妈呀!没有使用用户名、口令,居然也clone到了项目。后面经过探索和思考,还是不明其中原因,欢迎阅读到本文的大侠出手相助!。
PyCharm中打开clone到的项目(工作区文件夹)
在PyCharm中使用git可以选择记住口令。
本地commit,Fix and Commit
选择【Fix and Commit】
-
不同操作系统下,处理行尾结束符的方法是不同的:
-
windows下:CRLF(表示句尾使用回车换行两个字符,即windows下的"\r\n"换行)
-
unix下:LF(表示句尾,只使用换行)
-
mac下:CR(表示只使用回车)
-
-
Git下处理“换行”(line ending)
core.autocrlf是git中负责处理line ending的变量,可以设置3个值:true,false,inout。-
设置为true【config --global core.autocrlf true】
当设置成true时,这意味着你在任何时候添加(add)文件到git仓库时,git都会视为它是一个文本文件(text file)。
它将把crlf变成LF。
-
设置为false【config --global core.autocrlf false】
当设置成false时,line endings将不做转换操作。文本文件保持原来的样子。
-
设置为input时,添加文件git仓库时,git把crlf编程lf。当有人Check代码时还是lf方式。因此在window操作系统下,不要使用这个设置。
-
Push(Ctrl+Shift+K)
Bitbucket.org查看变化,ok!
没使用用户名、口令即clone Repository原因探索
上面遇到一个问题,没有使用用户名、口令也clone到了项目。
似乎应验了git学习4-远程仓库中摘抄的廖老师的忠告:
“友情提示:在GitHub / Bitbucket上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。”
似乎即便是Private的Repository也是可以被任何人获取的,即便没有Atlassian账户。
笔者使用git config --get user.name
和git config --get user.email
查看本机git用户名、邮箱,发现并非Bitbucket的用户信息,而是其他平台的。检查使用的clone地址是https的,应该是没走ssh。
这是否说明即便Project、Repository被设置为 Private,无需身份验证,所有人都是可以通过clone获取到Repository的呢?当然前提是获取者取得https的git Repository地址。
果真如此吗?经验证似乎也不是这样。
由Bitbucket网站进入验证
- 从https://bitbucket.org/carysunqd/pyc_study/src/master/README.md地址访问我的private项目,要求使用Atlassian账户登录,但即便非所有者账号成功登录,也无法在浏览器中看到所有者的Private项目源码。如下:
换电脑,使用git clone验证
-
先安装git
-
clone提示2次口令录入,第一次录入正确,第二次录入错误,提示错误,如下。
-
再次clone,第一次录入口令错误,第二次录入正确,正常获取到repository,如下。
dayong@samsung-dayong MINGW64 /f/fromGit/bitbucket
$ git clone https://carysunqd@bitbucket.org/carysunqd/pyc_study.git
Cloning into 'pyc_study'...
fatal: 发送请求时出错。
fatal: 请求被中止: 未能创建 SSL/TLS 安全通道。
remote: Invalid username or password
fatal: Authentication failed for 'https://bitbucket.org/carysunqd/pyc_study.git/'
dayong@samsung-dayong MINGW64 /f/fromGit/bitbucket
$ git clone https://carysunqd@bitbucket.org/carysunqd/pyc_study.git
Cloning into 'pyc_study'...
fatal: 发送请求时出错。
fatal: 请求被中止: 未能创建 SSL/TLS 安全通道。
remote: Counting objects: 29, done.
remote: Compressing objects: 100% (25/25), done.
remote: Total 29 (delta 6), reused 0 (delta 0)
Unpacking objects: 100% (29/29), 7.12 KiB | 22.00 KiB/s, done.
dayong@samsung-dayong MINGW64 /f/fromGit/bitbucket
$
clone时初次要求口令:
clone时第二次要求口令: