windows
具体安装过程中的解释:Windows系统Git安装教程(详解Git安装过程)
linux:
apt-get install git
运行Git Bash,语法是linux的终端,ls
、mkdir
之类的。
比如Gitee
码云,你会有两个关键的信息要填写,一个是你的账号名字,一个是你的邮箱。这两个和你使用git
来链接到gitee
等之上有关。
$ git config --global user.name '注册的用户名';
$ git config --global user.email '注册时候的邮箱';
$ git config --list
user.name=Scott Chacon
user.email=[email protected]
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...
$ git config user.name
Scott Chacon
git只是个提交工具,将本地仓库的代码提交到远程仓库中。所以你得先在网站上创建一个远程仓库,这让git知道提交到哪里。
mkdir XXX
cd XXX
这就是本地仓库,本地仓库就是个文件夹,将git要提交/下载下来的东西放到这里去。
怎么让这个普通的文件夹,变成git的仓库呢?
用这个命令生成一个.git
配置来允许git来管理它,所有 Git 需要的数据和资源都存放在这个目录中。
$ git init
工作区文件就是就是工作目录(.git
的父级目录)下除了.git
的文件。
比如,我在文件夹下创建了个click.py
或者将别的地方的click.py
移动到这里。
$ git status
这条命令显示还没有提交到缓存区的工作区的文件,用来查看是否还有文件未提交。
$ git add 'click3.py'
注:使用git add -A
或git add .
(.
是说本目录下的全部文件)可以提交当前仓库的所有改动。
对应git rm --cached xxx
取消放入暂存区。
将缓存区里的文件都commit到本地仓库.git
中。
PS:为什么要提交?这个文件夹里不是有吗?
本地仓库又名版本库,提交是让Git来管理的意思,在.git
的里面的信息变动。提交后的文件被Git管理起来,对文件的修改、删除,Git都能跟踪,可以比较不同、可以还原。
$ git commit -m "备注信息"
如果只是简单地从工作目录中手工删除rm xxx
文件,运行 git status
时就会在 Changes not staged for commit
的提示。因为你没有告诉git你的变动,git本地仓库中还保留着该文件。
git rm xxx
git rm -f xxx
PS:如果git本地仓库中有,也提交到暂存区的。那么删除后,暂存区中的和本地仓库中的都没得。
git rm --cached xxx
对应的,用git add xxx
再添加到暂存区
rm xxx
Git 分支管理
git branch 分支名字
创建分支的效果相当于虚拟机的快照。
PS:注意是对当前的 commit到本地仓库中的 的文件进行镜像。
git checkout 分支名字
当你切换到某分支时,工作目录下的文件就是那个分支 commit到本地仓库中的 的文件。
git checkout -b 分支名字
git branch
在路径后面的就是表示当前分支。
git branch
列出的分支前带*
号的表示当前分支。
git branch -d 分支名字(同当前分支一样,即merge过的)
git branch -D 分支名字(同当前分支不一样,强制删除)
git merge 分支名字
将某分支 合并到当前分支 中去。
融合效果:以某分支为主,而不是当前分支!
使用git diff
查看冲突之处。会用-
、+
和红绿颜色标识。
ssh-keygen -t rsa -C 'your email'
接着按3个回车就行
可以看到公钥id_rsa
(私有秘钥)和id_rsa.pub
(公有密钥)。
标题随便起,只是用于区分而已,如同图片中的Foast
。
将复制的公钥内容粘贴在公钥中,确定就ok。
git remote add 给远程仓库的命名 远程仓库的地址
给远程仓库的命名不要重复。因为可能需要本地仓库会推送到多个远程仓库。
e.g.上传到多个远程仓库的例子:Alpha和Beta就是别名不要重复的意思,要不然push不知道push到哪个远程仓库。
$ git remote add Alpha your_first_git_address # 将第一个git address命名为Alpha
$ git push -u Alpha master
$ git remote add Beta your_second_git_address # 将第二个git address命名为Beta
$ git push -u Beta master
# -v表示显示详细参数
git remote [-v]
e.g.
$ git remote
origin
$ git remote -v
origin [email protected]:tianqixin/runoob-git-test.git (fetch)
origin [email protected]:tianqixin/runoob-git-test.git (push)
git remote rm 远程仓库别名
git push 给远程仓库的命名 分支
将本地的分支
推送到远程仓库
。
git push 给远程仓库的命名
将当前分支
推送到远程仓库
。
git push -u 给远程仓库的命名 分支
将本地的分支
推送到远程仓库
,同时指定远程仓库
为默认的远程仓库
,后面就可以不加任何参数使用git push
了。
git push
只有当默认指定远程仓库
后,才能使用!
通过HTTPS协议克隆
git clone https://gitee.com/xxx.git
通过SSH协议克隆
git clone [email protected]:xxx.git
例:不用特地创建一个文件夹了,clone下来默认直接以远程仓库名为名创建一个文件夹。
git fetch 远程仓库别名 远程仓库的远程分支
结果是在本地仓库创建一个本地分支远程仓库别名/远程仓库的远程分支
中。但并不会在git branch
中显示。
e.g.
$ git fetch origin master
* branch master -> FETCH_HEAD
d48f66c..ee96b01 master -> origin/master
# 但并不会在`git branch`中显示。
$ git branch
* master
git merge 远程仓库别名/远程仓库的远程分支
合并名为远程仓库别名/远程仓库的远程分支
的分支到当前所在分支。
e.g.
$ git merge origin/master
Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!