windows版本
下载地址https://git-scm.com/downloads
安装很简单,双击安装包一步一步安装;
安装完之后有Git Bash是一个命令行工具,照搬了许多Bash命令,习惯linux的人用起来会感觉比Windows命令提示符更好用。
gitHubgithun是为开发者提供Git仓库的托管服务以及其他一些功能,比如Organization,Issue,Wiki, Pull Request等。
创建账号
设置ssh key
GitHub上连接已有的仓库时的认证,是通过使用SSH的公开密钥认证方式进行的。
我们需要创建公开密钥认证所需的SSH key,并将其添加至github。
创建SSH key:
ssh-keygen -t rsa -C “your_email@example.com”
your_email@example.com和创建账号时输的一样。
生成了id_rsa私有密钥文件和id_rsa.pub公有密钥文件。
配置私有密钥
添加密钥到ssh-agent
- 启动ssh-agent eval `ssh-agent -s`
- 将密钥添加到ssh-agentssh-add ~/.ssh/id_rsa
如果验证连接ssh -T git@your-git-server-domain时,提示“ssh: Could not resolve hostname github.com:bruce-kop/study_examples.git: Name or service not known”
看下ping github.com,如果不通,查下 github.com的ip 140.82.113.4,C:\Windows\System32\drivers\etc 目录下的 hosts 文件,增加一行140.82.113.4 github.com
这样ping github.com就通了。
添加公开密钥:
在下图中new SSH key
这样配置完之后就不需要每次push/pull/clone都要输入密码了。
验证连接:
ssh -T git@your-git-server-domain
GIT的使用基本操作初始化仓库 git init- 首先建立一个项目目录
- 然后切换到该目录
- 使用git init命令初始化仓库
初始化成功,该目录下会生成一个.git的目录。这个目录里面存放这管理当前目录内容所需的仓库数据。
在Git中,我们将这个目录的内容称为“附属于该仓库的工作树”。
windows下:
git status命令用于显示仓库的状态。
On branch main表示当前是主干分支。
No commits yet表示该仓库还没有提交过文件。
其中红色的部分是Untracked files,表示是没有add到暂存区的文件。
需要使用git add命令添加到暂存中,然后调用commit命令提交到仓库。
向暂存区中添加文件git add要想让文件称为Git仓库的管理对象,就需要使用git add命令将其加入暂存区中。暂存区是提交之前的一个临时区域。
例如:
执行git add test.py命令之后,test.py就称为的待提交的文件了,就不再是Untracked file了。
你也可以使用git add .命令将目录下的所有文件全部添加进暂存区。
然后就可以执行提交的命令了。
保存仓库的历史记录git commit正真提交文件到仓库。
状态查看显示已经全部提交了。目录下没有更新的文件了。
git commit -m "First commit"
其中-m参数后的"First commit"是提交日志信息,是对提交内容的一个概述。
这个是很简介的,如果向提交更加详细的信息,那么不需要加-m。直接执行 git commit命令。执行后编辑器就会启动,如下,你可以编辑更详细的信息,
你的信息可以接着井号之后的那行开始,#表示注释,那些不需要删除。
如果启动编译器之后你想中止提交,请将提交信息留空并直接关闭编辑器,随后提交会被中止。
查看提交后的状态。git status
如果只想显示日志的第一行,那么用git log --pretty=short
如果只想显示某个目录或文件的提交日志,可以在log后加目录或文件名。
如果想查看提交的改动,使用git log -p re_examples/test21.py
退出git log命令,只需要在英文输入法下按键盘上的“q”键即可。
查看更改前后git diff的差别查看暂存区和当前工作树的差别。
如果没有差别,那么什么也没有显示
如果要查看暂存区与最新提交的差别,用git diff HEAD.
分支很重要,有了多个分支,你就i可以多个版本并行开发,各自开发完之后在合并到主干。
git checkout -b 分支名称
创建完之后当前就已经在pythonExampleBranch分支下工作了。
或者执行两条命令:
git branch 分支名称
git checkout 分支名称
切换会main git checkout main
git checkout - 用-代替分支名表示切换到上一个分支。
分支合并 git merge如果pythonExampleBranch分支已经实现完毕。
将当前工作分支切换到main。然后执行git merge --no-ff pythonExampleBranch。
然后编辑器会启动,用于录入合并提交的信息,默认信息中已经包含pythonExampleBranch的提交信息,所以不需要更改,保存之后就合并了。
以图表形式查看分支git log --graph
git reset --hard 433b809e9da9262036a4374f8cb3e86e4a2ded02
433b809e9da9262036a4374f8cb3e86e4a2ded02是commit的哈希值。
合并之后可能会有冲突,那么先解决了然后执行add和commit
修改提交的信息 git commit --amend如果之前你的提交信息不恰当,想要修改下,就可以使用这个命令。
压缩历史 git rebase -igit commit -am如果只是一个小改动,可以不需要先add再commit,执行执行下面的命令。
git commit -am “呵呵” 两步合成一步。
更改历史git rebase -i HEAD~2选定当前分支中包含HEAD在内的两个最新历史记录为对象,并在编辑器中打开。
将两个提交内容合并成一个内容。
推送到远程分支首先注册GitHub账号,创建一个远程仓库添加远程仓库git remote addgit remote add origin git@github.com:bruce-kop/study_examples.git
origin 是远程仓库的标签。
推送分支到远程仓库git push -u
-u参数可以在推送的同时,将origin 仓库的master分支设置为本地仓库当前分支的upstream(上游)。之后的pull操作就省掉一些参数。
这里需要输入github的认证密码,密钥没有配置好,需要输入GitHub的登陆密码。
已经上传了。
如果要提交别的分支到仓库,只需要切换下当前分支,然后执行push。
切换到另一个目录,然后将gitHub上的仓库clone到本地。
默认在main分支下。
git branch -a查看当前分支相关信息
-a可以同时显示本地仓库和远程仓库的分支信息。
我们试着将pythonExampleBranch分支获取至本地仓库。